diff --git a/.dockerignore b/.dockerignore
index 990c8acd468..954624f3c04 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -15,16 +15,10 @@
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
-# Packr2 artifacts
-**/*-packr.go
-
# GraphQL generated output
pkg/models/generated_*.go
ui/v2.5/src/core/generated-*.tsx
-# packr generated files
-*-packr.go
-
####
# Jetbrains
####
@@ -60,4 +54,4 @@ ui/v2.5/build
stash
dist
-docker
\ No newline at end of file
+docker
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index eed579b03ce..194200c852b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -77,11 +77,10 @@ jobs:
# this means that the build version/time may be incorrect if the UI is
# not changed in a pull request
if: ${{ github.event_name != 'pull_request' || steps.cache-ui.outputs.cache-hit != 'true' }}
- run: docker exec -t build /bin/bash -c "make ui-only"
+ run: docker exec -t build /bin/bash -c "make ui"
- name: Compile for all supported platforms
run: |
- docker exec -t build /bin/bash -c "make packr"
docker exec -t build /bin/bash -c "make cross-compile-windows"
docker exec -t build /bin/bash -c "make cross-compile-osx-intel"
docker exec -t build /bin/bash -c "make cross-compile-osx-applesilicon"
diff --git a/.gitignore b/.gitignore
index d6c2eea2c52..8ea22a10bc4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,16 +15,10 @@
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
-# Packr2 artifacts
-**/*-packr.go
-
# GraphQL generated output
pkg/models/generated_*.go
ui/v2.5/src/core/generated-*.tsx
-# packr generated files
-*-packr.go
-
####
# Jetbrains
####
diff --git a/Makefile b/Makefile
index c530747bcb9..ae1c652df3d 100644
--- a/Makefile
+++ b/Makefile
@@ -23,9 +23,8 @@ ifdef OUTPUT
endif
export CGO_ENABLED = 1
-export GO111MODULE = on
-.PHONY: release pre-build install clean
+.PHONY: release pre-build
release: generate ui build-release
@@ -113,12 +112,6 @@ cross-compile-all:
make cross-compile-linux-arm32v7
make cross-compile-pi
-install:
- packr2 install
-
-clean:
- packr2 clean
-
# Regenerates GraphQL files
generate: generate-backend generate-frontend
@@ -175,17 +168,13 @@ generate-test-mocks:
pre-ui:
cd ui/v2.5 && yarn install --frozen-lockfile
-.PHONY: ui-only
-ui-only: pre-build
+.PHONY: ui
+ui: pre-build
$(SET) REACT_APP_DATE="$(BUILD_DATE)" $(SEPARATOR) \
$(SET) REACT_APP_GITHASH=$(GITHASH) $(SEPARATOR) \
$(SET) REACT_APP_STASH_VERSION=$(STASH_VERSION) $(SEPARATOR) \
cd ui/v2.5 && yarn build
-.PHONY: ui
-ui: ui-only
- packr2
-
.PHONY: ui-start
ui-start: pre-build
$(SET) REACT_APP_DATE="$(BUILD_DATE)" $(SEPARATOR) \
@@ -202,13 +191,6 @@ fmt-ui:
ui-validate:
cd ui/v2.5 && yarn run validate
-# just repacks the packr files - use when updating migrations and packed files without
-# rebuilding the UI
-.PHONY: packr
-packr:
- $(SET) GO111MODULE=on
- packr2
-
# runs all of the tests and checks required for a PR to be accepted
.PHONY: validate
validate: ui-validate fmt-check vet lint it
@@ -216,4 +198,4 @@ validate: ui-validate fmt-check vet lint it
# locally builds and tags a 'stash/build' docker image
.PHONY: docker-build
docker-build:
- docker build -t stash/build -f docker/build/x86_64/Dockerfile .
\ No newline at end of file
+ docker build -t stash/build -f docker/build/x86_64/Dockerfile .
diff --git a/README.md b/README.md
index 1685779750f..42aff6c0894 100644
--- a/README.md
+++ b/README.md
@@ -96,9 +96,6 @@ For issues not addressed there, there are a few options.
* [Go](https://golang.org/dl/)
* [Revive](https://github.com/mgechev/revive) - Configurable linter
* Go Install: `go get github.com/mgechev/revive`
-* [Packr2](https://github.com/gobuffalo/packr/) - Static asset bundler
- * Go Install: `go get github.com/gobuffalo/packr/v2/packr2`
- * [Binary Download](https://github.com/gobuffalo/packr/releases)
* [Yarn](https://yarnpkg.com/en/docs/install) - Yarn package manager
* Run `yarn install --frozen-lockfile` in the `stash/ui/v2.5` folder (before running make generate for first time).
@@ -126,9 +123,8 @@ NOTE: The `make` command in Windows will be `mingw32-make` with MingW.
* `make build` - Builds the binary (make sure to build the UI as well... see below)
* `make docker-build` - Locally builds and tags a complete 'stash/build' docker image
* `make pre-ui` - Installs the UI dependencies. Only needs to be run once before building the UI for the first time, or if the dependencies are updated
-* `make fmt-ui` - Formats the UI source code.
-* `make ui` - Builds the frontend and the packr2 files
-* `make packr` - Generate packr2 files (sub-target of `ui`. Use to regenerate packr2 files without rebuilding UI)
+* `make fmt-ui` - Formats the UI source code
+* `make ui` - Builds the frontend
* `make vet` - Run `go vet`
* `make lint` - Run the linter
* `make fmt` - Run `go fmt`
diff --git a/docker/build/x86_64/Dockerfile b/docker/build/x86_64/Dockerfile
index 389a665b336..0452c2b2734 100644
--- a/docker/build/x86_64/Dockerfile
+++ b/docker/build/x86_64/Dockerfile
@@ -14,34 +14,24 @@ COPY ./.git /stash/.git
COPY ./graphql /stash/graphql/
COPY ./ui /stash/ui/
RUN make generate-frontend
-RUN BUILD_DATE=$(date +"%Y-%m-%d %H:%M:%S") make ui-only
+RUN BUILD_DATE=$(date +"%Y-%m-%d %H:%M:%S") make ui
# Build Backend
FROM golang:1.17-alpine as backend
RUN apk add --no-cache xz make alpine-sdk
-## install packr, ffmpeg
-ENV PACKR2_VERSION=2.8.1
-ENV PACKR2_SHA=1cb2a0113550bc7962a8fda31a29877fcbbabd56b46c25e1fffbc225334162e7
-ENV PACKR2_DOWNLOAD_FILE=packr_${PACKR2_VERSION}_linux_amd64.tar.gz
-ENV PACKR2_DOWNLOAD_URL=https://github.com/gobuffalo/packr/releases/download/v${PACKR2_VERSION}/${PACKR2_DOWNLOAD_FILE}
+## install ffmpeg
WORKDIR /
-RUN wget ${PACKR2_DOWNLOAD_URL}; \
- echo "$PACKR2_SHA $PACKR2_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \
- tar -xzf $PACKR2_DOWNLOAD_FILE -C /usr/bin/ packr2; \
- rm $PACKR2_DOWNLOAD_FILE;
RUN wget -O /ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz && \
tar xf /ffmpeg.tar.xz && \
rm ffmpeg.tar.xz && \
mv /ffmpeg*/ /ffmpeg/
WORKDIR /stash
COPY ./go* ./*.go Makefile gqlgen.yml .gqlgenc.yml /stash/
-COPY ./static /stash/static/
COPY ./scripts /stash/scripts/
COPY ./vendor /stash/vendor/
COPY ./pkg /stash/pkg/
COPY --from=frontend /stash /stash/
RUN make generate-backend
-RUN make packr
RUN make build
# Final Runnable Image
diff --git a/docker/compiler/Dockerfile b/docker/compiler/Dockerfile
index 0450dabc581..96fc9f161c2 100644
--- a/docker/compiler/Dockerfile
+++ b/docker/compiler/Dockerfile
@@ -2,11 +2,6 @@ FROM golang:1.17
LABEL maintainer="https://discord.gg/2TsNFKt"
-ENV PACKR2_VERSION=2.8.1
-ENV PACKR2_SHA=1cb2a0113550bc7962a8fda31a29877fcbbabd56b46c25e1fffbc225334162e7
-ENV PACKR2_DOWNLOAD_FILE=packr_${PACKR2_VERSION}_linux_amd64.tar.gz
-ENV PACKR2_DOWNLOAD_URL=https://github.com/gobuffalo/packr/releases/download/v${PACKR2_VERSION}/${PACKR2_DOWNLOAD_FILE}
-
# Install tools
RUN apt-get update && apt-get install -y apt-transport-https
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
@@ -52,14 +47,6 @@ RUN mkdir -p /root/.ssh; \
chmod 0700 /root/.ssh; \
ssh-keyscan github.com > /root/.ssh/known_hosts;
-RUN wget ${PACKR2_DOWNLOAD_URL}; \
- echo "$PACKR2_SHA $PACKR2_DOWNLOAD_FILE" | sha256sum -c - || exit 1; \
- tar -xzf $PACKR2_DOWNLOAD_FILE -C /usr/bin/ packr2; \
- rm $PACKR2_DOWNLOAD_FILE;
-
-CMD ["packr2", "version"]
-
-
# Notes for self:
# Windows:
# GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go build -ldflags "-extldflags '-static'" -tags extended
diff --git a/go.mod b/go.mod
index 933df6bad62..90cba2534c0 100644
--- a/go.mod
+++ b/go.mod
@@ -12,17 +12,14 @@ require (
github.com/disintegration/imaging v1.6.0
github.com/fvbommel/sortorder v1.0.2
github.com/go-chi/chi v4.0.2+incompatible
- github.com/gobuffalo/logger v1.0.4 // indirect
- github.com/gobuffalo/packr/v2 v2.8.1
- github.com/golang-migrate/migrate/v4 v4.3.1
+ github.com/golang-migrate/migrate/v4 v4.15.0-beta.1
github.com/gorilla/securecookie v1.1.1
github.com/gorilla/sessions v1.2.0
github.com/gorilla/websocket v1.4.2
github.com/h2non/filetype v1.0.8
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a
- github.com/jmoiron/sqlx v1.2.0
+ github.com/jmoiron/sqlx v1.3.1
github.com/json-iterator/go v1.1.9
- github.com/karrick/godirwalk v1.16.1 // indirect
github.com/mattn/go-sqlite3 v1.14.6
github.com/natefinch/pie v0.0.0-20170715172608-9a0d72014007
github.com/remeh/sizedwaitgroup v1.0.0
@@ -33,19 +30,19 @@ require (
github.com/spf13/afero v1.2.0 // indirect
github.com/spf13/pflag v1.0.3
github.com/spf13/viper v1.7.0
- github.com/stretchr/testify v1.5.1
+ github.com/stretchr/testify v1.6.1
github.com/tidwall/gjson v1.8.1
github.com/tidwall/pretty v1.2.0 // indirect
github.com/vektah/gqlparser/v2 v2.0.1
github.com/vektra/mockery/v2 v2.2.1
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97
golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb
- golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
+ golang.org/x/net v0.0.0-20210520170846-37e1c6afe023
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b // indirect
- golang.org/x/tools v0.0.0-20200915031644-64986481280e // indirect
+ golang.org/x/tools v0.1.0 // indirect
gopkg.in/sourcemap.v1 v1.0.5 // indirect
- gopkg.in/yaml.v2 v2.3.0
+ gopkg.in/yaml.v2 v2.4.0
)
require (
@@ -55,29 +52,25 @@ require (
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fsnotify/fsnotify v1.4.7 // indirect
- github.com/gobuffalo/packd v1.0.0 // indirect
github.com/gobwas/httphead v0.1.0 // indirect
github.com/gobwas/pool v0.2.1 // indirect
github.com/gobwas/ws v1.1.0-rc.5 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
- github.com/hashicorp/go-multierror v1.0.0 // indirect
+ github.com/hashicorp/go-multierror v1.1.0 // indirect
github.com/hashicorp/golang-lru v0.5.1 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/magiconair/properties v1.8.1 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
- github.com/markbates/errx v1.1.0 // indirect
- github.com/markbates/oncer v1.0.0 // indirect
- github.com/markbates/safe v1.0.1 // indirect
github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.1.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
- github.com/pelletier/go-toml v1.2.0 // indirect
+ github.com/pelletier/go-toml v1.7.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rs/zerolog v1.18.0 // indirect
@@ -86,15 +79,17 @@ require (
github.com/spf13/cast v1.3.0 // indirect
github.com/spf13/cobra v1.0.0 // indirect
github.com/spf13/jwalterweatherman v1.0.0 // indirect
- github.com/stretchr/objx v0.1.1 // indirect
+ github.com/stretchr/objx v0.2.0 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
github.com/tidwall/match v1.0.3 // indirect
github.com/urfave/cli/v2 v2.1.1 // indirect
github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e // indirect
- golang.org/x/mod v0.3.0 // indirect
- golang.org/x/text v0.3.3 // indirect
+ go.uber.org/atomic v1.6.0 // indirect
+ golang.org/x/mod v0.4.1 // indirect
+ golang.org/x/text v0.3.6 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gopkg.in/ini.v1 v1.51.0 // indirect
+ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
)
replace git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999
diff --git a/go.sum b/go.sum
index 8e5faa3781d..32076fd636e 100644
--- a/go.sum
+++ b/go.sum
@@ -1,29 +1,62 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
+cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
+cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
+cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
+cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/spanner v1.18.0/go.mod h1:LvAjUXPeJRGNuGpikMULjhLj/t9cRvdc+fxRoLiugXA=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/99designs/gqlgen v0.12.2 h1:aOdpsiCycFtCnAv8CAI1exnKrIDHMqtMzQoXeTziY4o=
github.com/99designs/gqlgen v0.12.2/go.mod h1:7zdGo6ry9u1YBp/qlb2uxSU5Mt2jQKLcBETQiKk+Bxo=
+github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k=
+github.com/Azure/azure-storage-blob-go v0.13.0/go.mod h1:pA9kNqtjUeQF2zOSu4s//nUdBD+e64lEuc4sVnuOfNs=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
+github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
+github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE=
+github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
+github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
+github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
+github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
+github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
-github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
+github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
+github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/Yamashou/gqlgenc v0.0.0-20200902035953-4dbef3551953 h1:+iPJDL28FxZhEdtJ9qykrMt/oDiOvlzTa0zV06nUcFM=
github.com/Yamashou/gqlgenc v0.0.0-20200902035953-4dbef3551953/go.mod h1:kaTsk10p2hJWwrB2t7vMsk1lXj9KAHaDYRtJQiB+Ick=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
@@ -45,7 +78,8 @@ github.com/antchfx/htmlquery v1.2.3 h1:sP3NFDneHx2stfNXCKbhHFo8XgNjCACnU/4AO5gWz
github.com/antchfx/htmlquery v1.2.3/go.mod h1:B0ABL+F5irhhMWg54ymEZinzMSi0Kt3I2if0BLYa3V0=
github.com/antchfx/xpath v1.1.6 h1:6sVh6hB5T6phw1pFpHRQ+C4bd8sNI+O58flqtg7h0R0=
github.com/antchfx/xpath v1.1.6/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
+github.com/apache/arrow/go/arrow v0.0.0-20200601151325-b2287a20f230/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0=
+github.com/apache/arrow/go/arrow v0.0.0-20210521153258-78c88a9f517b/go.mod h1:R4hW3Ug0s+n4CUsWHKOj00Pu01ZqU4x/hSF5kXUcXKQ=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
@@ -53,14 +87,42 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
+github.com/aws/aws-sdk-go-v2 v1.3.2/go.mod h1:7OaACgj2SX3XGWnrIjGlJM22h6yD6MEWKvm7levnnM8=
+github.com/aws/aws-sdk-go-v2 v1.6.0/go.mod h1:tI4KhsR5VkzlUa2DZAdwx7wCAYGwkZZ1H31PYrBFx1w=
+github.com/aws/aws-sdk-go-v2/config v1.1.5/go.mod h1:P3F1hku7qzC81txjwXnwOM6Ex6ezkU6+/557Teyb64E=
+github.com/aws/aws-sdk-go-v2/config v1.3.0/go.mod h1:lOxzHWDt/k7MMidA/K8DgXL4+ynnZYsDq65Qhs/l3dg=
+github.com/aws/aws-sdk-go-v2/credentials v1.1.5/go.mod h1:Ir1R6tPiR1/2y1hes8yOijFMz54hzSmgcmCDo6F45Qc=
+github.com/aws/aws-sdk-go-v2/credentials v1.2.1/go.mod h1:Rfvim1eZTC9W5s8YJyYYtl1KMk6e8fHv+wMRQGO4Ru0=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.6/go.mod h1:0+fWMitrmIpENiY8/1DyhdYPUCAPvd9UNz9mtCsEoLQ=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.1.1/go.mod h1:GTXAhrxHQOj9N+J5tYVjwt+rpRyy/42qLjlgw9pz1a0=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.1.2/go.mod h1:Azf567f5wBUfUbwpyJJnLM/geFFIzEulGR30L+nQZOE=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.2.1/go.mod h1:2JOqaBP3I6TEm27NLb11UiD9j4HZsJ+EW4N7vCf8WGQ=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.0.0/go.mod h1:g3XMXuxvqSMUjnsXXp/960152w0wFS4CXVYgQaSVOHE=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.4/go.mod h1:BCfU3Uo2fhKcMZFp9zU5QQGQxqWCOYmZ/27Dju3S/do=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.1.0/go.mod h1:zdjOOy0ojUn3iNELo6ycIHSMCp4xUbycSHfb8PnbbyM=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.6/go.mod h1:L0KWr0ASo83PRZu9NaZaDsw3koS6PspKv137DMDZjHo=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.1.1/go.mod h1:2+ehJPkdIdl46VCj67Emz/EH2hpebHZtaLdzqg+sWOI=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.2/go.mod h1:nnutjMLuna0s3GVY/MAkpLX03thyNER06gXvnMAPj5g=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.3.1/go.mod h1:IpjxfORBAFfkMM0VEx5gPPnEy6WV4Hk0F/+zb/SUWyw=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0/go.mod h1:uwA7gs93Qcss43astPUb1eq4RyceNmYWAQjZFDOAMLo=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.8.0/go.mod h1:zHCjYoODbYRLz/iFicYswq1gRoxBnHvpY5h2Vg3/tJ4=
+github.com/aws/aws-sdk-go-v2/service/sso v1.1.5/go.mod h1:bpGz0tidC4y39sZkQSkpO/J0tzWCMXHbw6FZ0j1GkWM=
+github.com/aws/aws-sdk-go-v2/service/sso v1.2.1/go.mod h1:VimPFPltQ/920i1X0Sb0VJBROLIHkDg2MNP10D46OGs=
+github.com/aws/aws-sdk-go-v2/service/sts v1.2.2/go.mod h1:ssRzzJ2RZOVuKj2Vx1YE7ypfil/BIlgmQnCSW4DistU=
+github.com/aws/aws-sdk-go-v2/service/sts v1.4.1/go.mod h1:G9osDWA52WQ38BDcj65VY1cNmcAQXAXTsE8IWH8j81w=
+github.com/aws/smithy-go v1.3.1/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
+github.com/aws/smithy-go v1.4.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k=
+github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4=
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo=
github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo=
+github.com/cenkalti/backoff/v4 v4.0.2/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/chromedp/cdproto v0.0.0-20210526005521-9e51b9051fd0/go.mod h1:At5TxYYdxkbQL0TSefRjhLE3Q0lgvqKKMSFUglJ7i1U=
github.com/chromedp/cdproto v0.0.0-20210622022015-fe1827b46b84 h1:Xxl4imt7LA3SbkrlIH5mm+mbzsv0tpHomLASTPINlvQ=
@@ -69,58 +131,66 @@ github.com/chromedp/chromedp v0.7.3 h1:FvgJICfjvXtDX+miuMUY0NHuY8zQvjS/TcEQEG6Ld
github.com/chromedp/chromedp v0.7.3/go.mod h1:9gC521Yzgrk078Ulv6KIgG7hJ2x9aWrxMBBobTFk30A=
github.com/chromedp/sysutil v1.0.0 h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic=
github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
-github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
+github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM=
+github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
+github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/corona10/goimagehash v1.0.3 h1:NZM518aKLmoNluluhfHGxT3LGOnrojrxhGn63DR/CZA=
github.com/corona10/goimagehash v1.0.3/go.mod h1:VkvE0mLn84L4aF8vCb6mafVajEb6QYMHl2ZJLn0mOGI=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8=
-github.com/cznic/fileutil v0.0.0-20180108211300-6a051e75936f/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg=
-github.com/cznic/golex v0.0.0-20170803123110-4ab7c5e190e4/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc=
-github.com/cznic/internal v0.0.0-20180608152220-f44710a21d00/go.mod h1:olo7eAdKwJdXxb55TKGLiJ6xt1H0/tiiRCWKVLmtjY4=
-github.com/cznic/lldb v1.1.0/go.mod h1:FIZVUmYUVhPwRiPzL8nD/mpFcJ/G7SSXjjXYG4uRI3A=
+github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM=
-github.com/cznic/ql v1.2.0/go.mod h1:FbpzhyZrqr0PVlK6ury+PoW3T0ODUV22OeWIxcaOrSE=
-github.com/cznic/sortutil v0.0.0-20150617083342-4c7342852e65/go.mod h1:q2w6Bg5jeox1B+QkJ6Wp/+Vn0G/bo3f1uY7Fn3vivIQ=
-github.com/cznic/strutil v0.0.0-20171016134553-529a34b1c186/go.mod h1:AHHPPPXTw0h6pVabbcbyGRK1DckRn7r/STdZEeIDzZc=
-github.com/cznic/zappy v0.0.0-20160723133515-2533cb5b45cc/go.mod h1:Y1SNZ4dRUOKXshKUbwUapqNncRrho4mkjQebgEHZLj8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g=
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
-github.com/dhui/dktest v0.3.0/go.mod h1:cyzIUfGsBEbZ6BT7tnXqAShHSXCZhSNmFl70sZ7c1yc=
+github.com/dhui/dktest v0.3.4/go.mod h1:4m4n6lmXlmVfESth7mzdcv8nBI5mOb5UROPqjM02csU=
github.com/disintegration/imaging v1.6.0 h1:nVPXRUUQ36Z7MNf0O77UzgnOb1mkMMor7lmJMJXc/mA=
github.com/disintegration/imaging v1.6.0/go.mod h1:xuIt+sRxDFrHS0drzXUlCJthkJ8k7lkkUojDSR247MQ=
-github.com/docker/distribution v2.7.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v0.7.3-0.20190103212154-2b7e084dc98b/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker v0.7.3-0.20190108045446-77df18c24acf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
+github.com/docker/docker v17.12.0-ce-rc1.0.20210128214336-420b1d36250f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
+github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk=
+github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0uQR+pM/VdlL83bw=
github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo=
github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
@@ -130,20 +200,40 @@ github.com/go-chi/chi v3.3.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxm
github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs=
github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
-github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
+github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
+github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/gobuffalo/logger v1.0.3/go.mod h1:SoeejUwldiS7ZsyCBphOGURmWdwUFXs0J7TCjEhjKxM=
-github.com/gobuffalo/logger v1.0.4 h1:HFJRqL7AmL4QNvQb9Grss9sDz+3u02VBgAoR03A7q4o=
-github.com/gobuffalo/logger v1.0.4/go.mod h1:/GRUdWb+gM3shxj0P5jiV6ecVS3X0aboJvl+hBu0HeE=
-github.com/gobuffalo/packd v1.0.0 h1:6ERZvJHfe24rfFmA9OaoKBdC7+c9sydrytMg8SdFGBM=
-github.com/gobuffalo/packd v1.0.0/go.mod h1:6VTc4htmJRFB7u1m/4LeMTWjFoYrUiBkU9Fdec9hrhI=
-github.com/gobuffalo/packr/v2 v2.8.1 h1:tkQpju6i3EtMXJ9uoF5GT6kB+LMTimDWD8Xvbz6zDVA=
-github.com/gobuffalo/packr/v2 v2.8.1/go.mod h1:c/PLlOuTU+p3SybaJATW3H6lX/iK7xEz5OeMf+NnJpg=
+github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
+github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
+github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
+github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
+github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
+github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
+github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
+github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
+github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
+github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
+github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
+github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
+github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
+github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
+github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
+github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
+github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM=
+github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
+github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
+github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
+github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
+github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
+github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
+github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
+github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
@@ -151,39 +241,89 @@ github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm
github.com/gobwas/ws v1.1.0-rc.5 h1:QOAag7FoBaBYYHRqzqkhhd8fq5RTubvI4v3Ft/gDVVQ=
github.com/gobwas/ws v1.1.0-rc.5/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0=
github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4/go.mod h1:4Fw1eo5iaEhDUs8XyuhSVCVy52Jq3L+/3GJgYkwc+/0=
+github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
-github.com/golang-migrate/migrate/v4 v4.3.1 h1:3eR1NY+pplX+m6yJ1fQf5dFWX3fBgUtZfDiaS/kJVu4=
-github.com/golang-migrate/migrate/v4 v4.3.1/go.mod h1:mJ89KBgbXmM3P49BqOxRL3riNF/ATlg5kMhm17GA0dE=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-migrate/migrate/v4 v4.15.0-beta.1 h1:3iUwrd6V9oIzNc6TQdp4SLYNjQV1DXOK/E7cjaq7zbo=
+github.com/golang-migrate/migrate/v4 v4.15.0-beta.1/go.mod h1:QOmbm9b62AcsxBz7VbwJf+3mqgAyVrdKx7AQ8T9m5og=
+github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
+github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
+github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-github/v35 v35.2.0/go.mod h1:s0515YVTI+IMrDoy9Y4pHt9ShGpzHvHO8rZ7L7acgvs=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@@ -191,9 +331,11 @@ github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
+github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
+github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
+github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ=
@@ -214,8 +356,9 @@ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
+github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=
+github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
@@ -233,15 +376,64 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
-github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
+github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
+github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
+github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
+github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA=
+github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE=
+github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s=
+github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk=
+github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
+github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI=
+github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
+github.com/jackc/pgerrcode v0.0.0-20201024163028-a0d42d470451/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds=
+github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
+github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
+github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
+github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
+github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
+github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
+github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
+github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
+github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgproto3/v2 v2.0.7/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
+github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
+github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
+github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
+github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
+github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
+github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0=
+github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po=
+github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ=
+github.com/jackc/pgtype v1.6.2/go.mod h1:JCULISAZBFGrHaOXIIFiyfzW5VY0GRitRr8NeJsrdig=
+github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
+github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
+github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
+github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA=
+github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o=
+github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg=
+github.com/jackc/pgx/v4 v4.10.1/go.mod h1:QlrWebbs3kqEZPHCTGyxecvzG6tvIsYu+A5b1raylkA=
+github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
+github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o=
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
+github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE=
+github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ=
+github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
@@ -249,48 +441,64 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
+github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
+github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
-github.com/karrick/godirwalk v1.15.8/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
-github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw=
-github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
+github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
+github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
+github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
+github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
+github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE=
-github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
+github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E=
+github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI=
-github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc=
-github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY=
-github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI=
-github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=
+github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
+github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007 h1:reVOUXwnhsYv/8UqjvhrMOu5CNT9UapHFLbQ2JcXsmg=
github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
+github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
+github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
+github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -304,6 +512,7 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v0.0.0-20180203102830-a4e142e9c047/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -312,28 +521,38 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/mongodb/mongo-go-driver v0.3.0/go.mod h1:NK/HWDIIZkaYsnYa0hmtP443T5ELr0KDecmIioVuuyU=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
+github.com/mutecomm/go-sqlcipher/v4 v4.4.0/go.mod h1:PyN04SaWalavxRGH9E8ZftG6Ju7rsPrGmQRjrEaVpiY=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA=
github.com/natefinch/pie v0.0.0-20170715172608-9a0d72014007 h1:Ohgj9L0EYOgXxkDp+bczlMBiulwmqYzQpvQNUdtt3oc=
github.com/natefinch/pie v0.0.0-20170715172608-9a0d72014007/go.mod h1:wKCOWMb6iNlvKiOToY2cNuaovSXvIiv1zDi9QDR7aGQ=
+github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba/go.mod h1:ncO5VaFWh0Nrt+4KT4mOZboaczBZcLuHrG+/sUeP8gI=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
+github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
+github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI=
+github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
+github.com/pierrec/lz4/v4 v4.1.4/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pierrec/lz4/v4 v4.1.7/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
+github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -342,30 +561,30 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E=
github.com/remeh/sizedwaitgroup v1.0.0/go.mod h1:3j2R4OIe/SeS6YDhICBy22RWjJC5eNCJ1V+9+NVNYlo=
+github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac h1:kYPjbEN6YPYWWHI6ky1J813KzIq/8+Wg4TO4xU7A/KU=
github.com/robertkrimen/otto v0.0.0-20200922221731-ef014fd054ac/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
+github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.5.2 h1:qLvObTrvO/XRCqmkKxUlOBc48bI3efyDuAZe25QiF0w=
-github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI=
github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
+github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
+github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
github.com/rs/zerolog v1.18.0 h1:CbAm3kP2Tptby1i9sYy2MGRg0uxIN9cyDb59Ys7W8z8=
github.com/rs/zerolog v1.18.0/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
@@ -379,6 +598,8 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
+github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
+github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk=
github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg=
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
@@ -386,8 +607,10 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
@@ -395,6 +618,7 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
+github.com/snowflakedb/gosnowflake v1.4.3/go.mod h1:1kyg2XEduwti88V11PKRHImhXLK5WpGiayY6lFNYb98=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
@@ -402,7 +626,7 @@ github.com/spf13/afero v1.2.0 h1:O9FblXGxoTc51M+cqr74Bm2Tmt4PvkA5iu/j8HrkNuY=
github.com/spf13/afero v1.2.0/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
+github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
@@ -413,21 +637,24 @@ github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/y
github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM=
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tidwall/gjson v1.8.1 h1:8j5EE9Hrh3l9Od1OIEDAb7IpezNA20UdRngNAj5N0WU=
github.com/tidwall/gjson v1.8.1/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE=
github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
-github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/pretty v1.1.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
@@ -446,31 +673,53 @@ github.com/vektra/mockery/v2 v2.2.1 h1:EYgPvxyYkm/0JKs62qlVc9pO+ljb8biPbDWabk5/P
github.com/vektra/mockery/v2 v2.2.1/go.mod h1:rBZUbbhMbiSX1WlCGsOgAi6xjuJGxB7KKbnoL0XNYW8=
github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/xanzy/go-gitlab v0.15.0/go.mod h1:8zdQa/ri1dfn8eS3Ir1SyfvOKlw7WBJ8DVThkpGiXrs=
-github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
-github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
+github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
+github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
+github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
+go.mongodb.org/mongo-driver v1.7.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
+go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
+go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
+go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
+go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
+go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
+golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191122220453-ac88ee75c92c/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -478,6 +727,11 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -490,14 +744,23 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI=
+golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=
+golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -507,37 +770,73 @@ golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190225153610-fe579d43d832/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190415214537-1da14a5a36f2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
+golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
+golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE=
+golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
+golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -545,41 +844,83 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190102155601-82a175fd1598/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190415145633-3fd5a3612ccd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190426135247-a129542de9ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210521090106-6ca3eb03dfc2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -588,26 +929,67 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200114235610-7ae403b6b589/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200308013534-11ec41452d41/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200323144430-8dcfad9e016e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200827163409-021d7c6f1ec3/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200915031644-64986481280e h1:tfSNPIxC48Azhz4nLSPskz/yE9R6ftFRK8pfgfqWUAc=
-golang.org/x/tools v0.0.0-20200915031644-64986481280e/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
+golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
+golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
+golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
+golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -616,22 +998,39 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
-google.golang.org/api v0.3.2/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
+google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
+google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
+google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
+google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
+google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA=
+google.golang.org/appengine v1.0.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@@ -639,18 +1038,82 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200911024640-645f7a48b24f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
+google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
+google.golang.org/genproto v0.0.0-20210427215850-f767ed18ee4d/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
+google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
@@ -663,14 +1126,52 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
+gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/postgres v1.0.8/go.mod h1:4eOzrI1MUfm6ObJU/UcmbXyiHSs8jSwH95G5P5dxcAg=
+gorm.io/gorm v1.20.12/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
+gorm.io/gorm v1.21.4/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+modernc.org/b v1.0.0/go.mod h1:uZWcZfRj1BpYzfN9JTerzlNUnnPsV9O2ZA8JsRcubNg=
+modernc.org/cc/v3 v3.32.4/go.mod h1:0R6jl1aZlIl2avnYfbfHBS1QB6/f+16mihBObaBC878=
+modernc.org/ccgo/v3 v3.9.2/go.mod h1:gnJpy6NIVqkETT+L5zPsQFj7L2kkhfPMzOghRNv/CFo=
+modernc.org/db v1.0.0/go.mod h1:kYD/cO29L/29RM0hXYl4i3+Q5VojL31kTUVpVJDw0s8=
+modernc.org/file v1.0.0/go.mod h1:uqEokAEn1u6e+J45e54dsEA/pw4o7zLrA2GwyntZzjw=
+modernc.org/fileutil v1.0.0/go.mod h1:JHsWpkrk/CnVV1H/eGlFf85BEpfkrp56ro8nojIq9Q8=
+modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
+modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
+modernc.org/internal v1.0.0/go.mod h1:VUD/+JAkhCpvkUitlEOnhpVxCgsBI90oTzSCRcqQVSM=
+modernc.org/libc v1.7.13-0.20210308123627-12f642a52bb8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w=
+modernc.org/libc v1.9.5/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w=
+modernc.org/lldb v1.0.0/go.mod h1:jcRvJGWfCGodDZz8BPwiKMJxGJngQ/5DrRapkQnLob8=
+modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
+modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
+modernc.org/memory v1.0.4/go.mod h1:nV2OApxradM3/OVbs2/0OsP6nPfakXpi50C7dcoHXlc=
+modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
+modernc.org/ql v1.0.0/go.mod h1:xGVyrLIatPcO2C1JvI/Co8c0sr6y91HKFNy4pt9JXEY=
+modernc.org/sortutil v1.1.0/go.mod h1:ZyL98OQHJgH9IEfN71VsamvJgrtRX9Dj2gX+vH86L1k=
+modernc.org/sqlite v1.10.6/go.mod h1:Z9FEjUtZP4qFEg6/SiADg9XCER7aYy9a/j7Pg9P7CPs=
+modernc.org/strutil v1.1.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs=
+modernc.org/tcl v1.5.2/go.mod h1:pmJYOLgpiys3oI4AeAafkcUfE+TKKilminxNyU/+Zlo=
+modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+modernc.org/z v1.0.1-0.20210308123920-1f282aa71362/go.mod h1:8/SRk5C/HgiQWCgXdfpb+1RvhORdkz5sw72d3jjtyqA=
+modernc.org/z v1.0.1/go.mod h1:8/SRk5C/HgiQWCgXdfpb+1RvhORdkz5sw72d3jjtyqA=
+modernc.org/zappy v1.0.0/go.mod h1:hHe+oGahLVII/aTTyWK/b53VDHMAGCBYYeZ9sn83HC4=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sourcegraph.com/sourcegraph/appdash v0.0.0-20180110180208-2cc67fd64755/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
sourcegraph.com/sourcegraph/appdash-data v0.0.0-20151005221446-73f23eafcf67/go.mod h1:L5q+DGLGOQFpo1snNEkLOJT2d1YTW66rWNzatr3He1k=
diff --git a/main.go b/main.go
index 653438e0179..6d59d808518 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@
package main
import (
+ "embed"
"os"
"os/signal"
"runtime/pprof"
@@ -15,9 +16,15 @@ import (
_ "github.com/golang-migrate/migrate/v4/source/file"
)
+//go:embed ui/v2.5/build
+var uiBox embed.FS
+
+//go:embed ui/login
+var loginUIBox embed.FS
+
func main() {
manager.Initialize()
- api.Start()
+ api.Start(uiBox, loginUIBox)
// stop any profiling at exit
defer pprof.StopCPUProfile()
diff --git a/pkg/api/images.go b/pkg/api/images.go
index e38fb6aeb8d..6f372984850 100644
--- a/pkg/api/images.go
+++ b/pkg/api/images.go
@@ -1,24 +1,36 @@
package api
import (
+ "io/fs"
+ "io/ioutil"
+ "os"
"strings"
- "github.com/gobuffalo/packr/v2"
"github.com/stashapp/stash/pkg/logger"
"github.com/stashapp/stash/pkg/manager/config"
+ "github.com/stashapp/stash/pkg/static"
"github.com/stashapp/stash/pkg/utils"
)
type imageBox struct {
- box *packr.Box
+ box fs.FS
files []string
}
-func newImageBox(box *packr.Box) *imageBox {
- return &imageBox{
- box: box,
- files: box.List(),
+func newImageBox(box fs.FS) (*imageBox, error) {
+ ret := &imageBox{
+ box: box,
}
+
+ err := fs.WalkDir(box, ".", func(path string, d fs.DirEntry, err error) error {
+ if !d.IsDir() {
+ ret.files = append(ret.files, path)
+ }
+
+ return nil
+ })
+
+ return ret, err
}
var performerBox *imageBox
@@ -26,8 +38,15 @@ var performerBoxMale *imageBox
var performerBoxCustom *imageBox
func initialiseImages() {
- performerBox = newImageBox(packr.New("Performer Box", "../../static/performer"))
- performerBoxMale = newImageBox(packr.New("Male Performer Box", "../../static/performer_male"))
+ var err error
+ performerBox, err = newImageBox(&static.Performer)
+ if err != nil {
+ logger.Warnf("error loading performer images: %v", err)
+ }
+ performerBoxMale, err = newImageBox(&static.PerformerMale)
+ if err != nil {
+ logger.Warnf("error loading male performer images: %v", err)
+ }
initialiseCustomImages()
}
@@ -36,7 +55,11 @@ func initialiseCustomImages() {
if customPath != "" {
logger.Debugf("Loading custom performer images from %s", customPath)
// We need to set performerBoxCustom at runtime, as this is a custom path, and store it in a pointer.
- performerBoxCustom = newImageBox(packr.Folder(customPath))
+ var err error
+ performerBoxCustom, err = newImageBox(os.DirFS(customPath))
+ if err != nil {
+ logger.Warnf("error loading custom performer from %s: %v", customPath, err)
+ }
} else {
performerBoxCustom = nil
}
@@ -63,5 +86,11 @@ func getRandomPerformerImageUsingName(name, gender, customPath string) ([]byte,
imageFiles := box.files
index := utils.IntFromString(name) % uint64(len(imageFiles))
- return box.box.Find(imageFiles[index])
+ img, err := box.box.Open(imageFiles[index])
+ if err != nil {
+ return nil, err
+ }
+ defer img.Close()
+
+ return ioutil.ReadAll(img)
}
diff --git a/pkg/api/server.go b/pkg/api/server.go
index 6bb9e47b530..bca332ae6d1 100644
--- a/pkg/api/server.go
+++ b/pkg/api/server.go
@@ -3,8 +3,10 @@ package api
import (
"context"
"crypto/tls"
+ "embed"
"errors"
"fmt"
+ "io/fs"
"io/ioutil"
"net/http"
"net/url"
@@ -21,7 +23,6 @@ import (
gqlPlayground "github.com/99designs/gqlgen/graphql/playground"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
- "github.com/gobuffalo/packr/v2"
"github.com/gorilla/websocket"
"github.com/rs/cors"
"github.com/stashapp/stash/pkg/logger"
@@ -36,11 +37,6 @@ var version string
var buildstamp string
var githash string
-var uiBox *packr.Box
-
-//var legacyUiBox *packr.Box
-var loginUIBox *packr.Box
-
func allowUnauthenticated(r *http.Request) bool {
return strings.HasPrefix(r.URL.Path, "/login") || r.URL.Path == "/css"
}
@@ -100,11 +96,7 @@ func authenticateHandler() func(http.Handler) http.Handler {
const loginEndPoint = "/login"
-func Start() {
- uiBox = packr.New("UI Box", "../../ui/v2.5/build")
- //legacyUiBox = packr.New("UI Box", "../../ui/v1/dist/stash-frontend")
- loginUIBox = packr.New("Login UI Box", "../../ui/login")
-
+func Start(uiBox embed.FS, loginUIBox embed.FS) {
initialiseImages()
r := chi.NewRouter()
@@ -172,10 +164,10 @@ func Start() {
r.HandleFunc("/playground", gqlPlayground.Handler("GraphQL playground", "/graphql"))
// session handlers
- r.Post(loginEndPoint, handleLogin)
- r.Get("/logout", handleLogout)
+ r.Post(loginEndPoint, handleLogin(loginUIBox))
+ r.Get("/logout", handleLogout(loginUIBox))
- r.Get(loginEndPoint, getLoginHandler)
+ r.Get(loginEndPoint, getLoginHandler(loginUIBox))
r.Mount("/performer", performerRoutes{
txnManager: txnManager,
@@ -216,11 +208,14 @@ func Start() {
r.HandleFunc("/login*", func(w http.ResponseWriter, r *http.Request) {
ext := path.Ext(r.URL.Path)
if ext == ".html" || ext == "" {
- data, _ := loginUIBox.Find("login.html")
- _, _ = w.Write(data)
+ _, _ = w.Write(getLoginPage(loginUIBox))
} else {
r.URL.Path = strings.Replace(r.URL.Path, loginEndPoint, "", 1)
- http.FileServer(loginUIBox).ServeHTTP(w, r)
+ loginRoot, err := fs.Sub(loginUIBox, loginRootDir)
+ if err != nil {
+ panic(err)
+ }
+ http.FileServer(http.FS(loginRoot)).ServeHTTP(w, r)
}
})
@@ -245,6 +240,8 @@ func Start() {
// Serve the web app
r.HandleFunc("/*", func(w http.ResponseWriter, r *http.Request) {
+ const uiRootDir = "ui/v2.5/build"
+
ext := path.Ext(r.URL.Path)
if customUILocation != "" {
@@ -257,7 +254,10 @@ func Start() {
}
if ext == ".html" || ext == "" {
- data, _ := uiBox.Find("index.html")
+ data, err := uiBox.ReadFile(uiRootDir + "/index.html")
+ if err != nil {
+ panic(err)
+ }
prefix := ""
if r.Header.Get("X-Forwarded-Prefix") != "" {
@@ -272,7 +272,11 @@ func Start() {
if isStatic {
w.Header().Add("Cache-Control", "max-age=604800000")
}
- http.FileServer(uiBox).ServeHTTP(w, r)
+ uiRoot, err := fs.Sub(uiBox, uiRootDir)
+ if err != nil {
+ panic(error.Error(err))
+ }
+ http.FileServer(http.FS(uiRoot)).ServeHTTP(w, r)
}
})
diff --git a/pkg/api/session.go b/pkg/api/session.go
index cc14d0c287e..71fa151362a 100644
--- a/pkg/api/session.go
+++ b/pkg/api/session.go
@@ -1,6 +1,7 @@
package api
import (
+ "embed"
"fmt"
"html/template"
"net/http"
@@ -10,15 +11,24 @@ import (
"github.com/stashapp/stash/pkg/session"
)
+const loginRootDir = "ui/login"
const returnURLParam = "returnURL"
+func getLoginPage(loginUIBox embed.FS) []byte {
+ data, err := loginUIBox.ReadFile(loginRootDir + "/login.html")
+ if err != nil {
+ panic(err)
+ }
+ return data
+}
+
type loginTemplateData struct {
URL string
Error string
}
-func redirectToLogin(w http.ResponseWriter, returnURL string, loginError string) {
- data, _ := loginUIBox.Find("login.html")
+func redirectToLogin(loginUIBox embed.FS, w http.ResponseWriter, returnURL string, loginError string) {
+ data := getLoginPage(loginUIBox)
templ, err := template.New("Login").Parse(string(data))
if err != nil {
http.Error(w, fmt.Sprintf("error: %s", err), http.StatusInternalServerError)
@@ -31,42 +41,48 @@ func redirectToLogin(w http.ResponseWriter, returnURL string, loginError string)
}
}
-func getLoginHandler(w http.ResponseWriter, r *http.Request) {
- if !config.GetInstance().HasCredentials() {
- http.Redirect(w, r, "/", http.StatusFound)
- return
- }
+func getLoginHandler(loginUIBox embed.FS) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ if !config.GetInstance().HasCredentials() {
+ http.Redirect(w, r, "/", http.StatusFound)
+ return
+ }
- redirectToLogin(w, r.URL.Query().Get(returnURLParam), "")
+ redirectToLogin(loginUIBox, w, r.URL.Query().Get(returnURLParam), "")
+ }
}
-func handleLogin(w http.ResponseWriter, r *http.Request) {
- url := r.FormValue(returnURLParam)
- if url == "" {
- url = "/"
- }
+func handleLogin(loginUIBox embed.FS) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ url := r.FormValue(returnURLParam)
+ if url == "" {
+ url = "/"
+ }
- err := manager.GetInstance().SessionStore.Login(w, r)
- if err == session.ErrInvalidCredentials {
- // redirect back to the login page with an error
- redirectToLogin(w, url, "Username or password is invalid")
- return
- }
+ err := manager.GetInstance().SessionStore.Login(w, r)
+ if err == session.ErrInvalidCredentials {
+ // redirect back to the login page with an error
+ redirectToLogin(loginUIBox, w, url, "Username or password is invalid")
+ return
+ }
- if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
- http.Redirect(w, r, url, http.StatusFound)
+ http.Redirect(w, r, url, http.StatusFound)
+ }
}
-func handleLogout(w http.ResponseWriter, r *http.Request) {
- if err := manager.GetInstance().SessionStore.Logout(w, r); err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- }
+func handleLogout(loginUIBox embed.FS) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ if err := manager.GetInstance().SessionStore.Logout(w, r); err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
- // redirect to the login page if credentials are required
- getLoginHandler(w, r)
+ // redirect to the login page if credentials are required
+ getLoginHandler(loginUIBox)(w, r)
+ }
}
diff --git a/pkg/database/database.go b/pkg/database/database.go
index 87298fcbfce..4b9d7ff7953 100644
--- a/pkg/database/database.go
+++ b/pkg/database/database.go
@@ -2,6 +2,7 @@ package database
import (
"database/sql"
+ "embed"
"errors"
"fmt"
"os"
@@ -9,10 +10,9 @@ import (
"time"
"github.com/fvbommel/sortorder"
- "github.com/gobuffalo/packr/v2"
"github.com/golang-migrate/migrate/v4"
sqlite3mig "github.com/golang-migrate/migrate/v4/database/sqlite3"
- "github.com/golang-migrate/migrate/v4/source"
+ "github.com/golang-migrate/migrate/v4/source/iofs"
"github.com/jmoiron/sqlx"
sqlite3 "github.com/mattn/go-sqlite3"
@@ -26,6 +26,9 @@ var dbPath string
var appSchemaVersion uint = 28
var databaseSchemaVersion uint
+//go:embed migrations/*.sql
+var migrationsBox embed.FS
+
var (
// ErrMigrationNeeded indicates that a database migration is needed
// before the database can be initialized
@@ -200,17 +203,13 @@ func Version() uint {
}
func getMigrate() (*migrate.Migrate, error) {
- migrationsBox := packr.New("Migrations Box", "./migrations")
- packrSource := &Packr2Source{
- Box: migrationsBox,
- Migrations: source.NewMigrations(),
+ migrations, err := iofs.New(migrationsBox, "migrations")
+ if err != nil {
+ panic(err.Error())
}
- databasePath := utils.FixWindowsPath(dbPath)
- s, _ := WithInstance(packrSource)
-
const disableForeignKeys = true
- conn := open(databasePath, disableForeignKeys)
+ conn := open(dbPath, disableForeignKeys)
driver, err := sqlite3mig.WithInstance(conn.DB, &sqlite3mig.Config{})
if err != nil {
@@ -219,9 +218,9 @@ func getMigrate() (*migrate.Migrate, error) {
// use sqlite3Driver so that migration has access to durationToTinyInt
return migrate.NewWithInstance(
- "packr2",
- s,
- databasePath,
+ "iofs",
+ migrations,
+ dbPath,
driver,
)
}
diff --git a/pkg/database/packr_source.go b/pkg/database/packr_source.go
deleted file mode 100644
index 284e33bf61f..00000000000
--- a/pkg/database/packr_source.go
+++ /dev/null
@@ -1,92 +0,0 @@
-package database
-
-import (
- "bytes"
- "fmt"
- "io"
- "io/ioutil"
- "os"
-
- "github.com/gobuffalo/packr/v2"
- "github.com/golang-migrate/migrate/v4"
- "github.com/golang-migrate/migrate/v4/source"
-)
-
-type Packr2Source struct {
- Box *packr.Box
- Migrations *source.Migrations
-}
-
-func init() {
- source.Register("packr2", &Packr2Source{})
-}
-
-func WithInstance(instance *Packr2Source) (source.Driver, error) {
- for _, fi := range instance.Box.List() {
- m, err := source.DefaultParse(fi)
- if err != nil {
- continue // ignore files that we can't parse
- }
-
- if !instance.Migrations.Append(m) {
- return nil, fmt.Errorf("unable to parse file %v", fi)
- }
- }
-
- return instance, nil
-}
-
-func (s *Packr2Source) Open(url string) (source.Driver, error) {
- return nil, fmt.Errorf("not implemented")
-}
-
-func (s *Packr2Source) Close() error {
- s.Migrations = nil
- return nil
-}
-
-func (s *Packr2Source) First() (version uint, err error) {
- if v, ok := s.Migrations.First(); !ok {
- return 0, os.ErrNotExist
- } else {
- return v, nil
- }
-}
-
-func (s *Packr2Source) Prev(version uint) (prevVersion uint, err error) {
- if v, ok := s.Migrations.Prev(version); !ok {
- return 0, os.ErrNotExist
- } else {
- return v, nil
- }
-}
-
-func (s *Packr2Source) Next(version uint) (nextVersion uint, err error) {
- if v, ok := s.Migrations.Next(version); !ok {
- return 0, os.ErrNotExist
- } else {
- return v, nil
- }
-}
-
-func (s *Packr2Source) ReadUp(version uint) (r io.ReadCloser, identifier string, err error) {
- if migration, ok := s.Migrations.Up(version); !ok {
- return nil, "", os.ErrNotExist
- } else {
- b, _ := s.Box.Find(migration.Raw)
- return ioutil.NopCloser(bytes.NewBuffer(b)),
- migration.Identifier,
- nil
- }
-}
-
-func (s *Packr2Source) ReadDown(version uint) (r io.ReadCloser, identifier string, err error) {
- if migration, ok := s.Migrations.Down(version); !ok {
- return nil, "", migrate.ErrNilVersion
- } else {
- b, _ := s.Box.Find(migration.Raw)
- return ioutil.NopCloser(bytes.NewBuffer(b)),
- migration.Identifier,
- nil
- }
-}
diff --git a/pkg/static/embed.go b/pkg/static/embed.go
new file mode 100644
index 00000000000..a0563e6ac2d
--- /dev/null
+++ b/pkg/static/embed.go
@@ -0,0 +1,9 @@
+package static
+
+import "embed"
+
+//go:embed performer
+var Performer embed.FS
+
+//go:embed performer_male
+var PerformerMale embed.FS
diff --git a/static/performer/NoName01.png b/pkg/static/performer/NoName01.png
similarity index 100%
rename from static/performer/NoName01.png
rename to pkg/static/performer/NoName01.png
diff --git a/static/performer/NoName02.png b/pkg/static/performer/NoName02.png
similarity index 100%
rename from static/performer/NoName02.png
rename to pkg/static/performer/NoName02.png
diff --git a/static/performer/NoName03.png b/pkg/static/performer/NoName03.png
similarity index 100%
rename from static/performer/NoName03.png
rename to pkg/static/performer/NoName03.png
diff --git a/static/performer/NoName04.png b/pkg/static/performer/NoName04.png
similarity index 100%
rename from static/performer/NoName04.png
rename to pkg/static/performer/NoName04.png
diff --git a/static/performer/NoName05.png b/pkg/static/performer/NoName05.png
similarity index 100%
rename from static/performer/NoName05.png
rename to pkg/static/performer/NoName05.png
diff --git a/static/performer/NoName06.png b/pkg/static/performer/NoName06.png
similarity index 100%
rename from static/performer/NoName06.png
rename to pkg/static/performer/NoName06.png
diff --git a/static/performer/NoName07.png b/pkg/static/performer/NoName07.png
similarity index 100%
rename from static/performer/NoName07.png
rename to pkg/static/performer/NoName07.png
diff --git a/static/performer/NoName08.png b/pkg/static/performer/NoName08.png
similarity index 100%
rename from static/performer/NoName08.png
rename to pkg/static/performer/NoName08.png
diff --git a/static/performer/NoName09.png b/pkg/static/performer/NoName09.png
similarity index 100%
rename from static/performer/NoName09.png
rename to pkg/static/performer/NoName09.png
diff --git a/static/performer/NoName10.png b/pkg/static/performer/NoName10.png
similarity index 100%
rename from static/performer/NoName10.png
rename to pkg/static/performer/NoName10.png
diff --git a/static/performer/NoName11.png b/pkg/static/performer/NoName11.png
similarity index 100%
rename from static/performer/NoName11.png
rename to pkg/static/performer/NoName11.png
diff --git a/static/performer/NoName12.png b/pkg/static/performer/NoName12.png
similarity index 100%
rename from static/performer/NoName12.png
rename to pkg/static/performer/NoName12.png
diff --git a/static/performer/NoName13.png b/pkg/static/performer/NoName13.png
similarity index 100%
rename from static/performer/NoName13.png
rename to pkg/static/performer/NoName13.png
diff --git a/static/performer/NoName14.png b/pkg/static/performer/NoName14.png
similarity index 100%
rename from static/performer/NoName14.png
rename to pkg/static/performer/NoName14.png
diff --git a/static/performer/NoName15.png b/pkg/static/performer/NoName15.png
similarity index 100%
rename from static/performer/NoName15.png
rename to pkg/static/performer/NoName15.png
diff --git a/static/performer/NoName16.png b/pkg/static/performer/NoName16.png
similarity index 100%
rename from static/performer/NoName16.png
rename to pkg/static/performer/NoName16.png
diff --git a/static/performer/NoName17.png b/pkg/static/performer/NoName17.png
similarity index 100%
rename from static/performer/NoName17.png
rename to pkg/static/performer/NoName17.png
diff --git a/static/performer/NoName18.png b/pkg/static/performer/NoName18.png
similarity index 100%
rename from static/performer/NoName18.png
rename to pkg/static/performer/NoName18.png
diff --git a/static/performer/NoName19.png b/pkg/static/performer/NoName19.png
similarity index 100%
rename from static/performer/NoName19.png
rename to pkg/static/performer/NoName19.png
diff --git a/static/performer/NoName20.png b/pkg/static/performer/NoName20.png
similarity index 100%
rename from static/performer/NoName20.png
rename to pkg/static/performer/NoName20.png
diff --git a/static/performer/NoName21.png b/pkg/static/performer/NoName21.png
similarity index 100%
rename from static/performer/NoName21.png
rename to pkg/static/performer/NoName21.png
diff --git a/static/performer/NoName22.png b/pkg/static/performer/NoName22.png
similarity index 100%
rename from static/performer/NoName22.png
rename to pkg/static/performer/NoName22.png
diff --git a/static/performer/NoName23.png b/pkg/static/performer/NoName23.png
similarity index 100%
rename from static/performer/NoName23.png
rename to pkg/static/performer/NoName23.png
diff --git a/static/performer/NoName24.png b/pkg/static/performer/NoName24.png
similarity index 100%
rename from static/performer/NoName24.png
rename to pkg/static/performer/NoName24.png
diff --git a/static/performer/NoName25.png b/pkg/static/performer/NoName25.png
similarity index 100%
rename from static/performer/NoName25.png
rename to pkg/static/performer/NoName25.png
diff --git a/static/performer/NoName26.png b/pkg/static/performer/NoName26.png
similarity index 100%
rename from static/performer/NoName26.png
rename to pkg/static/performer/NoName26.png
diff --git a/static/performer/NoName27.png b/pkg/static/performer/NoName27.png
similarity index 100%
rename from static/performer/NoName27.png
rename to pkg/static/performer/NoName27.png
diff --git a/static/performer/NoName28.png b/pkg/static/performer/NoName28.png
similarity index 100%
rename from static/performer/NoName28.png
rename to pkg/static/performer/NoName28.png
diff --git a/static/performer/NoName29.png b/pkg/static/performer/NoName29.png
similarity index 100%
rename from static/performer/NoName29.png
rename to pkg/static/performer/NoName29.png
diff --git a/static/performer/NoName30.png b/pkg/static/performer/NoName30.png
similarity index 100%
rename from static/performer/NoName30.png
rename to pkg/static/performer/NoName30.png
diff --git a/static/performer/NoName31.png b/pkg/static/performer/NoName31.png
similarity index 100%
rename from static/performer/NoName31.png
rename to pkg/static/performer/NoName31.png
diff --git a/static/performer/NoName32.png b/pkg/static/performer/NoName32.png
similarity index 100%
rename from static/performer/NoName32.png
rename to pkg/static/performer/NoName32.png
diff --git a/static/performer/NoName33.png b/pkg/static/performer/NoName33.png
similarity index 100%
rename from static/performer/NoName33.png
rename to pkg/static/performer/NoName33.png
diff --git a/static/performer/NoName34.png b/pkg/static/performer/NoName34.png
similarity index 100%
rename from static/performer/NoName34.png
rename to pkg/static/performer/NoName34.png
diff --git a/static/performer/NoName35.png b/pkg/static/performer/NoName35.png
similarity index 100%
rename from static/performer/NoName35.png
rename to pkg/static/performer/NoName35.png
diff --git a/static/performer/NoName36.png b/pkg/static/performer/NoName36.png
similarity index 100%
rename from static/performer/NoName36.png
rename to pkg/static/performer/NoName36.png
diff --git a/static/performer/NoName37.png b/pkg/static/performer/NoName37.png
similarity index 100%
rename from static/performer/NoName37.png
rename to pkg/static/performer/NoName37.png
diff --git a/static/performer/NoName38.png b/pkg/static/performer/NoName38.png
similarity index 100%
rename from static/performer/NoName38.png
rename to pkg/static/performer/NoName38.png
diff --git a/static/performer/NoName39.png b/pkg/static/performer/NoName39.png
similarity index 100%
rename from static/performer/NoName39.png
rename to pkg/static/performer/NoName39.png
diff --git a/static/performer/NoName40.png b/pkg/static/performer/NoName40.png
similarity index 100%
rename from static/performer/NoName40.png
rename to pkg/static/performer/NoName40.png
diff --git a/static/performer_male/noname_male_01.jpg b/pkg/static/performer_male/noname_male_01.jpg
similarity index 100%
rename from static/performer_male/noname_male_01.jpg
rename to pkg/static/performer_male/noname_male_01.jpg
diff --git a/static/performer_male/noname_male_02.jpg b/pkg/static/performer_male/noname_male_02.jpg
similarity index 100%
rename from static/performer_male/noname_male_02.jpg
rename to pkg/static/performer_male/noname_male_02.jpg
diff --git a/scripts/cross-compile.sh b/scripts/cross-compile.sh
index a5db1b6187a..2012d9b6b58 100755
--- a/scripts/cross-compile.sh
+++ b/scripts/cross-compile.sh
@@ -8,25 +8,16 @@ GITHASH=`git rev-parse --short HEAD`
STASH_VERSION=`git describe --tags --exclude latest_develop`
SETENV="BUILD_DATE=\"$BUILD_DATE\" GITHASH=$GITHASH STASH_VERSION=\"$STASH_VERSION\""
-SETUP="export CGO_ENABLED=1; set -e; echo '=== Running packr ==='; make packr;"
-SETUP_FAST="export CGO_ENABLED=1;"
+SETUP="export CGO_ENABLED=1;"
WINDOWS="echo '=== Building Windows binary ==='; $SETENV make cross-compile-windows;"
DARWIN="echo '=== Building OSX binary ==='; $SETENV make cross-compile-osx-intel;"
-DARWIN-ARM64="echo '=== Building OSX (arm64) binary ==='; $SETENV make cross-compile-osx-applesilicon;"
+DARWIN_ARM64="echo '=== Building OSX (arm64) binary ==='; $SETENV make cross-compile-osx-applesilicon;"
LINUX_AMD64="echo '=== Building Linux (amd64) binary ==='; $SETENV make cross-compile-linux;"
LINUX_ARM64v8="echo '=== Building Linux (armv8/arm64) binary ==='; $SETENV make cross-compile-linux-arm64v8;"
LINUX_ARM32v7="echo '=== Building Linux (armv7/armhf) binary ==='; $SETENV make cross-compile-linux-arm32v7;"
LINUX_ARM32v6="echo '=== Building Linux (armv6 | Raspberry Pi 1) binary ==='; $SETENV make cross-compile-pi;"
BUILD_COMPLETE="echo '=== Build complete ==='"
-# if build target ends with -fast then use prebuilt packr2. eg amd64-fast or all-fast
-FAST=`echo "$1" | cut -d - -f 2`
-if [ "$FAST" == "fast" ]
-then
- echo "Building without Packr2"
- SETUP=$SETUP_FAST
-fi
-
BUILD=`echo "$1" | cut -d - -f 1`
if [ "$BUILD" == "windows" ]
then
@@ -54,7 +45,7 @@ then
COMMAND="$SETUP $LINUX_ARM32v7 $BUILD_COMPLETE"
else
echo "Building All"
- COMMAND="$SETUP $WINDOWS $DARWIN $LINUX_AMD64 $LINUX_ARM64v8 $LINUX_ARM32v7 $LINUX_ARM32v6 $BUILD_COMPLETE"
+ COMMAND="$SETUP $WINDOWS $DARWIN $DARWIN_ARM64 $LINUX_AMD64 $LINUX_ARM64v8 $LINUX_ARM32v7 $LINUX_ARM32v6 $BUILD_COMPLETE"
fi
# Pull Latest Image
diff --git a/vendor/github.com/gobuffalo/logger/.gitignore b/vendor/github.com/gobuffalo/logger/.gitignore
deleted file mode 100644
index 3689718594c..00000000000
--- a/vendor/github.com/gobuffalo/logger/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.log
-.DS_Store
-doc
-tmp
-pkg
-*.gem
-*.pid
-coverage
-coverage.data
-build/*
-*.pbxuser
-*.mode1v3
-.svn
-profile
-.console_history
-.sass-cache/*
-.rake_tasks~
-*.log.lck
-solr/
-.jhw-cache/
-jhw.*
-*.sublime*
-node_modules/
-dist/
-generated/
-.vendor/
-bin/*
-gin-bin
-.idea/
diff --git a/vendor/github.com/gobuffalo/logger/LICENSE b/vendor/github.com/gobuffalo/logger/LICENSE
deleted file mode 100644
index 649efd43722..00000000000
--- a/vendor/github.com/gobuffalo/logger/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 Mark Bates
-
-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/gobuffalo/logger/Makefile b/vendor/github.com/gobuffalo/logger/Makefile
deleted file mode 100644
index 0ac539f1c2e..00000000000
--- a/vendor/github.com/gobuffalo/logger/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-TAGS ?= ""
-GO_BIN ?= "go"
-
-install:
- $(GO_BIN) install -tags ${TAGS} -v .
- make tidy
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
- make tidy
-
-build:
- $(GO_BIN) build -v .
- make tidy
-
-test:
- $(GO_BIN) test -cover -tags ${TAGS} ./...
- make tidy
-
-ci-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
-
-ci-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
-
-lint:
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
- golangci-lint run --enable-all
- make tidy
-
-update:
-ifeq ($(GO111MODULE),on)
- rm go.*
- $(GO_BIN) mod init
- $(GO_BIN) mod tidy
-else
- $(GO_BIN) get -u -tags ${TAGS}
-endif
- make test
- make install
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-release:
- $(GO_BIN) get github.com/gobuffalo/release
- make tidy
- release -y -f version.go --skip-packr
- make tidy
-
-
-
diff --git a/vendor/github.com/gobuffalo/logger/README.md b/vendor/github.com/gobuffalo/logger/README.md
deleted file mode 100644
index 15aefce9829..00000000000
--- a/vendor/github.com/gobuffalo/logger/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-# Logger
-
-The [`logger.Logger`](https://godoc.org/github.com/gobuffalo/logger#Logger) interface is used throughout Buffalo apps, and other systems, to log a whole manner of things.
-
-## Installation
-
-```bash
-$ go get -u github.com/gobuffalo/logger
-```
-
-## Documentation
-
-* [GoDoc](https://godoc.org/github.com/gobuffalo/logger)
-* [General Buffalo Documentation](https://gobuffalo.io)
diff --git a/vendor/github.com/gobuffalo/logger/SHOULDERS.md b/vendor/github.com/gobuffalo/logger/SHOULDERS.md
deleted file mode 100644
index 1780b8a052d..00000000000
--- a/vendor/github.com/gobuffalo/logger/SHOULDERS.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# github.com/gobuffalo/logger Stands on the Shoulders of Giants
-
-github.com/gobuffalo/logger does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
-
-* [github.com/gobuffalo/envy](https://godoc.org/github.com/gobuffalo/envy)
-
-* [github.com/konsorten/go-windows-terminal-sequences](https://godoc.org/github.com/konsorten/go-windows-terminal-sequences)
-
-* [github.com/rogpeppe/go-internal](https://godoc.org/github.com/rogpeppe/go-internal)
-
-* [github.com/sirupsen/logrus](https://godoc.org/github.com/sirupsen/logrus)
-
-* [golang.org/x/term](https://godoc.org/golang.org/x/term)
-
-* [golang.org/x/sys](https://godoc.org/golang.org/x/sys)
diff --git a/vendor/github.com/gobuffalo/logger/formatter.go b/vendor/github.com/gobuffalo/logger/formatter.go
deleted file mode 100644
index 3018bf4b5fc..00000000000
--- a/vendor/github.com/gobuffalo/logger/formatter.go
+++ /dev/null
@@ -1,154 +0,0 @@
-package logger
-
-// I really don't want to have this, but until (if) https://github.com/sirupsen/logrus/pull/606 is merged we're stuck with all this code. And yes, this is ALL needed just to remove some blank space in the logs
-
-import (
- "bytes"
- "fmt"
- "sort"
- "strings"
- "sync"
- "time"
-
- "github.com/sirupsen/logrus"
-)
-
-const (
- red = 31
- yellow = 33
- blue = 36
- gray = 37
-)
-
-// textFormatter formats logs into text
-type textFormatter struct {
- ForceColors bool
- isTerminal bool
- sync.Once
-}
-
-func (f *textFormatter) init(entry *logrus.Entry) {
- if entry.Logger != nil {
- f.isTerminal = checkIfTerminal(entry.Logger.Out)
- }
-}
-
-const defaultTimestampFormat = time.RFC3339
-
-// Format renders a single log entry
-func (f *textFormatter) Format(entry *logrus.Entry) ([]byte, error) {
- prefixFieldClashes(entry.Data)
-
- keys := make([]string, 0, len(entry.Data))
- for k := range entry.Data {
- keys = append(keys, k)
- }
-
- sort.Strings(keys)
-
- var b *bytes.Buffer
- if entry.Buffer != nil {
- b = entry.Buffer
- } else {
- b = &bytes.Buffer{}
- }
-
- f.Do(func() { f.init(entry) })
-
- isColored := (f.ForceColors || f.isTerminal)
-
- if isColored {
- f.printColored(b, entry, keys)
- } else {
- f.appendKeyValue(b, "level", entry.Level.String())
- f.appendKeyValue(b, "time", entry.Time.Format(defaultTimestampFormat))
- if entry.Message != "" {
- f.appendKeyValue(b, "msg", entry.Message)
- }
- for _, key := range keys {
- f.appendKeyValue(b, key, entry.Data[key])
- }
- }
-
- b.WriteByte('\n')
- return b.Bytes(), nil
-}
-
-func (f *textFormatter) printColored(b *bytes.Buffer, entry *logrus.Entry, keys []string) {
- var levelColor int
- switch entry.Level {
- case logrus.DebugLevel:
- levelColor = gray
- case logrus.WarnLevel:
- levelColor = yellow
- case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel:
- levelColor = red
- default:
- levelColor = blue
- }
-
- levelText := strings.ToUpper(entry.Level.String())[0:4]
-
- fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s]", levelColor, levelText, entry.Time.Format(defaultTimestampFormat))
-
- if entry.Message != "" {
- fmt.Fprintf(b, " %s", entry.Message)
- }
-
- for _, k := range keys {
- v := entry.Data[k]
- fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m=", levelColor, k)
- f.appendValue(b, v)
- }
-}
-
-func (f *textFormatter) needsQuoting(text string) bool {
- if len(text) == 0 {
- return true
- }
- for _, ch := range text {
- if !((ch >= 'a' && ch <= 'z') ||
- (ch >= 'A' && ch <= 'Z') ||
- (ch >= '0' && ch <= '9') ||
- ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '@' || ch == '^' || ch == '+') {
- return true
- }
- }
- return false
-}
-
-func (f *textFormatter) appendKeyValue(b *bytes.Buffer, key string, value interface{}) {
- if b.Len() > 0 {
- b.WriteByte(' ')
- }
- b.WriteString(key)
- b.WriteByte('=')
- f.appendValue(b, value)
-}
-
-func (f *textFormatter) appendValue(b *bytes.Buffer, value interface{}) {
- stringVal, ok := value.(string)
- if !ok {
- stringVal = fmt.Sprint(value)
- }
-
- if !f.needsQuoting(stringVal) {
- b.WriteString(stringVal)
- } else {
- b.WriteString(fmt.Sprintf("%q", stringVal))
- }
-}
-
-func prefixFieldClashes(data logrus.Fields) {
- if t, ok := data["time"]; ok {
- data["fields.time"] = t
- }
-
- if m, ok := data["msg"]; ok {
- data["fields.msg"] = m
- }
-
- if l, ok := data["level"]; ok {
- data["fields.level"] = l
- }
-}
diff --git a/vendor/github.com/gobuffalo/logger/level.go b/vendor/github.com/gobuffalo/logger/level.go
deleted file mode 100644
index 0c9199a7a90..00000000000
--- a/vendor/github.com/gobuffalo/logger/level.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package logger
-
-import "github.com/sirupsen/logrus"
-
-// Level of the logger
-type Level = logrus.Level
-
-const (
- // PanicLevel level, highest level of severity. Logs and then calls panic with the
- // message passed to Debug, Info, ...
- PanicLevel = logrus.PanicLevel
- // FatalLevel level. Logs and then calls `logger.Exit(1)`. It will exit even if the
- // logging level is set to Panic.
- FatalLevel = logrus.FatalLevel
- // ErrorLevel level. Logs. Used for errors that should definitely be noted.
- // Commonly used for hooks to send errors to an error tracking service.
- ErrorLevel = logrus.ErrorLevel
- // WarnLevel level. Non-critical entries that deserve eyes.
- WarnLevel = logrus.WarnLevel
- // InfoLevel level. General operational entries about what's going on inside the
- // application.
- InfoLevel = logrus.InfoLevel
- // DebugLevel level. Usually only enabled when debugging. Very verbose logging.
- DebugLevel = logrus.DebugLevel
-)
diff --git a/vendor/github.com/gobuffalo/logger/logger.go b/vendor/github.com/gobuffalo/logger/logger.go
deleted file mode 100644
index 0591cf5842c..00000000000
--- a/vendor/github.com/gobuffalo/logger/logger.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package logger
-
-import (
- "os"
-
- "github.com/sirupsen/logrus"
-)
-
-// FieldLogger interface
-type FieldLogger interface {
- Logger
- WithField(string, interface{}) FieldLogger
- WithFields(map[string]interface{}) FieldLogger
-}
-
-// Logger interface is used throughout Buffalo
-// apps to log a whole manner of things.
-type Logger interface {
- Debugf(string, ...interface{})
- Infof(string, ...interface{})
- Printf(string, ...interface{})
- Warnf(string, ...interface{})
- Errorf(string, ...interface{})
- Fatalf(string, ...interface{})
- Debug(...interface{})
- Info(...interface{})
- Warn(...interface{})
- Error(...interface{})
- Fatal(...interface{})
- Panic(...interface{})
-}
-
-func ParseLevel(level string) (Level, error) {
- l, err := logrus.ParseLevel(level)
- return Level(l), err
-}
-
-// NewLogger based on the specified log level, defaults to "debug".
-// See `New` for more details.
-func NewLogger(level string) FieldLogger {
- lvl, err := logrus.ParseLevel(level)
- if err != nil {
- lvl = logrus.DebugLevel
- }
- return New(lvl)
-}
-
-// New based on the specified log level, defaults to "debug".
-// This logger will log to the STDOUT in a human readable,
-// but parseable form.
-/*
- Example: time="2016-12-01T21:02:07-05:00" level=info duration=225.283µs human_size="106 B" method=GET path="/" render=199.79µs request_id=2265736089 size=106 status=200
-*/
-func New(lvl Level) FieldLogger {
- e := os.Getenv("GO_ENV")
- if len(e) == 0 {
- e = "development"
- }
- dev := e == "development"
- l := logrus.New()
- l.SetOutput(os.Stdout)
- l.Level = lvl
- l.Formatter = &textFormatter{
- ForceColors: dev,
- }
- return Logrus{l}
-}
diff --git a/vendor/github.com/gobuffalo/logger/logrus.go b/vendor/github.com/gobuffalo/logger/logrus.go
deleted file mode 100644
index bf13148edbb..00000000000
--- a/vendor/github.com/gobuffalo/logger/logrus.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package logger
-
-import (
- "io"
-
- "github.com/sirupsen/logrus"
-)
-
-var _ Logger = Logrus{}
-var _ FieldLogger = Logrus{}
-var _ Outable = Logrus{}
-
-// Logrus is a Logger implementation backed by sirupsen/logrus
-type Logrus struct {
- logrus.FieldLogger
-}
-
-// SetOutput will try and set the output of the underlying
-// logrus.FieldLogger if it can
-func (l Logrus) SetOutput(w io.Writer) {
- if lg, ok := l.FieldLogger.(Outable); ok {
- lg.SetOutput(w)
- }
-}
-
-// WithField returns a new Logger with the field added
-func (l Logrus) WithField(s string, i interface{}) FieldLogger {
- return Logrus{l.FieldLogger.WithField(s, i)}
-}
-
-// WithFields returns a new Logger with the fields added
-func (l Logrus) WithFields(m map[string]interface{}) FieldLogger {
- return Logrus{l.FieldLogger.WithFields(m)}
-}
diff --git a/vendor/github.com/gobuffalo/logger/outable.go b/vendor/github.com/gobuffalo/logger/outable.go
deleted file mode 100644
index 459fe1972b0..00000000000
--- a/vendor/github.com/gobuffalo/logger/outable.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package logger
-
-import "io"
-
-// Outable interface for loggers that allow setting the output writer
-type Outable interface {
- SetOutput(out io.Writer)
-}
diff --git a/vendor/github.com/gobuffalo/logger/terminal_check.go b/vendor/github.com/gobuffalo/logger/terminal_check.go
deleted file mode 100644
index 0089432057d..00000000000
--- a/vendor/github.com/gobuffalo/logger/terminal_check.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// +build !appengine
-
-package logger
-
-import (
- "io"
- "os"
-
- "golang.org/x/term"
-)
-
-func checkIfTerminal(w io.Writer) bool {
- switch v := w.(type) {
- case *os.File:
- return term.IsTerminal(int(v.Fd()))
- default:
- return false
- }
-}
diff --git a/vendor/github.com/gobuffalo/logger/terminal_check_appengine.go b/vendor/github.com/gobuffalo/logger/terminal_check_appengine.go
deleted file mode 100644
index fe84f0b89b6..00000000000
--- a/vendor/github.com/gobuffalo/logger/terminal_check_appengine.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// +build appengine
-
-package logger
-
-import (
- "io"
-)
-
-func checkIfTerminal(w io.Writer) bool {
- return true
-}
diff --git a/vendor/github.com/gobuffalo/logger/version.go b/vendor/github.com/gobuffalo/logger/version.go
deleted file mode 100644
index dee0c6f1547..00000000000
--- a/vendor/github.com/gobuffalo/logger/version.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package logger
-
-// Version of the logger
-const Version = "v1.0.1"
diff --git a/vendor/github.com/gobuffalo/packd/.gitignore b/vendor/github.com/gobuffalo/packd/.gitignore
deleted file mode 100644
index 3689718594c..00000000000
--- a/vendor/github.com/gobuffalo/packd/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.log
-.DS_Store
-doc
-tmp
-pkg
-*.gem
-*.pid
-coverage
-coverage.data
-build/*
-*.pbxuser
-*.mode1v3
-.svn
-profile
-.console_history
-.sass-cache/*
-.rake_tasks~
-*.log.lck
-solr/
-.jhw-cache/
-jhw.*
-*.sublime*
-node_modules/
-dist/
-generated/
-.vendor/
-bin/*
-gin-bin
-.idea/
diff --git a/vendor/github.com/gobuffalo/packd/Makefile b/vendor/github.com/gobuffalo/packd/Makefile
deleted file mode 100644
index 0ac539f1c2e..00000000000
--- a/vendor/github.com/gobuffalo/packd/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-TAGS ?= ""
-GO_BIN ?= "go"
-
-install:
- $(GO_BIN) install -tags ${TAGS} -v .
- make tidy
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
- make tidy
-
-build:
- $(GO_BIN) build -v .
- make tidy
-
-test:
- $(GO_BIN) test -cover -tags ${TAGS} ./...
- make tidy
-
-ci-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
-
-ci-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
-
-lint:
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
- golangci-lint run --enable-all
- make tidy
-
-update:
-ifeq ($(GO111MODULE),on)
- rm go.*
- $(GO_BIN) mod init
- $(GO_BIN) mod tidy
-else
- $(GO_BIN) get -u -tags ${TAGS}
-endif
- make test
- make install
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-release:
- $(GO_BIN) get github.com/gobuffalo/release
- make tidy
- release -y -f version.go --skip-packr
- make tidy
-
-
-
diff --git a/vendor/github.com/gobuffalo/packd/README.md b/vendor/github.com/gobuffalo/packd/README.md
deleted file mode 100644
index 1c534cdd594..00000000000
--- a/vendor/github.com/gobuffalo/packd/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-# github.com/gobuffalo/packd
-
-This is a collection of interfaces designed to make using [github.com/gobuffalo/packr](https://github.com/gobuffalo/packr) easier, and to make the transition between v1 and v2 as seamless as possible.
-
-They can, and should, be used for testing, alternate Box implementations, etc...
-
-
-## Installation
-
-```bash
-$ go get -u -v github.com/gobuffalo/packd
-```
-
-## Memory Box
-
-The [`packd#MemoryBox`](https://godoc.org/github.com/gobuffalo/packd#MemoryBox) is a complete, thread-safe, implementation of [`packd#Box`](https://godoc.org/github.com/gobuffalo/packd#Box)
diff --git a/vendor/github.com/gobuffalo/packd/SHOULDERS.md b/vendor/github.com/gobuffalo/packd/SHOULDERS.md
deleted file mode 100644
index 076205ba101..00000000000
--- a/vendor/github.com/gobuffalo/packd/SHOULDERS.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# github.com/gobuffalo/packd Stands on the Shoulders of Giants
-
-github.com/gobuffalo/packd does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
-
-* [github.com/davecgh/go-spew](https://godoc.org/github.com/davecgh/go-spew)
-
-* [github.com/stretchr/testify](https://godoc.org/github.com/stretchr/testify)
diff --git a/vendor/github.com/gobuffalo/packd/file.go b/vendor/github.com/gobuffalo/packd/file.go
deleted file mode 100644
index 58fd86fea46..00000000000
--- a/vendor/github.com/gobuffalo/packd/file.go
+++ /dev/null
@@ -1,126 +0,0 @@
-package packd
-
-import (
- "bytes"
- "fmt"
- "io"
- "os"
- "time"
-)
-
-var _ File = &virtualFile{}
-var _ io.Reader = &virtualFile{}
-var _ io.Writer = &virtualFile{}
-var _ fmt.Stringer = &virtualFile{}
-
-type virtualFile struct {
- io.Reader
- name string
- info fileInfo
- original []byte
-}
-
-func (f virtualFile) Name() string {
- return f.name
-}
-
-func (f *virtualFile) Seek(offset int64, whence int) (int64, error) {
- return f.Reader.(*bytes.Reader).Seek(offset, whence)
-}
-
-func (f virtualFile) FileInfo() (os.FileInfo, error) {
- return f.info, nil
-}
-
-func (f *virtualFile) Close() error {
- return nil
-}
-
-func (f virtualFile) Readdir(count int) ([]os.FileInfo, error) {
- return []os.FileInfo{f.info}, nil
-}
-
-func (f virtualFile) Stat() (os.FileInfo, error) {
- return f.info, nil
-}
-
-func (f virtualFile) String() string {
- return string(f.original)
-}
-
-// Read reads the next len(p) bytes from the virtualFile and
-// rewind read offset to 0 when it met EOF.
-func (f *virtualFile) Read(p []byte) (int, error) {
- i, err := f.Reader.Read(p)
-
- if i == 0 || err == io.EOF {
- f.Seek(0, io.SeekStart)
- }
- return i, err
-}
-
-// Write copies byte slice p to content of virtualFile.
-func (f *virtualFile) Write(p []byte) (int, error) {
- return f.write(p)
-}
-
-// write copies byte slice or data from io.Reader to content of the
-// virtualFile and update related information of the virtualFile.
-func (f *virtualFile) write(d interface{}) (c int, err error) {
- bb := &bytes.Buffer{}
- switch d.(type) {
- case []byte:
- c, err = bb.Write(d.([]byte))
- case io.Reader:
- if d != nil {
- i64, e := io.Copy(bb, d.(io.Reader))
- c = int(i64)
- err = e
- }
- default:
- err = fmt.Errorf("unknown type of argument")
- }
-
- if err != nil {
- return c, err
- }
-
- f.info.size = int64(c)
- f.info.modTime = time.Now()
- f.original = bb.Bytes()
- f.Reader = bytes.NewReader(f.original)
- return c, nil
-}
-
-// NewFile returns a new "virtual" file
-func NewFile(name string, r io.Reader) (File, error) {
- return buildFile(name, r)
-}
-
-// NewDir returns a new "virtual" directory
-func NewDir(name string) (File, error) {
- v, err := buildFile(name, nil)
- if err != nil {
- return v, err
- }
- v.info.isDir = true
- return v, nil
-}
-
-func buildFile(name string, r io.Reader) (*virtualFile, error) {
- vf := &virtualFile{
- name: name,
- info: fileInfo{
- Path: name,
- modTime: time.Now(),
- },
- }
-
- var err error
- if r != nil {
- _, err = vf.write(r)
- } else {
- _, err = vf.write([]byte{}) // for safety
- }
- return vf, err
-}
diff --git a/vendor/github.com/gobuffalo/packd/file_info.go b/vendor/github.com/gobuffalo/packd/file_info.go
deleted file mode 100644
index 8bed0b90374..00000000000
--- a/vendor/github.com/gobuffalo/packd/file_info.go
+++ /dev/null
@@ -1,39 +0,0 @@
-package packd
-
-import (
- "os"
- "time"
-)
-
-var _ os.FileInfo = fileInfo{}
-
-type fileInfo struct {
- Path string
- size int64
- modTime time.Time
- isDir bool
-}
-
-func (f fileInfo) Name() string {
- return f.Path
-}
-
-func (f fileInfo) Size() int64 {
- return f.size
-}
-
-func (f fileInfo) Mode() os.FileMode {
- return 0444
-}
-
-func (f fileInfo) ModTime() time.Time {
- return f.modTime
-}
-
-func (f fileInfo) IsDir() bool {
- return f.isDir
-}
-
-func (f fileInfo) Sys() interface{} {
- return nil
-}
diff --git a/vendor/github.com/gobuffalo/packd/interfaces.go b/vendor/github.com/gobuffalo/packd/interfaces.go
deleted file mode 100644
index e8475f0aa1a..00000000000
--- a/vendor/github.com/gobuffalo/packd/interfaces.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package packd
-
-import (
- "fmt"
- "io"
- "net/http"
- "os"
-)
-
-type WalkFunc func(string, File) error
-
-// Box represents the entirety of the necessary
-// interfaces to form a "full" box.
-// github.com/gobuffalo/packr#Box is an example of this interface.
-type Box interface {
- HTTPBox
- Lister
- Addable
- Finder
- Walkable
- Haser
-}
-
-type Haser interface {
- Has(string) bool
-}
-
-type Walker interface {
- Walk(wf WalkFunc) error
-}
-
-type Walkable interface {
- Walker
- WalkPrefix(prefix string, wf WalkFunc) error
-}
-
-type Finder interface {
- Find(string) ([]byte, error)
- FindString(name string) (string, error)
-}
-
-type HTTPBox interface {
- Open(name string) (http.File, error)
-}
-
-type Lister interface {
- List() []string
-}
-
-type Addable interface {
- AddString(path string, t string) error
- AddBytes(path string, t []byte) error
-}
-
-type SimpleFile interface {
- fmt.Stringer
- io.Reader
- io.Writer
- Name() string
-}
-
-type HTTPFile interface {
- SimpleFile
- io.Closer
- io.Seeker
- Readdir(count int) ([]os.FileInfo, error)
- Stat() (os.FileInfo, error)
-}
-
-type File interface {
- HTTPFile
- FileInfo() (os.FileInfo, error)
-}
-
-// LegacyBox represents deprecated methods
-// that older Box implementations might have had.
-// github.com/gobuffalo/packr v1 is an example of a LegacyBox.
-type LegacyBox interface {
- String(name string) string
- MustString(name string) (string, error)
- Bytes(name string) []byte
- MustBytes(name string) ([]byte, error)
-}
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/.gitignore b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/.gitignore
deleted file mode 100644
index 3689718594c..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.log
-.DS_Store
-doc
-tmp
-pkg
-*.gem
-*.pid
-coverage
-coverage.data
-build/*
-*.pbxuser
-*.mode1v3
-.svn
-profile
-.console_history
-.sass-cache/*
-.rake_tasks~
-*.log.lck
-solr/
-.jhw-cache/
-jhw.*
-*.sublime*
-node_modules/
-dist/
-generated/
-.vendor/
-bin/*
-gin-bin
-.idea/
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/LICENSE b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/LICENSE
deleted file mode 100644
index 649efd43722..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 Mark Bates
-
-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/gobuffalo/packd/internal/takeon/github.com/markbates/errx/Makefile b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/Makefile
deleted file mode 100644
index 0ac539f1c2e..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-TAGS ?= ""
-GO_BIN ?= "go"
-
-install:
- $(GO_BIN) install -tags ${TAGS} -v .
- make tidy
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
- make tidy
-
-build:
- $(GO_BIN) build -v .
- make tidy
-
-test:
- $(GO_BIN) test -cover -tags ${TAGS} ./...
- make tidy
-
-ci-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
-
-ci-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
-
-lint:
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
- golangci-lint run --enable-all
- make tidy
-
-update:
-ifeq ($(GO111MODULE),on)
- rm go.*
- $(GO_BIN) mod init
- $(GO_BIN) mod tidy
-else
- $(GO_BIN) get -u -tags ${TAGS}
-endif
- make test
- make install
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-release:
- $(GO_BIN) get github.com/gobuffalo/release
- make tidy
- release -y -f version.go --skip-packr
- make tidy
-
-
-
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/SHOULDERS.md b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/SHOULDERS.md
deleted file mode 100644
index b19072e9f66..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/SHOULDERS.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# github.com/markbates/errx Stands on the Shoulders of Giants
-
-github.com/markbates/errx does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/azure-pipelines.yml b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/azure-pipelines.yml
deleted file mode 100644
index 417e2c57921..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/azure-pipelines.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-variables:
- GOBIN: "$(GOPATH)/bin" # Go binaries path
- GOPATH: "$(system.defaultWorkingDirectory)/gopath" # Go workspace path
- modulePath: "$(GOPATH)/src/github.com/$(build.repository.name)" # Path to the module"s code
-
-jobs:
-- job: Windows
- pool:
- vmImage: "vs2017-win2016"
- strategy:
- matrix:
- go 1.10:
- go_version: "1.10"
- go 1.11 (on):
- go_version: "1.11.5"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.5"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
-
-- job: macOS
- pool:
- vmImage: "macOS-10.13"
- strategy:
- matrix:
- go 1.10:
- go_version: "1.10"
- go 1.11 (on):
- go_version: "1.11.5"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.5"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
-
-- job: Linux
- pool:
- vmImage: "ubuntu-16.04"
- strategy:
- matrix:
- go 1.10:
- go_version: "1.10"
- go 1.11 (on):
- go_version: "1.11.5"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.5"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/azure-tests.yml b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/azure-tests.yml
deleted file mode 100644
index eea5822fad5..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/azure-tests.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-steps:
- - task: GoTool@0
- inputs:
- version: $(go_version)
- - task: Bash@3
- inputs:
- targetType: inline
- script: |
- mkdir -p "$(GOBIN)"
- mkdir -p "$(GOPATH)/pkg"
- mkdir -p "$(modulePath)"
- shopt -s extglob
- mv !(gopath) "$(modulePath)"
- displayName: "Setup Go Workspace"
- - script: |
- go get -t -v ./...
- go test -race ./...
- workingDirectory: "$(modulePath)"
- displayName: "Tests"
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/errx.go b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/errx.go
deleted file mode 100644
index 5a6f6398c23..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/errx.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package errx
-
-// go2 errors
-type Wrapper interface {
- Unwrap() error
-}
-
-// pkg/errors
-type Causer interface {
- Cause() error
-}
-
-func Unwrap(err error) error {
- switch e := err.(type) {
- case Wrapper:
- return e.Unwrap()
- case Causer:
- return e.Cause()
- }
- return err
-}
-
-var Cause = Unwrap
diff --git a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/version.go b/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/version.go
deleted file mode 100644
index 82e25a1a957..00000000000
--- a/vendor/github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx/version.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package errx
-
-// Version of errx
-const Version = "v1.0.0"
diff --git a/vendor/github.com/gobuffalo/packd/map.go b/vendor/github.com/gobuffalo/packd/map.go
deleted file mode 100644
index 906b49e3ea2..00000000000
--- a/vendor/github.com/gobuffalo/packd/map.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package packd
-
-import (
- "sort"
- "sync"
-)
-
-// ByteMap wraps sync.Map and uses the following types:
-// key: string
-// value: []byte
-type ByteMap struct {
- data sync.Map
-}
-
-// Delete the key from the map
-func (m *ByteMap) Delete(key string) {
- m.data.Delete(key)
-}
-
-// Load the key from the map.
-// Returns []byte or bool.
-// A false return indicates either the key was not found
-// or the value is not of type []byte
-func (m *ByteMap) Load(key string) ([]byte, bool) {
- i, ok := m.data.Load(key)
- if !ok {
- return []byte(``), false
- }
- s, ok := i.([]byte)
- return s, ok
-}
-
-// LoadOrStore will return an existing key or
-// store the value if not already in the map
-func (m *ByteMap) LoadOrStore(key string, value []byte) ([]byte, bool) {
- i, _ := m.data.LoadOrStore(key, value)
- s, ok := i.([]byte)
- return s, ok
-}
-
-// Range over the []byte values in the map
-func (m *ByteMap) Range(f func(key string, value []byte) bool) {
- m.data.Range(func(k, v interface{}) bool {
- key, ok := k.(string)
- if !ok {
- return false
- }
- value, ok := v.([]byte)
- if !ok {
- return false
- }
- return f(key, value)
- })
-}
-
-// Store a []byte in the map
-func (m *ByteMap) Store(key string, value []byte) {
- m.data.Store(key, value)
-}
-
-// Keys returns a list of keys in the map
-func (m *ByteMap) Keys() []string {
- var keys []string
- m.Range(func(key string, value []byte) bool {
- keys = append(keys, key)
- return true
- })
- sort.Strings(keys)
- return keys
-}
diff --git a/vendor/github.com/gobuffalo/packd/memory_box.go b/vendor/github.com/gobuffalo/packd/memory_box.go
deleted file mode 100644
index 7f3137cb44f..00000000000
--- a/vendor/github.com/gobuffalo/packd/memory_box.go
+++ /dev/null
@@ -1,156 +0,0 @@
-package packd
-
-import (
- "bytes"
- "net/http"
- "os"
- "path/filepath"
- "sort"
- "strings"
-
- "github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx"
-)
-
-var _ Addable = NewMemoryBox()
-var _ Finder = NewMemoryBox()
-var _ Lister = NewMemoryBox()
-var _ HTTPBox = NewMemoryBox()
-var _ Haser = NewMemoryBox()
-var _ Walkable = NewMemoryBox()
-var _ Box = NewMemoryBox()
-
-// MemoryBox is a thread-safe, in-memory, implementation of the Box interface.
-type MemoryBox struct {
- files *ByteMap
-}
-
-func (m *MemoryBox) Has(path string) bool {
- _, ok := m.files.Load(path)
- return ok
-}
-
-func (m *MemoryBox) List() []string {
- var names []string
- m.files.Range(func(key string, value []byte) bool {
- names = append(names, key)
- return true
- })
-
- sort.Strings(names)
- return names
-}
-
-func (m *MemoryBox) Open(path string) (http.File, error) {
- cpath := strings.TrimPrefix(path, "/")
-
- if filepath.Ext(cpath) == "" {
- // it's a directory
- return NewDir(path)
- }
-
- if len(cpath) == 0 {
- cpath = "index.html"
- }
-
- b, err := m.Find(cpath)
- if err != nil {
- return nil, err
- }
-
- cpath = filepath.FromSlash(cpath)
-
- f, err := NewFile(cpath, bytes.NewReader(b))
- if err != nil {
- return nil, err
- }
- return f, nil
-}
-
-func (m *MemoryBox) FindString(path string) (string, error) {
- bb, err := m.Find(path)
- return string(bb), err
-}
-
-func (m *MemoryBox) Find(path string) (ret []byte, e error) {
- res, ok := m.files.Load(path)
- if !ok {
-
- var b []byte
- lpath := strings.ToLower(path)
- err := m.Walk(func(p string, file File) error {
- lp := strings.ToLower(p)
- if lp != lpath {
- return nil
- }
-
- res := file.String()
- b = []byte(res)
- return nil
- })
- if err != nil {
- return b, os.ErrNotExist
- }
- if len(b) == 0 {
- return b, os.ErrNotExist
- }
- return b, nil
- }
- return res, nil
-}
-
-func (m *MemoryBox) AddString(path string, t string) error {
- return m.AddBytes(path, []byte(t))
-}
-
-func (m *MemoryBox) AddBytes(path string, t []byte) error {
- m.files.Store(path, t)
- return nil
-}
-
-func (m *MemoryBox) Walk(wf WalkFunc) error {
- var err error
- m.files.Range(func(path string, b []byte) bool {
- var f File
- f, err = NewFile(path, bytes.NewReader(b))
- if err != nil {
- return false
- }
-
- err = wf(path, f)
- if err != nil {
- if errx.Unwrap(err) == filepath.SkipDir {
- err = nil
- return true
- }
- return false
- }
-
- return true
- })
-
- if errx.Unwrap(err) == filepath.SkipDir {
- return nil
- }
- return err
-}
-
-func (m *MemoryBox) WalkPrefix(pre string, wf WalkFunc) error {
- return m.Walk(func(path string, file File) error {
- if strings.HasPrefix(path, pre) {
- return wf(path, file)
- }
- return nil
- })
-}
-
-func (m *MemoryBox) Remove(path string) {
- m.files.Delete(path)
- m.files.Delete(strings.ToLower(path))
-}
-
-// NewMemoryBox returns a configured *MemoryBox
-func NewMemoryBox() *MemoryBox {
- return &MemoryBox{
- files: &ByteMap{},
- }
-}
diff --git a/vendor/github.com/gobuffalo/packd/skip_walker.go b/vendor/github.com/gobuffalo/packd/skip_walker.go
deleted file mode 100644
index 233c6dd6fb3..00000000000
--- a/vendor/github.com/gobuffalo/packd/skip_walker.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package packd
-
-import (
- "path/filepath"
- "strings"
-)
-
-var CommonSkipPrefixes = []string{".", "_", "node_modules", "vendor"}
-
-// SkipWalker will walk the Walker and call the WalkFunc for files who's directories
-// do no match any of the skipPrefixes. If no skipPrefixes are passed, then
-// CommonSkipPrefixes is used
-func SkipWalker(walker Walker, skipPrefixes []string, wf WalkFunc) error {
- if len(skipPrefixes) == 0 {
- skipPrefixes = append(skipPrefixes, CommonSkipPrefixes...)
- }
- return walker.Walk(func(path string, file File) error {
- fi, err := file.FileInfo()
- if err != nil {
- return err
- }
-
- path = strings.Replace(path, "\\", "/", -1)
-
- parts := strings.Split(path, "/")
- if !fi.IsDir() {
- parts = parts[:len(parts)-1]
- }
-
- for _, base := range parts {
- if base != "." {
- for _, skip := range skipPrefixes {
- skip = strings.ToLower(skip)
- lbase := strings.ToLower(base)
- if strings.HasPrefix(lbase, skip) {
- return filepath.SkipDir
- }
- }
- }
- }
- return wf(path, file)
- })
-}
diff --git a/vendor/github.com/gobuffalo/packd/version.go b/vendor/github.com/gobuffalo/packd/version.go
deleted file mode 100644
index 082aaef297b..00000000000
--- a/vendor/github.com/gobuffalo/packd/version.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package packd
-
-// Version of packd
-const Version = "v0.3.0"
diff --git a/vendor/github.com/gobuffalo/packr/v2/.gometalinter.json b/vendor/github.com/gobuffalo/packr/v2/.gometalinter.json
deleted file mode 100644
index e4f65a36e82..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/.gometalinter.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Enable": ["vet", "golint", "goimports", "deadcode", "gotype", "ineffassign", "misspell", "nakedret", "unconvert", "megacheck", "varcheck"]
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml b/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml
deleted file mode 100644
index 7a57ebbd3b0..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-# Code generated by github.com/gobuffalo/release. DO NOT EDIT.
-# Edit .goreleaser.yml.plush instead
-
-builds:
--
- goos:
- - darwin
- - linux
- - windows
- goarch:
- - ppc64le
- - 386
- - amd64
- env:
- - CGO_ENABLED=0
- ignore:
- - goos: darwin
- goarch: ppc64le
- - goos: windows
- goarch: ppc64le
- main: ./packr2/main.go
- binary: packr2
-
-checksum:
- name_template: 'checksums.txt'
-
-snapshot:
- name_template: "{{ .Tag }}-next"
-
-changelog:
- sort: asc
- filters:
- exclude:
- - '^docs:'
- - '^test:'
-
-brews:
- -
- github:
- owner: gobuffalo
- name: homebrew-tap
-
diff --git a/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml.plush b/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml.plush
deleted file mode 100644
index 6bd6ba9ea77..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/.goreleaser.yml.plush
+++ /dev/null
@@ -1,39 +0,0 @@
-builds:
--
- goos:
- - darwin
- - linux
- - windows
- goarch:
- - ppc64le
- - 386
- - amd64
- env:
- - CGO_ENABLED=0
- ignore:
- - goos: darwin
- goarch: ppc64le
- - goos: windows
- goarch: ppc64le
- main: ./packr2/main.go
- binary: packr2
-
-checksum:
- name_template: 'checksums.txt'
-
-snapshot:
- name_template: "{{ .Tag }}-next"
-
-changelog:
- sort: asc
- filters:
- exclude:
- - '^docs:'
- - '^test:'
-<%= if (brew) { %>
-brews:
- -
- github:
- owner: gobuffalo
- name: homebrew-tap
-<% } %>
diff --git a/vendor/github.com/gobuffalo/packr/v2/LICENSE.txt b/vendor/github.com/gobuffalo/packr/v2/LICENSE.txt
deleted file mode 100644
index 3ccb336a081..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/LICENSE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-The MIT License (MIT)
-Copyright (c) 2016 Mark Bates
-
-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/gobuffalo/packr/v2/Makefile b/vendor/github.com/gobuffalo/packr/v2/Makefile
deleted file mode 100644
index 0c87008a3f5..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-TAGS ?= "sqlite"
-GO_BIN ?= go
-
-install: deps
- echo "installing packr v2"
- packr2
- $(GO_BIN) install -v ./packr2
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
- $(GO_BIN) install -v ./packr2
- make tidy
-
-build: deps
- packr2
- $(GO_BIN) build -v ./packr2
- make tidy
-
-test:
- packr2
- $(GO_BIN) test -tags ${TAGS} ./...
- make tidy
-
-lint:
- gometalinter --vendor ./... --deadline=1m --skip=internal
-
-update:
- $(GO_BIN) get -u -tags ${TAGS} ./...
- make tidy
- make install
- make test
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
-
-release:
- release -y -f version.go
- make tidy
diff --git a/vendor/github.com/gobuffalo/packr/v2/README.md b/vendor/github.com/gobuffalo/packr/v2/README.md
deleted file mode 100644
index cb65f9b84ae..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/README.md
+++ /dev/null
@@ -1,239 +0,0 @@
-**NOTICE: Please consider migrating your projects to github.com/markbates/pkger. It has an idiomatic API, minimal dependencies, a stronger test suite (tested directly against the std lib counterparts), transparent tooling, and more.**
-
-https://blog.gobuffalo.io/introducing-pkger-static-file-embedding-in-go-1ce76dc79c65
-
-# Packr (v2)
-
-[![GoDoc](https://godoc.org/github.com/gobuffalo/packr/v2?status.svg)](https://godoc.org/github.com/gobuffalo/packr/v2)
-
-Packr is a simple solution for bundling static assets inside of Go binaries. Most importantly it does it in a way that is friendly to developers while they are developing.
-
-## Intro Video
-
-To get an idea of the what and why of Packr, please enjoy this short video: [https://vimeo.com/219863271](https://vimeo.com/219863271).
-
-## Library Installation
-
-```text
-$ go get -u github.com/gobuffalo/packr/v2/...
-```
-
-## Binary Installation
-
-```text
-$ go get -u github.com/gobuffalo/packr/v2/packr2
-```
-
-## New File Format FAQs
-
-In version `v2.0.0` the file format changed and is not backward compatible with the `packr-v1.x` library.
-
-#### Can `packr-v1.x` read the new format?
-
-No, it can not. Because of the way the new file format works porting it to `packr-v1.x` would be difficult. PRs are welcome though. :)
-
-#### Can `packr-v2.x` read `packr-v1.x` files?
-
-Yes it can, but that ability will eventually be phased out. Because of that we recommend moving to the new format.
-
-#### Can `packr-v2.x` generate `packr-v1.x` files?
-
-Yes it can, but that ability will eventually be phased out. Because of that we recommend moving to the new format.
-
-The `--legacy` command is available on all commands that generate `-packr.go` files.
-
-```bash
-$ packr2 --legacy
-```
-
-## Usage
-
-### In Code
-
-The first step in using Packr is to create a new box. A box represents a folder on disk. Once you have a box you can get `string` or `[]byte` representations of the file.
-
-```go
-// set up a new box by giving it a name and an optional (relative) path to a folder on disk:
-box := packr.New("My Box", "./templates")
-
-// Get the string representation of a file, or an error if it doesn't exist:
-html, err := box.FindString("index.html")
-
-// Get the []byte representation of a file, or an error if it doesn't exist:
-html, err := box.Find("index.html")
-```
-
-### What is a Box?
-
-A box represents a folder, and any sub-folders, on disk that you want to have access to in your binary. When compiling a binary using the `packr2` CLI the contents of the folder will be converted into Go files that can be compiled inside of a "standard" go binary. Inside of the compiled binary the files will be read from memory. When working locally the files will be read directly off of disk. This is a seamless switch that doesn't require any special attention on your part.
-
-#### Example
-
-Assume the follow directory structure:
-
-```
-├── main.go
-└── templates
- ├── admin
- │ └── index.html
- └── index.html
-```
-
-The following program will read the `./templates/admin/index.html` file and print it out.
-
-```go
-package main
-
-import (
- "fmt"
-
- "github.com/gobuffalo/packr/v2"
-)
-
-func main() {
- box := packr.New("myBox", "./templates")
-
- s, err := box.FindString("admin/index.html")
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(s)
-}
-```
-
-### Development Made Easy
-
-In order to get static files into a Go binary, those files must first be converted to Go code. To do that, Packr, ships with a few tools to help build binaries. See below.
-
-During development, however, it is painful to have to keep running a tool to compile those files.
-
-Packr uses the following resolution rules when looking for a file:
-
-1. Look for the file in-memory (inside a Go binary)
-1. Look for the file on disk (during development)
-
-Because Packr knows how to fall through to the file system, developers don't need to worry about constantly compiling their static files into a binary. They can work unimpeded.
-
-Packr takes file resolution a step further. When declaring a new box you use a relative path, `./templates`. When Packr receives this call it calculates out the absolute path to that directory. By doing this it means you can be guaranteed that Packr can find your files correctly, even if you're not running in the directory that the box was created in. This helps with the problem of testing, where Go changes the `pwd` for each package, making relative paths difficult to work with. This is not a problem when using Packr.
-
----
-
-## Usage with HTTP
-
-A box implements the [`http.FileSystem`](https://golang.org/pkg/net/http/#FileSystem) interface, meaning it can be used to serve static files.
-
-```go
-package main
-
-import (
- "net/http"
-
- "github.com/gobuffalo/packr/v2"
-)
-
-func main() {
- box := packr.New("someBoxName", "./templates")
-
- http.Handle("/", http.FileServer(box))
- http.ListenAndServe(":3000", nil)
-}
-```
-
----
-
-## Building a Binary
-
-Before you build your Go binary, run the `packr2` command first. It will look for all the boxes in your code and then generate `.go` files that pack the static files into bytes that can be bundled into the Go binary.
-
-```
-$ packr2
-```
-
-Then run your `go build command` like normal.
-
-*NOTE*: It is not recommended to check-in these generated `-packr.go` files. They can be large, and can easily become out of date if not careful. It is recommended that you always run `packr2 clean` after running the `packr2` tool.
-
-#### Cleaning Up
-
-When you're done it is recommended that you run the `packr2 clean` command. This will remove all of the generated files that Packr created for you.
-
-```
-$ packr2 clean
-```
-
-Why do you want to do this? Packr first looks to the information stored in these generated files, if the information isn't there it looks to disk. This makes it easy to work with in development.
-
----
-
-## Debugging
-
-The `packr2` command passes all arguments down to the underlying `go` command, this includes the `-v` flag to print out `go build` information. Packr looks for the `-v` flag, and will turn on its own verbose logging. This is very useful for trying to understand what the `packr` command is doing when it is run.
-
----
-
-## FAQ
-
-### Compilation Errors with Go Templates
-
-Q: I have a program with Go template files, those files are named `foo.go` and look like the following:
-
-```
-// Copyright {{.Year}} {{.Author}}. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package {{.Project}}
-```
-
-When I run `packr2` I get errors like:
-
-```
-expected 'IDENT', found '{'
-```
-
-A: Packr works by searching your `.go` files for [`github.com/gobuffalo/packr/v2#New`](https://godoc.org/github.com/gobuffalo/packr/v2#New) or [`github.com/gobuffalo/packr/v2#NewBox`](https://godoc.org/github.com/gobuffalo/packr/v2#NewBox) calls. Because those files aren't "proper" Go files, Packr can't parse them to find the box declarations. To fix this you need to tell Packr to ignore those files when searching for boxes. A couple solutions to this problem are:
-
-* Name the files something else. The `.tmpl` extension is the idiomatic way of naming these types of files.
-* Rename the folder containing these files to start with an `_`, for example `_templates`. Packr, like Go, will ignore folders starting with the `_` character when searching for boxes.
-
-### Dynamic Box Paths
-
-Q: I need to set the path of a box using a variable, but `packr.New("foo", myVar)` doesn't work correctly.
-
-A: Packr attempts to "automagically" set it's resolution directory when using [`github.com/gobuffalo/packr/v2#New`](https://godoc.org/github.com/gobuffalo/packr/v2#New), however, for dynamic paths you need to set it manually:
-
-```go
-box := packr.New("foo", "|")
-box.ResolutionDir = myVar
-```
-
-### I don't want to pack files, but still use the Packr interface.
-
-Q: I want to write code that using the Packr tools, but doesn't actually pack the files into my binary. How can I do that?
-
-A: Using [`github.com/gobuffalo/packr/v2#Folder`](https://godoc.org/github.com/gobuffalo/packr/v2#Folder) gives you back a `*packr.Box` that can be used as normal, but is excluded by the Packr tool when compiling.
-
-### Packr Finds No Boxes
-
-Q: I run `packr2 -v` but it doesn't find my boxes:
-
-```
-DEBU[2019-03-18T18:48:52+01:00] *parser.Parser#NewFromRoots found prospects=0
-DEBU[2019-03-18T18:48:52+01:00] found 0 boxes
-```
-
-A: Packr works by parsing `.go` files to find [`github.com/gobuffalo/packr/v2#Box`](https://godoc.org/github.com/gobuffalo/packr/v2#Box) and [`github.com/gobuffalo/packr/v2#NewBox`](https://godoc.org/github.com/gobuffalo/packr/v2#NewBox) declarations. If there aren't any `.go` in the folder that `packr2` is run in it can not find those declarations. To fix this problem run the `packr2` command in the directory containing your `.go` files.
-
-### Box Interfaces
-
-Q: I want to be able to easily test my applications by passing in mock boxes. How do I do that?
-
-A: Packr boxes and files conform to the interfaces found at [`github.com/gobuffalo/packd`](https://godoc.org/github.com/gobuffalo/packd). Change your application to use those interfaces instead of the concrete Packr types.
-
-```go
-// using concrete type
-func myFunc(box *packr.Box) {}
-
-// using interfaces
-func myFunc(box packd.Box) {}
-```
diff --git a/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md b/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md
deleted file mode 100644
index 2f6f5c022be..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/SHOULDERS.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# /Users/smichalak/dev/packr/v2 Stands on the Shoulders of Giants
-
-/Users/smichalak/dev/packr/v2 does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
-
-* [github.com/gobuffalo/logger](https://godoc.org/github.com/gobuffalo/logger)
-
-* [github.com/gobuffalo/packd](https://godoc.org/github.com/gobuffalo/packd)
-
-* [github.com/karrick/godirwalk](https://godoc.org/github.com/karrick/godirwalk)
-
-* [github.com/konsorten/go-windows-terminal-sequences](https://godoc.org/github.com/konsorten/go-windows-terminal-sequences)
-
-* [github.com/markbates/errx](https://godoc.org/github.com/markbates/errx)
-
-* [github.com/markbates/oncer](https://godoc.org/github.com/markbates/oncer)
-
-* [github.com/markbates/safe](https://godoc.org/github.com/markbates/safe)
-
-* [github.com/rogpeppe/go-internal](https://godoc.org/github.com/rogpeppe/go-internal)
-
-* [github.com/sirupsen/logrus](https://godoc.org/github.com/sirupsen/logrus)
-
-* [github.com/spf13/cobra](https://godoc.org/github.com/spf13/cobra)
-
-* [github.com/stretchr/testify](https://godoc.org/github.com/stretchr/testify)
-
-* [golang.org/x/sync](https://godoc.org/golang.org/x/sync)
-
-* [golang.org/x/tools](https://godoc.org/golang.org/x/tools)
diff --git a/vendor/github.com/gobuffalo/packr/v2/box.go b/vendor/github.com/gobuffalo/packr/v2/box.go
deleted file mode 100644
index a2636dee494..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/box.go
+++ /dev/null
@@ -1,240 +0,0 @@
-package packr
-
-import (
- "bytes"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
- "os"
- "path"
- "path/filepath"
- "sort"
- "strings"
-
- "github.com/gobuffalo/packd"
- "github.com/gobuffalo/packr/v2/file"
- "github.com/gobuffalo/packr/v2/file/resolver"
- "github.com/gobuffalo/packr/v2/plog"
- "github.com/markbates/oncer"
-)
-
-var _ packd.Box = &Box{}
-var _ packd.HTTPBox = &Box{}
-var _ packd.Addable = &Box{}
-var _ packd.Walkable = &Box{}
-var _ packd.Finder = &Box{}
-
-// Box represent a folder on a disk you want to
-// have access to in the built Go binary.
-type Box struct {
- Path string `json:"path"`
- Name string `json:"name"`
- ResolutionDir string `json:"resolution_dir"`
- DefaultResolver resolver.Resolver `json:"default_resolver"`
- resolvers resolversMap
- dirs dirsMap
-}
-
-// NewBox returns a Box that can be used to
-// retrieve files from either disk or the embedded
-// binary.
-// Deprecated: Use New instead.
-func NewBox(path string) *Box {
- oncer.Deprecate(0, "packr.NewBox", "Use packr.New instead.")
- return New(path, path)
-}
-
-// New returns a new Box with the name of the box
-// and the path of the box.
-func New(name string, path string) *Box {
- plog.Debug("packr", "New", "name", name, "path", path)
- b, _ := findBox(name)
- if b != nil {
- return b
- }
-
- b = construct(name, path)
- plog.Debug(b, "New", "Box", b, "ResolutionDir", b.ResolutionDir)
- b, err := placeBox(b)
- if err != nil {
- panic(err)
- }
-
- return b
-}
-
-// Folder returns a Box that will NOT be packed.
-// This is useful for writing tests or tools that
-// need to work with a folder at runtime.
-func Folder(path string) *Box {
- return New(path, path)
-}
-
-// SetResolver allows for the use of a custom resolver for
-// the specified file
-func (b *Box) SetResolver(file string, res resolver.Resolver) {
- d := filepath.Dir(file)
- b.dirs.Store(d, true)
- plog.Debug(b, "SetResolver", "file", file, "resolver", fmt.Sprintf("%T", res))
- b.resolvers.Store(resolver.Key(file), res)
-}
-
-// AddString converts t to a byteslice and delegates to AddBytes to add to b.data
-func (b *Box) AddString(path string, t string) error {
- return b.AddBytes(path, []byte(t))
-}
-
-// AddBytes sets t in b.data by the given path
-func (b *Box) AddBytes(path string, t []byte) error {
- m := map[string]file.File{}
- f, err := file.NewFile(path, t)
- if err != nil {
- return err
- }
- m[resolver.Key(path)] = f
- res := resolver.NewInMemory(m)
- b.SetResolver(path, res)
- return nil
-}
-
-// FindString returns either the string of the requested
-// file or an error if it can not be found.
-func (b *Box) FindString(name string) (string, error) {
- bb, err := b.Find(name)
- return string(bb), err
-}
-
-// Find returns either the byte slice of the requested
-// file or an error if it can not be found.
-func (b *Box) Find(name string) ([]byte, error) {
- f, err := b.Resolve(name)
- if err != nil {
- return []byte(""), err
- }
- bb := &bytes.Buffer{}
- io.Copy(bb, f)
- return bb.Bytes(), nil
-}
-
-// Has returns true if the resource exists in the box
-func (b *Box) Has(name string) bool {
- _, err := b.Find(name)
- return err == nil
-}
-
-// HasDir returns true if the directory exists in the box
-func (b *Box) HasDir(name string) bool {
- oncer.Do("packr2/box/HasDir"+b.Name, func() {
- for _, f := range b.List() {
- for d := filepath.Dir(f); d != "."; d = filepath.Dir(d) {
- b.dirs.Store(d, true)
- }
- }
- })
- if name == "/" {
- return b.Has("index.html")
- }
- _, ok := b.dirs.Load(name)
- return ok
-}
-
-// Open returns a File using the http.File interface
-func (b *Box) Open(name string) (http.File, error) {
- plog.Debug(b, "Open", "name", name)
- f, err := b.Resolve(name)
- if err != nil {
- if len(filepath.Ext(name)) == 0 {
- return b.openWoExt(name)
- }
- return f, err
- }
- f, err = file.NewFileR(name, f)
- plog.Debug(b, "Open", "name", f.Name(), "file", f.Name())
- return f, err
-}
-
-func (b *Box) openWoExt(name string) (http.File, error) {
- if !b.HasDir(name) {
- id := path.Join(name, "index.html")
- if b.Has(id) {
- return b.Open(id)
- }
- return nil, os.ErrNotExist
- }
- d, err := file.NewDir(name)
- plog.Debug(b, "Open", "name", name, "dir", d)
- return d, err
-}
-
-// List shows "What's in the box?"
-func (b *Box) List() []string {
- var keys []string
-
- b.Walk(func(path string, info File) error {
- if info == nil {
- return nil
- }
- finfo, _ := info.FileInfo()
- if !finfo.IsDir() {
- keys = append(keys, path)
- }
- return nil
- })
- sort.Strings(keys)
- return keys
-}
-
-// Resolve will attempt to find the file in the box,
-// returning an error if the find can not be found.
-func (b *Box) Resolve(key string) (file.File, error) {
- key = strings.TrimPrefix(key, "/")
-
- var r resolver.Resolver
-
- b.resolvers.Range(func(k string, vr resolver.Resolver) bool {
- lk := strings.ToLower(resolver.Key(k))
- lkey := strings.ToLower(resolver.Key(key))
- if lk == lkey {
- r = vr
- return false
- }
- return true
- })
-
- if r == nil {
- r = b.DefaultResolver
- if r == nil {
- r = resolver.DefaultResolver
- if r == nil {
- return nil, fmt.Errorf("resolver.DefaultResolver is nil")
- }
- }
- }
- plog.Debug(r, "Resolve", "box", b.Name, "key", key)
-
- f, err := r.Resolve(b.Name, key)
- if err != nil {
- z, err := resolver.ResolvePathInBase(resolver.OsPath(b.ResolutionDir), filepath.FromSlash(path.Clean("/"+resolver.OsPath(key))))
- if err != nil {
- plog.Debug(r, "Resolve", "box", b.Name, "key", key, "err", err)
- return f, err
- }
-
- f, err = r.Resolve(b.Name, z)
- if err != nil {
- plog.Debug(r, "Resolve", "box", b.Name, "key", z, "err", err)
- return f, err
- }
- b, err := ioutil.ReadAll(f)
- if err != nil {
- return f, err
- }
- f, err = file.NewFile(key, b)
- if err != nil {
- return f, err
- }
- }
- plog.Debug(r, "Resolve", "box", b.Name, "key", key, "file", f.Name())
- return f, nil
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/box_map.go b/vendor/github.com/gobuffalo/packr/v2/box_map.go
deleted file mode 100644
index aafeffa1d3c..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/box_map.go
+++ /dev/null
@@ -1,73 +0,0 @@
-//go:generate mapgen -name "box" -zero "nil" -go-type "*Box" -pkg "" -a "New(`test-a`, ``)" -b "New(`test-b`, ``)" -c "New(`test-c`, ``)" -bb "New(`test-bb`, ``)" -destination "packr"
-// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT.
-
-package packr
-
-import (
- "sort"
- "sync"
-)
-
-// boxMap wraps sync.Map and uses the following types:
-// key: string
-// value: *Box
-type boxMap struct {
- data sync.Map
-}
-
-// Delete the key from the map
-func (m *boxMap) Delete(key string) {
- m.data.Delete(key)
-}
-
-// Load the key from the map.
-// Returns *Box or bool.
-// A false return indicates either the key was not found
-// or the value is not of type *Box
-func (m *boxMap) Load(key string) (*Box, bool) {
- i, ok := m.data.Load(key)
- if !ok {
- return nil, false
- }
- s, ok := i.(*Box)
- return s, ok
-}
-
-// LoadOrStore will return an existing key or
-// store the value if not already in the map
-func (m *boxMap) LoadOrStore(key string, value *Box) (*Box, bool) {
- i, _ := m.data.LoadOrStore(key, value)
- s, ok := i.(*Box)
- return s, ok
-}
-
-// Range over the *Box values in the map
-func (m *boxMap) Range(f func(key string, value *Box) bool) {
- m.data.Range(func(k, v interface{}) bool {
- key, ok := k.(string)
- if !ok {
- return false
- }
- value, ok := v.(*Box)
- if !ok {
- return false
- }
- return f(key, value)
- })
-}
-
-// Store a *Box in the map
-func (m *boxMap) Store(key string, value *Box) {
- m.data.Store(key, value)
-}
-
-// Keys returns a list of keys in the map
-func (m *boxMap) Keys() []string {
- var keys []string
- m.Range(func(key string, value *Box) bool {
- keys = append(keys, key)
- return true
- })
- sort.Strings(keys)
- return keys
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/deprecated.go b/vendor/github.com/gobuffalo/packr/v2/deprecated.go
deleted file mode 100644
index 0da220181ce..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/deprecated.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package packr
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/gobuffalo/packr/v2/file"
- "github.com/gobuffalo/packr/v2/file/resolver"
- "github.com/markbates/oncer"
-)
-
-// File has been deprecated and file.File should be used instead
-type File = file.File
-
-var (
- // ErrResOutsideBox gets returned in case of the requested resources being outside the box
- // Deprecated
- ErrResOutsideBox = fmt.Errorf("can't find a resource outside the box")
-)
-
-// PackBytes packs bytes for a file into a box.
-// Deprecated
-func PackBytes(box string, name string, bb []byte) {
- b := NewBox(box)
- d := resolver.NewInMemory(map[string]file.File{})
- f, err := file.NewFile(name, bb)
- if err != nil {
- panic(err)
- }
- if err := d.Pack(name, f); err != nil {
- panic(err)
- }
- b.SetResolver(name, d)
-}
-
-// PackBytesGzip packets the gzipped compressed bytes into a box.
-// Deprecated
-func PackBytesGzip(box string, name string, bb []byte) error {
- // TODO: this function never did what it was supposed to do!
- PackBytes(box, name, bb)
- return nil
-}
-
-// PackJSONBytes packs JSON encoded bytes for a file into a box.
-// Deprecated
-func PackJSONBytes(box string, name string, jbb string) error {
- var bb []byte
- err := json.Unmarshal([]byte(jbb), &bb)
- if err != nil {
- return err
- }
- PackBytes(box, name, bb)
- return nil
-}
-
-// Bytes is deprecated. Use Find instead
-func (b *Box) Bytes(name string) []byte {
- bb, _ := b.Find(name)
- oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.Bytes", "Use github.com/gobuffalo/packr/v2#Box.Find instead.")
- return bb
-}
-
-// MustBytes is deprecated. Use Find instead.
-func (b *Box) MustBytes(name string) ([]byte, error) {
- oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.MustBytes", "Use github.com/gobuffalo/packr/v2#Box.Find instead.")
- return b.Find(name)
-}
-
-// String is deprecated. Use FindString instead
-func (b *Box) String(name string) string {
- oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.String", "Use github.com/gobuffalo/packr/v2#Box.FindString instead.")
- return string(b.Bytes(name))
-}
-
-// MustString is deprecated. Use FindString instead
-func (b *Box) MustString(name string) (string, error) {
- oncer.Deprecate(0, "github.com/gobuffalo/packr/v2#Box.MustString", "Use github.com/gobuffalo/packr/v2#Box.FindString instead.")
- return b.FindString(name)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/dirs_map.go b/vendor/github.com/gobuffalo/packr/v2/dirs_map.go
deleted file mode 100644
index 9e649139952..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/dirs_map.go
+++ /dev/null
@@ -1,82 +0,0 @@
-//go:generate mapgen -name "dirs" -zero "false" -go-type "bool" -pkg "" -a "nil" -b "nil" -c "nil" -bb "nil" -destination "packr"
-// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT.
-
-package packr
-
-import (
- "sort"
- "strings"
- "sync"
-)
-
-// dirsMap wraps sync.Map and uses the following types:
-// key: string
-// value: bool
-type dirsMap struct {
- data sync.Map
-}
-
-// Delete the key from the map
-func (m *dirsMap) Delete(key string) {
- m.data.Delete(m.normalizeKey(key))
-}
-
-// Load the key from the map.
-// Returns bool or bool.
-// A false return indicates either the key was not found
-// or the value is not of type bool
-func (m *dirsMap) Load(key string) (bool, bool) {
- i, ok := m.data.Load(m.normalizeKey(key))
- if !ok {
- return false, false
- }
- s, ok := i.(bool)
- return s, ok
-}
-
-// LoadOrStore will return an existing key or
-// store the value if not already in the map
-func (m *dirsMap) LoadOrStore(key string, value bool) (bool, bool) {
- i, _ := m.data.LoadOrStore(m.normalizeKey(key), value)
- s, ok := i.(bool)
- return s, ok
-}
-
-// Range over the bool values in the map
-func (m *dirsMap) Range(f func(key string, value bool) bool) {
- m.data.Range(func(k, v interface{}) bool {
- key, ok := k.(string)
- if !ok {
- return false
- }
- value, ok := v.(bool)
- if !ok {
- return false
- }
- return f(key, value)
- })
-}
-
-// Store a bool in the map
-func (m *dirsMap) Store(key string, value bool) {
- d := m.normalizeKey(key)
- m.data.Store(d, value)
- m.data.Store(strings.TrimPrefix(d, "/"), value)
-}
-
-// Keys returns a list of keys in the map
-func (m *dirsMap) Keys() []string {
- var keys []string
- m.Range(func(key string, value bool) bool {
- keys = append(keys, key)
- return true
- })
- sort.Strings(keys)
- return keys
-}
-
-func (m *dirsMap) normalizeKey(key string) string {
- key = strings.Replace(key, "\\", "/", -1)
-
- return key
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/file.go b/vendor/github.com/gobuffalo/packr/v2/file/file.go
deleted file mode 100644
index bef50c8dd12..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/file.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package file
-
-import (
- "bytes"
- "io"
-
- "github.com/gobuffalo/packd"
-)
-
-// File represents a virtual, or physical, backing of
-// a file object in a Box
-type File = packd.File
-
-// FileMappable types are capable of returning a map of
-// path => File
-type FileMappable interface {
- FileMap() map[string]File
-}
-
-// NewFile returns a virtual File implementation
-func NewFile(name string, b []byte) (File, error) {
- return packd.NewFile(name, bytes.NewReader(b))
-}
-
-// NewDir returns a virtual dir implementation
-func NewDir(name string) (File, error) {
- return packd.NewDir(name)
-}
-
-func NewFileR(name string, r io.Reader) (File, error) {
- return packd.NewFile(name, r)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/info.go b/vendor/github.com/gobuffalo/packr/v2/file/info.go
deleted file mode 100644
index 90acb8c2150..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/info.go
+++ /dev/null
@@ -1,38 +0,0 @@
-package file
-
-import (
- "os"
- "time"
-)
-
-type info struct {
- Path string
- Contents []byte
- size int64
- modTime time.Time
- isDir bool
-}
-
-func (f info) Name() string {
- return f.Path
-}
-
-func (f info) Size() int64 {
- return f.size
-}
-
-func (f info) Mode() os.FileMode {
- return 0444
-}
-
-func (f info) ModTime() time.Time {
- return f.modTime
-}
-
-func (f info) IsDir() bool {
- return f.isDir
-}
-
-func (f info) Sys() interface{} {
- return nil
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/disk.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/disk.go
deleted file mode 100644
index 8c3c1e707e3..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/disk.go
+++ /dev/null
@@ -1,111 +0,0 @@
-package resolver
-
-import (
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- "sync"
-
- "github.com/gobuffalo/packr/v2/file"
- "github.com/gobuffalo/packr/v2/plog"
- "github.com/karrick/godirwalk"
-)
-
-var _ Resolver = &Disk{}
-
-type Disk struct {
- Root string
-}
-
-func (d Disk) String() string {
- return String(&d)
-}
-
-func (d *Disk) Resolve(box string, name string) (file.File, error) {
- var err error
- path := OsPath(name)
- if !filepath.IsAbs(path) {
- path, err = ResolvePathInBase(OsPath(d.Root), path)
- if err != nil {
- return nil, err
- }
- }
-
- fi, err := os.Stat(path)
- if err != nil {
- return nil, err
- }
- if fi.IsDir() {
- return nil, os.ErrNotExist
- }
- if bb, err := ioutil.ReadFile(path); err == nil {
- return file.NewFile(OsPath(name), bb)
- }
- return nil, os.ErrNotExist
-}
-
-// ResolvePathInBase returns a path that is guaranteed to be inside of the base directory or an error
-func ResolvePathInBase(base, path string) (string, error) {
- // Determine the absolute file path of the base directory
- d, err := filepath.Abs(base)
- if err != nil {
- return "", err
- }
-
- // Return the base directory if no file was requested
- if path == "/" || path == "\\" {
- return d, nil
- }
-
- // Resolve the absolute file path after combining the key with base
- p, err := filepath.Abs(filepath.Join(d, path))
- if err != nil {
- return "", err
- }
-
- // Verify that the resolved path is inside of the base directory
- if !strings.HasPrefix(p, d+string(filepath.Separator)) {
- return "", os.ErrNotExist
- }
- return p, nil
-}
-
-var _ file.FileMappable = &Disk{}
-
-func (d *Disk) FileMap() map[string]file.File {
- moot := &sync.Mutex{}
- m := map[string]file.File{}
- root := OsPath(d.Root)
- if _, err := os.Stat(root); err != nil {
- return m
- }
- callback := func(path string, de *godirwalk.Dirent) error {
- if _, err := os.Stat(root); err != nil {
- return nil
- }
- if !de.IsRegular() {
- return nil
- }
- moot.Lock()
- name := strings.TrimPrefix(path, root+string(filepath.Separator))
- b, err := ioutil.ReadFile(path)
- if err != nil {
- return err
- }
- m[name], err = file.NewFile(name, b)
- if err != nil {
- return err
- }
- moot.Unlock()
- return nil
- }
- err := godirwalk.Walk(root, &godirwalk.Options{
- FollowSymbolicLinks: true,
- Callback: callback,
- })
- if err != nil {
- plog.Logger.Errorf("[%s] error walking %v", root, err)
- }
- return m
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/encoding/hex/hex.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/encoding/hex/hex.go
deleted file mode 100644
index f4fda4e18e3..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/encoding/hex/hex.go
+++ /dev/null
@@ -1,314 +0,0 @@
-// Copyright 2009 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 hex implements hexadecimal encoding and decoding.
-package hex
-
-import (
- "bytes"
- "fmt"
- "io"
-)
-
-const hextable = "0123456789abcdef"
-
-// EncodedLen returns the length of an encoding of n source bytes.
-// Specifically, it returns n * 2.
-func EncodedLen(n int) int { return n * 2 }
-
-// Encode encodes src into EncodedLen(len(src))
-// bytes of dst. As a convenience, it returns the number
-// of bytes written to dst, but this value is always EncodedLen(len(src)).
-// Encode implements hexadecimal encoding.
-func Encode(dst, src []byte) int {
- for i, v := range src {
- dst[i*2] = hextable[v>>4]
- dst[i*2+1] = hextable[v&0x0f]
- }
-
- return len(src) * 2
-}
-
-// ErrLength reports an attempt to decode an odd-length input
-// using Decode or DecodeString.
-// The stream-based Decoder returns io.ErrUnexpectedEOF instead of ErrLength.
-var ErrLength = fmt.Errorf("encoding/hex: odd length hex string")
-
-// InvalidByteError values describe errors resulting from an invalid byte in a hex string.
-type InvalidByteError byte
-
-func (e InvalidByteError) Error() string {
- return fmt.Sprintf("encoding/hex: invalid byte: %#U", rune(e))
-}
-
-// DecodedLen returns the length of a decoding of x source bytes.
-// Specifically, it returns x / 2.
-func DecodedLen(x int) int { return x / 2 }
-
-// Decode decodes src into DecodedLen(len(src)) bytes,
-// returning the actual number of bytes written to dst.
-//
-// Decode expects that src contains only hexadecimal
-// characters and that src has even length.
-// If the input is malformed, Decode returns the number
-// of bytes decoded before the error.
-func Decode(dst, src []byte) (int, error) {
- var i int
- for i = 0; i < len(src)/2; i++ {
- a, ok := fromHexChar(src[i*2])
- if !ok {
- return i, InvalidByteError(src[i*2])
- }
- b, ok := fromHexChar(src[i*2+1])
- if !ok {
- return i, InvalidByteError(src[i*2+1])
- }
- dst[i] = (a << 4) | b
- }
- if len(src)%2 == 1 {
- // Check for invalid char before reporting bad length,
- // since the invalid char (if present) is an earlier problem.
- if _, ok := fromHexChar(src[i*2]); !ok {
- return i, InvalidByteError(src[i*2])
- }
- return i, ErrLength
- }
- return i, nil
-}
-
-// fromHexChar converts a hex character into its value and a success flag.
-func fromHexChar(c byte) (byte, bool) {
- switch {
- case '0' <= c && c <= '9':
- return c - '0', true
- case 'a' <= c && c <= 'f':
- return c - 'a' + 10, true
- case 'A' <= c && c <= 'F':
- return c - 'A' + 10, true
- }
-
- return 0, false
-}
-
-// EncodeToString returns the hexadecimal encoding of src.
-func EncodeToString(src []byte) string {
- dst := make([]byte, EncodedLen(len(src)))
- Encode(dst, src)
- return string(dst)
-}
-
-// DecodeString returns the bytes represented by the hexadecimal string s.
-//
-// DecodeString expects that src contains only hexadecimal
-// characters and that src has even length.
-// If the input is malformed, DecodeString returns
-// the bytes decoded before the error.
-func DecodeString(s string) ([]byte, error) {
- src := []byte(s)
- // We can use the source slice itself as the destination
- // because the decode loop increments by one and then the 'seen' byte is not used anymore.
- n, err := Decode(src, src)
- return src[:n], err
-}
-
-// Dump returns a string that contains a hex dump of the given data. The format
-// of the hex dump matches the output of `hexdump -C` on the command line.
-func Dump(data []byte) string {
- var buf bytes.Buffer
- dumper := Dumper(&buf)
- dumper.Write(data)
- dumper.Close()
- return buf.String()
-}
-
-// bufferSize is the number of hexadecimal characters to buffer in encoder and decoder.
-const bufferSize = 1024
-
-type encoder struct {
- w io.Writer
- err error
- out [bufferSize]byte // output buffer
-}
-
-// NewEncoder returns an io.Writer that writes lowercase hexadecimal characters to w.
-func NewEncoder(w io.Writer) io.Writer {
- return &encoder{w: w}
-}
-
-func (e *encoder) Write(p []byte) (n int, err error) {
- for len(p) > 0 && e.err == nil {
- chunkSize := bufferSize / 2
- if len(p) < chunkSize {
- chunkSize = len(p)
- }
-
- var written int
- encoded := Encode(e.out[:], p[:chunkSize])
- written, e.err = e.w.Write(e.out[:encoded])
- n += written / 2
- p = p[chunkSize:]
- }
- return n, e.err
-}
-
-type decoder struct {
- r io.Reader
- err error
- in []byte // input buffer (encoded form)
- arr [bufferSize]byte // backing array for in
-}
-
-// NewDecoder returns an io.Reader that decodes hexadecimal characters from r.
-// NewDecoder expects that r contain only an even number of hexadecimal characters.
-func NewDecoder(r io.Reader) io.Reader {
- return &decoder{r: r}
-}
-
-func (d *decoder) Read(p []byte) (n int, err error) {
- // Fill internal buffer with sufficient bytes to decode
- if len(d.in) < 2 && d.err == nil {
- var numCopy, numRead int
- numCopy = copy(d.arr[:], d.in) // Copies either 0 or 1 bytes
- numRead, d.err = d.r.Read(d.arr[numCopy:])
- d.in = d.arr[:numCopy+numRead]
- if d.err == io.EOF && len(d.in)%2 != 0 {
- if _, ok := fromHexChar(d.in[len(d.in)-1]); !ok {
- d.err = InvalidByteError(d.in[len(d.in)-1])
- } else {
- d.err = io.ErrUnexpectedEOF
- }
- }
- }
-
- // Decode internal buffer into output buffer
- if numAvail := len(d.in) / 2; len(p) > numAvail {
- p = p[:numAvail]
- }
- numDec, err := Decode(p, d.in[:len(p)*2])
- d.in = d.in[2*numDec:]
- if err != nil {
- d.in, d.err = nil, err // Decode error; discard input remainder
- }
-
- if len(d.in) < 2 {
- return numDec, d.err // Only expose errors when buffer fully consumed
- }
- return numDec, nil
-}
-
-// Dumper returns a WriteCloser that writes a hex dump of all written data to
-// w. The format of the dump matches the output of `hexdump -C` on the command
-// line.
-func Dumper(w io.Writer) io.WriteCloser {
- return &dumper{w: w}
-}
-
-type dumper struct {
- w io.Writer
- rightChars [18]byte
- buf [14]byte
- used int // number of bytes in the current line
- n uint // number of bytes, total
- closed bool
-}
-
-func toChar(b byte) byte {
- if b < 32 || b > 126 {
- return '.'
- }
- return b
-}
-
-func (h *dumper) Write(data []byte) (n int, err error) {
- if h.closed {
- return 0, fmt.Errorf("encoding/hex: dumper closed")
- }
-
- // Output lines look like:
- // 00000010 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d |./0123456789:;<=|
- // ^ offset ^ extra space ^ ASCII of line.
- for i := range data {
- if h.used == 0 {
- // At the beginning of a line we print the current
- // offset in hex.
- h.buf[0] = byte(h.n >> 24)
- h.buf[1] = byte(h.n >> 16)
- h.buf[2] = byte(h.n >> 8)
- h.buf[3] = byte(h.n)
- Encode(h.buf[4:], h.buf[:4])
- h.buf[12] = ' '
- h.buf[13] = ' '
- _, err = h.w.Write(h.buf[4:])
- if err != nil {
- return
- }
- }
- Encode(h.buf[:], data[i:i+1])
- h.buf[2] = ' '
- l := 3
- if h.used == 7 {
- // There's an additional space after the 8th byte.
- h.buf[3] = ' '
- l = 4
- } else if h.used == 15 {
- // At the end of the line there's an extra space and
- // the bar for the right column.
- h.buf[3] = ' '
- h.buf[4] = '|'
- l = 5
- }
- _, err = h.w.Write(h.buf[:l])
- if err != nil {
- return
- }
- n++
- h.rightChars[h.used] = toChar(data[i])
- h.used++
- h.n++
- if h.used == 16 {
- h.rightChars[16] = '|'
- h.rightChars[17] = '\n'
- _, err = h.w.Write(h.rightChars[:])
- if err != nil {
- return
- }
- h.used = 0
- }
- }
- return
-}
-
-func (h *dumper) Close() (err error) {
- // See the comments in Write() for the details of this format.
- if h.closed {
- return
- }
- h.closed = true
- if h.used == 0 {
- return
- }
- h.buf[0] = ' '
- h.buf[1] = ' '
- h.buf[2] = ' '
- h.buf[3] = ' '
- h.buf[4] = '|'
- nBytes := h.used
- for h.used < 16 {
- l := 3
- if h.used == 7 {
- l = 4
- } else if h.used == 15 {
- l = 5
- }
- _, err = h.w.Write(h.buf[:l])
- if err != nil {
- return
- }
- h.used++
- }
- h.rightChars[nBytes] = '|'
- h.rightChars[nBytes+1] = '\n'
- _, err = h.w.Write(h.rightChars[:nBytes+2])
- return
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/hex_gzip.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/hex_gzip.go
deleted file mode 100644
index b72de0ef73f..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/hex_gzip.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package resolver
-
-import (
- "bytes"
- "compress/gzip"
- "io"
- "io/ioutil"
- "os"
- "strings"
- "sync"
-
- "github.com/gobuffalo/packr/v2/file/resolver/encoding/hex"
- "github.com/gobuffalo/packr/v2/plog"
-
- "github.com/gobuffalo/packr/v2/file"
-)
-
-var _ Resolver = &HexGzip{}
-
-type HexGzip struct {
- packed map[string]string
- unpacked map[string]string
- moot *sync.RWMutex
-}
-
-func (hg HexGzip) String() string {
- return String(&hg)
-}
-
-var _ file.FileMappable = &HexGzip{}
-
-func (hg *HexGzip) FileMap() map[string]file.File {
- hg.moot.RLock()
- var names []string
- for k := range hg.packed {
- names = append(names, k)
- }
- hg.moot.RUnlock()
- m := map[string]file.File{}
- for _, n := range names {
- if f, err := hg.Resolve("", n); err == nil {
- m[n] = f
- }
- }
- return m
-}
-
-func (hg *HexGzip) Resolve(box string, name string) (file.File, error) {
- plog.Debug(hg, "Resolve", "box", box, "name", name)
- hg.moot.Lock()
- defer hg.moot.Unlock()
-
- if s, ok := hg.unpacked[name]; ok {
- return file.NewFile(name, []byte(s))
- }
- packed, ok := hg.packed[name]
- if !ok {
- return nil, os.ErrNotExist
- }
-
- unpacked, err := UnHexGzipString(packed)
- if err != nil {
- return nil, err
- }
-
- f, err := file.NewFile(OsPath(name), []byte(unpacked))
- if err != nil {
- return nil, err
- }
- hg.unpacked[name] = f.String()
- return f, nil
-}
-
-func NewHexGzip(files map[string]string) (*HexGzip, error) {
- if files == nil {
- files = map[string]string{}
- }
-
- hg := &HexGzip{
- packed: files,
- unpacked: map[string]string{},
- moot: &sync.RWMutex{},
- }
-
- return hg, nil
-}
-
-func HexGzipString(s string) (string, error) {
- bb := &bytes.Buffer{}
- enc := hex.NewEncoder(bb)
- zw := gzip.NewWriter(enc)
- io.Copy(zw, strings.NewReader(s))
- zw.Close()
-
- return bb.String(), nil
-}
-
-func UnHexGzipString(packed string) (string, error) {
- br := bytes.NewBufferString(packed)
- dec := hex.NewDecoder(br)
- zr, err := gzip.NewReader(dec)
- if err != nil {
- return "", err
- }
- defer zr.Close()
-
- b, err := ioutil.ReadAll(zr)
- if err != nil {
- return "", err
- }
- return string(b), nil
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/ident.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/ident.go
deleted file mode 100644
index 0b90d1f4d35..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/ident.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package resolver
-
-import (
- "path/filepath"
- "runtime"
- "strings"
-)
-
-func Key(s string) string {
- s = strings.Replace(s, "\\", "/", -1)
- return s
-}
-
-func OsPath(s string) string {
- if runtime.GOOS == "windows" {
- s = strings.Replace(s, "/", string(filepath.Separator), -1)
- } else {
- s = strings.Replace(s, "\\", string(filepath.Separator), -1)
- }
- return s
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/in_memory.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/in_memory.go
deleted file mode 100644
index 9b11a4e87df..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/in_memory.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package resolver
-
-import (
- "io/ioutil"
-
- "github.com/gobuffalo/packd"
- "github.com/gobuffalo/packr/v2/file"
- "github.com/gobuffalo/packr/v2/plog"
-)
-
-var _ Resolver = &InMemory{}
-
-type InMemory struct {
- *packd.MemoryBox
-}
-
-func (d InMemory) String() string {
- return String(&d)
-}
-
-func (d *InMemory) Resolve(box string, name string) (file.File, error) {
- b, err := d.MemoryBox.Find(name)
- if err != nil {
- return nil, err
- }
- return file.NewFile(name, b)
-}
-
-func (d *InMemory) Pack(name string, f file.File) error {
- plog.Debug(d, "Pack", "name", name)
- b, err := ioutil.ReadAll(f)
- if err != nil {
- return err
- }
- d.AddBytes(name, b)
- return nil
-}
-
-func (d *InMemory) FileMap() map[string]file.File {
- m := map[string]file.File{}
- d.Walk(func(path string, file file.File) error {
- m[path] = file
- return nil
- })
- return m
-}
-
-func NewInMemory(files map[string]file.File) *InMemory {
- if files == nil {
- files = map[string]file.File{}
- }
- box := packd.NewMemoryBox()
-
- for p, f := range files {
- if b, err := ioutil.ReadAll(f); err == nil {
- box.AddBytes(p, b)
- }
- }
-
- return &InMemory{
- MemoryBox: box,
- }
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/packable.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/packable.go
deleted file mode 100644
index ee551fcc0c7..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/packable.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package resolver
-
-import "github.com/gobuffalo/packr/v2/file"
-
-type Packable interface {
- Pack(name string, f file.File) error
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/file/resolver/resolver.go b/vendor/github.com/gobuffalo/packr/v2/file/resolver/resolver.go
deleted file mode 100644
index 8b00397ab1c..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/file/resolver/resolver.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package resolver
-
-import (
- "encoding/json"
- "fmt"
- "os"
-
- "github.com/gobuffalo/packr/v2/file"
-)
-
-type Resolver interface {
- Resolve(string, string) (file.File, error)
-}
-
-func defaultResolver() Resolver {
- pwd, _ := os.Getwd()
- return &Disk{
- Root: pwd,
- }
-}
-
-var DefaultResolver = defaultResolver()
-
-func String(r Resolver) string {
- m := map[string]interface{}{
- "name": fmt.Sprintf("%T", r),
- }
- if fm, ok := r.(file.FileMappable); ok {
- m["files"] = fm
- }
- b, _ := json.Marshal(m)
- return string(b)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/helpers.go b/vendor/github.com/gobuffalo/packr/v2/helpers.go
deleted file mode 100644
index 70dd07adf09..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/helpers.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package packr
-
-import (
- "os"
- "path/filepath"
- "runtime"
- "strings"
-
- "github.com/gobuffalo/packr/v2/plog"
-)
-
-func construct(name string, path string) *Box {
- return &Box{
- Path: path,
- Name: name,
- ResolutionDir: resolutionDir(path),
- resolvers: resolversMap{},
- dirs: dirsMap{},
- }
-}
-
-func resolutionDirTestFilename(filename, og string) (string, bool) {
- ng := filepath.Join(filepath.Dir(filename), og)
-
- // // this little hack courtesy of the `-cover` flag!!
- cov := filepath.Join("_test", "_obj_test")
- ng = strings.Replace(ng, string(filepath.Separator)+cov, "", 1)
-
- if resolutionDirExists(ng, og) {
- return ng, true
- }
-
- ng = filepath.Join(os.Getenv("GOPATH"), "src", ng)
- if resolutionDirExists(ng, og) {
- return ng, true
- }
-
- return og, false
-}
-
-func resolutionDirExists(s, og string) bool {
- _, err := os.Stat(s)
- if err != nil {
- return false
- }
- plog.Debug("packr", "resolutionDir", "original", og, "resolved", s)
- return true
-}
-
-func resolutionDir(og string) string {
- ng, _ := filepath.Abs(og)
-
- if resolutionDirExists(ng, og) {
- return ng
- }
-
- // packr.New
- _, filename, _, _ := runtime.Caller(3)
- ng, ok := resolutionDirTestFilename(filename, og)
- if ok {
- return ng
- }
-
- // packr.NewBox (deprecated)
- _, filename, _, _ = runtime.Caller(4)
- ng, ok = resolutionDirTestFilename(filename, og)
- if ok {
- return ng
- }
-
- return og
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/args.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/args.go
deleted file mode 100644
index 00ee164c7e4..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/args.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package parser
-
-import (
- "encoding/json"
- "fmt"
-)
-
-// FromArgs is useful when writing packr store-cmd binaries.
-/*
- package main
-
- import (
- "log"
- "os"
-
- "github.com/gobuffalo/packr/v2/jam/parser"
- "github.com/markbates/s3packr/s3packr"
- )
-
- func main() {
- err := parser.FromArgs(os.Args[1:], func(boxes parser.Boxes) error {
- for _, box := range boxes {
- s3 := s3packr.New(box)
- if err := s3.Pack(box); err != nil {
- return err
- }
- }
- return nil
- })
-
- if err != nil {
- log.Fatal(err)
- }
- }
-*/
-func FromArgs(args []string, fn func(Boxes) error) error {
- if len(args) == 0 {
- return fmt.Errorf("you must supply a payload")
- }
- payload := args[0]
- if len(payload) == 0 {
- return fmt.Errorf("you must supply a payload")
- }
-
- var boxes Boxes
- err := json.Unmarshal([]byte(payload), &boxes)
- if err != nil {
- return err
- }
-
- return fn(boxes)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/box.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/box.go
deleted file mode 100644
index b2941912738..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/box.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package parser
-
-import (
- "encoding/json"
- "os"
- "strings"
-)
-
-// Box found while parsing a file
-type Box struct {
- Name string // name of the box
- Path string // relative path of folder NewBox("./templates")
- AbsPath string // absolute path of Path
- Package string // the package name the box was found in
- PWD string // the PWD when the parser was run
- PackageDir string // the absolute path of the package where the box was found
-}
-
-type Boxes []*Box
-
-// String - json returned
-func (b Box) String() string {
- x, _ := json.Marshal(b)
- return string(x)
-}
-
-// NewBox stub from the name and the path provided
-func NewBox(name string, path string) *Box {
- if len(name) == 0 {
- name = path
- }
- name = strings.Replace(name, "\"", "", -1)
- pwd, _ := os.Getwd()
- box := &Box{
- Name: name,
- Path: path,
- PWD: pwd,
- }
- return box
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/file.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/file.go
deleted file mode 100644
index 3bf49cd0a41..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/file.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package parser
-
-import (
- "bytes"
- "io"
- "io/ioutil"
- "path/filepath"
-)
-
-// File that is to be parsed
-type File struct {
- io.Reader
- Path string
- AbsPath string
-}
-
-// Name of the file "app.go"
-func (f File) Name() string {
- return f.Path
-}
-
-// String returns the contents of the reader
-func (f *File) String() string {
- src, _ := ioutil.ReadAll(f)
- f.Reader = bytes.NewReader(src)
- return string(src)
-}
-
-func (s *File) Write(p []byte) (int, error) {
- bb := &bytes.Buffer{}
- i, err := bb.Write(p)
- s.Reader = bb
- return i, err
-}
-
-// NewFile takes the name of the file you want to
-// write to and a reader to reader from
-func NewFile(path string, r io.Reader) *File {
- if r == nil {
- r = &bytes.Buffer{}
- }
- if seek, ok := r.(io.Seeker); ok {
- seek.Seek(0, 0)
- }
- abs := path
- if !filepath.IsAbs(path) {
- abs, _ = filepath.Abs(path)
- }
- return &File{
- Reader: r,
- Path: path,
- AbsPath: abs,
- }
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/finder.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/finder.go
deleted file mode 100644
index 2ad808ea555..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/finder.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package parser
-
-import (
- "fmt"
- "go/build"
- "os"
- "path/filepath"
- "strings"
- "time"
-
- "github.com/gobuffalo/packr/v2/plog"
- "github.com/karrick/godirwalk"
- "github.com/markbates/errx"
- "github.com/markbates/oncer"
-)
-
-type finder struct {
- id time.Time
-}
-
-func (fd *finder) key(m, dir string) string {
- return fmt.Sprintf("%s-*parser.finder#%s-%s", fd.id, m, dir)
-}
-
-// findAllGoFiles *.go files for a given diretory
-func (fd *finder) findAllGoFiles(dir string) ([]string, error) {
- var err error
- var names []string
- oncer.Do(fd.key("findAllGoFiles", dir), func() {
- plog.Debug(fd, "findAllGoFiles", "dir", dir)
-
- callback := func(path string, do *godirwalk.Dirent) error {
- ext := filepath.Ext(path)
- if ext != ".go" {
- return nil
- }
- //check if path is a dir
- fi, err := os.Stat(path)
- if err != nil {
- return nil
- }
-
- if fi.IsDir() {
- return nil
- }
-
- names = append(names, path)
- return nil
- }
- err = godirwalk.Walk(dir, &godirwalk.Options{
- FollowSymbolicLinks: true,
- Callback: callback,
- })
- })
-
- return names, err
-}
-
-func (fd *finder) findAllGoFilesImports(dir string) ([]string, error) {
- var err error
- var names []string
- oncer.Do(fd.key("findAllGoFilesImports", dir), func() {
- ctx := build.Default
-
- if len(ctx.SrcDirs()) == 0 {
- err = fmt.Errorf("no src directories found")
- return
- }
-
- pkg, err := ctx.ImportDir(dir, 0)
- if strings.HasPrefix(pkg.ImportPath, "github.com/gobuffalo/packr") {
- return
- }
-
- if err != nil {
- if !strings.Contains(err.Error(), "cannot find package") {
- if _, ok := errx.Unwrap(err).(*build.NoGoError); !ok {
- err = err
- return
- }
- }
- }
-
- if pkg.Goroot {
- return
- }
- if len(pkg.GoFiles) <= 0 {
- return
- }
-
- plog.Debug(fd, "findAllGoFilesImports", "dir", dir)
-
- names, _ = fd.findAllGoFiles(dir)
- for _, n := range pkg.GoFiles {
- names = append(names, filepath.Join(pkg.Dir, n))
- }
- for _, imp := range pkg.Imports {
- if len(ctx.SrcDirs()) == 0 {
- continue
- }
- d := ctx.SrcDirs()[len(ctx.SrcDirs())-1]
- ip := filepath.Join(d, imp)
- n, err := fd.findAllGoFilesImports(ip)
- if err != nil && len(n) != 0 {
- names = n
- return
- }
- names = append(names, n...)
- }
- })
- return names, err
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/gogen.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/gogen.go
deleted file mode 100644
index 5ba95de18e4..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/gogen.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package parser
-
-import (
- "go/ast"
- "go/parser"
- "go/token"
- "io"
- "strings"
-
- "github.com/gobuffalo/packd"
- "github.com/markbates/errx"
-)
-
-// ParsedFile ...
-type ParsedFile struct {
- File packd.SimpleFile
- FileSet *token.FileSet
- Ast *ast.File
- Lines []string
-}
-
-// ParseFileMode ...
-func ParseFileMode(gf packd.SimpleFile, mode parser.Mode) (ParsedFile, error) {
- pf := ParsedFile{
- FileSet: token.NewFileSet(),
- File: gf,
- }
-
- src := gf.String()
- f, err := parser.ParseFile(pf.FileSet, gf.Name(), src, mode)
- if err != nil && errx.Unwrap(err) != io.EOF {
- return pf, err
- }
- pf.Ast = f
-
- pf.Lines = strings.Split(src, "\n")
- return pf, nil
-}
-
-// ParseFile ...
-func ParseFile(gf packd.SimpleFile) (ParsedFile, error) {
- return ParseFileMode(gf, 0)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/parser.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/parser.go
deleted file mode 100644
index fd5681d38d4..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/parser.go
+++ /dev/null
@@ -1,46 +0,0 @@
-package parser
-
-import (
- "os"
- "sort"
- "strings"
-
- "github.com/gobuffalo/packr/v2/plog"
-)
-
-// Parser to find boxes
-type Parser struct {
- Prospects []*File // a list of files to check for boxes
- IgnoreImports bool
-}
-
-// Run the parser and run any boxes found
-func (p *Parser) Run() (Boxes, error) {
- var boxes Boxes
- for _, pros := range p.Prospects {
- plog.Debug(p, "Run", "parsing", pros.Name())
- v := NewVisitor(pros)
- pbr, err := v.Run()
- if err != nil {
- return boxes, err
- }
- for _, b := range pbr {
- plog.Debug(p, "Run", "file", pros.Name(), "box", b.Name)
- boxes = append(boxes, b)
- }
- }
-
- pwd, _ := os.Getwd()
- sort.Slice(boxes, func(a, b int) bool {
- b1 := boxes[a]
- return !strings.HasPrefix(b1.AbsPath, pwd)
- })
- return boxes, nil
-}
-
-// New Parser from a list of File
-func New(prospects ...*File) *Parser {
- return &Parser{
- Prospects: prospects,
- }
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/prospect.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/prospect.go
deleted file mode 100644
index 652db5b3fe5..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/prospect.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package parser
-
-import (
- "os"
- "path/filepath"
- "strings"
-
- "github.com/gobuffalo/packr/v2/file/resolver"
- "github.com/gobuffalo/packr/v2/plog"
-)
-
-var DefaultIgnoredFolders = []string{".", "_", "vendor", "node_modules", "_fixtures", "testdata"}
-
-func IsProspect(path string, ignore ...string) (status bool) {
- // plog.Debug("parser", "IsProspect", "path", path, "ignore", ignore)
- defer func() {
- if status {
- plog.Debug("parser", "IsProspect (TRUE)", "path", path, "status", status)
- }
- }()
- if path == "." {
- return true
- }
-
- ext := filepath.Ext(path)
- dir := filepath.Dir(path)
-
- fi, _ := os.Stat(path)
- if fi != nil {
- if fi.IsDir() {
- dir = filepath.Base(path)
- } else {
- if len(ext) > 0 {
- dir = filepath.Base(filepath.Dir(path))
- }
- }
- }
-
- path = strings.ToLower(path)
- dir = strings.ToLower(dir)
-
- if strings.HasSuffix(path, "-packr.go") {
- return false
- }
-
- if strings.HasSuffix(path, "_test.go") {
- return false
- }
-
- ignore = append(ignore, DefaultIgnoredFolders...)
- for i, x := range ignore {
- ignore[i] = strings.TrimSpace(strings.ToLower(x))
- }
-
- parts := strings.Split(resolver.OsPath(path), string(filepath.Separator))
- if len(parts) == 0 {
- return false
- }
-
- for _, i := range ignore {
- for _, p := range parts {
- if strings.HasPrefix(p, i) {
- return false
- }
- }
- }
-
- un := filepath.Base(path)
- if len(ext) != 0 {
- un = filepath.Base(filepath.Dir(path))
- }
- if strings.HasPrefix(un, "_") {
- return false
- }
-
- return ext == ".go"
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/roots.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/roots.go
deleted file mode 100644
index a5501822587..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/roots.go
+++ /dev/null
@@ -1,89 +0,0 @@
-package parser
-
-import (
- "bytes"
- "encoding/json"
- "io/ioutil"
- "os"
- "path/filepath"
- "time"
-
- "github.com/gobuffalo/packr/v2/plog"
- "github.com/karrick/godirwalk"
-)
-
-type RootsOptions struct {
- IgnoreImports bool
- Ignores []string
-}
-
-func (r RootsOptions) String() string {
- x, _ := json.Marshal(r)
- return string(x)
-}
-
-// NewFromRoots scans the file roots provided and returns a
-// new Parser containing the prospects
-func NewFromRoots(roots []string, opts *RootsOptions) (*Parser, error) {
- if opts == nil {
- opts = &RootsOptions{}
- }
-
- if len(roots) == 0 {
- pwd, _ := os.Getwd()
- roots = append(roots, pwd)
- }
- p := New()
- plog.Debug(p, "NewFromRoots", "roots", roots, "options", opts)
- callback := func(path string, de *godirwalk.Dirent) error {
- if IsProspect(path, opts.Ignores...) {
- if de.IsDir() {
- return nil
- }
- roots = append(roots, path)
- return nil
- }
- if de.IsDir() {
- return filepath.SkipDir
- }
- return nil
- }
- wopts := &godirwalk.Options{
- FollowSymbolicLinks: true,
- Callback: callback,
- }
- for _, root := range roots {
- plog.Debug(p, "NewFromRoots", "walking", root)
- err := godirwalk.Walk(root, wopts)
- if err != nil {
- return p, err
- }
- }
-
- dd := map[string]string{}
- fd := &finder{id: time.Now()}
- for _, r := range roots {
- var names []string
- if opts.IgnoreImports {
- names, _ = fd.findAllGoFiles(r)
- } else {
- names, _ = fd.findAllGoFilesImports(r)
- }
- for _, n := range names {
- if IsProspect(n) {
- plog.Debug(p, "NewFromRoots", "mapping", n)
- dd[n] = n
- }
- }
- }
- for path := range dd {
- plog.Debug(p, "NewFromRoots", "reading file", path)
- b, err := ioutil.ReadFile(path)
- if err != nil {
- return nil, err
- }
- p.Prospects = append(p.Prospects, NewFile(path, bytes.NewReader(b)))
- }
- plog.Debug(p, "NewFromRoots", "found prospects", len(p.Prospects))
- return p, nil
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go b/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go
deleted file mode 100644
index d41ac498bb6..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/jam/parser/visitor.go
+++ /dev/null
@@ -1,324 +0,0 @@
-package parser
-
-import (
- "fmt"
- "go/ast"
- "os"
- "path/filepath"
- "sort"
- "strings"
-
- "github.com/gobuffalo/packd"
-)
-
-type Visitor struct {
- File packd.SimpleFile
- Package string
- boxes map[string]*Box
- errors []error
-}
-
-func NewVisitor(f *File) *Visitor {
- return &Visitor{
- File: f,
- boxes: map[string]*Box{},
- errors: []error{},
- }
-}
-
-func (v *Visitor) Run() (Boxes, error) {
- var boxes Boxes
- pf, err := ParseFile(v.File)
- if err != nil {
- return boxes, err
- }
-
- v.Package = pf.Ast.Name.Name
- ast.Walk(v, pf.Ast)
-
- for _, vb := range v.boxes {
- boxes = append(boxes, vb)
- }
-
- sort.Slice(boxes, func(i, j int) bool {
- return boxes[i].Name < boxes[j].Name
- })
-
- if len(v.errors) > 0 {
- s := make([]string, len(v.errors))
- for i, e := range v.errors {
- s[i] = e.Error()
- }
- return boxes, err
- }
- return boxes, nil
-}
-
-func (v *Visitor) Visit(node ast.Node) ast.Visitor {
- if node == nil {
- return v
- }
- if err := v.eval(node); err != nil {
- v.errors = append(v.errors, err)
- }
-
- return v
-}
-
-func (v *Visitor) eval(node ast.Node) error {
- switch t := node.(type) {
- case *ast.CallExpr:
- return v.evalExpr(t)
- case *ast.Ident:
- return v.evalIdent(t)
- case *ast.GenDecl:
- for _, n := range t.Specs {
- if err := v.eval(n); err != nil {
- return err
- }
- }
- case *ast.FuncDecl:
- if t.Body == nil {
- return nil
- }
- for _, b := range t.Body.List {
- if err := v.evalStmt(b); err != nil {
- return err
- }
- }
- return nil
- case *ast.ValueSpec:
- for _, e := range t.Values {
- if err := v.evalExpr(e); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func (v *Visitor) evalStmt(stmt ast.Stmt) error {
- switch t := stmt.(type) {
- case *ast.ExprStmt:
- return v.evalExpr(t.X)
- case *ast.AssignStmt:
- for _, e := range t.Rhs {
- if err := v.evalArgs(e); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func (v *Visitor) evalExpr(expr ast.Expr) error {
- switch t := expr.(type) {
- case *ast.CallExpr:
- if t.Fun == nil {
- return nil
- }
- for _, a := range t.Args {
- switch at := a.(type) {
- case *ast.CallExpr:
- if sel, ok := t.Fun.(*ast.SelectorExpr); ok {
- return v.evalSelector(at, sel)
- }
-
- if err := v.evalArgs(at); err != nil {
- return err
- }
- case *ast.CompositeLit:
- for _, e := range at.Elts {
- if err := v.evalExpr(e); err != nil {
- return err
- }
- }
- }
- }
- if ft, ok := t.Fun.(*ast.SelectorExpr); ok {
- return v.evalSelector(t, ft)
- }
- case *ast.KeyValueExpr:
- return v.evalExpr(t.Value)
- }
- return nil
-}
-
-func (v *Visitor) evalArgs(expr ast.Expr) error {
- switch at := expr.(type) {
- case *ast.CompositeLit:
- for _, e := range at.Elts {
- if err := v.evalExpr(e); err != nil {
- return err
- }
- }
- case *ast.CallExpr:
- if at.Fun == nil {
- return nil
- }
- switch st := at.Fun.(type) {
- case *ast.SelectorExpr:
- if err := v.evalSelector(at, st); err != nil {
- return err
- }
- case *ast.Ident:
- return v.evalIdent(st)
- }
- for _, a := range at.Args {
- if err := v.evalArgs(a); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func (v *Visitor) evalSelector(expr *ast.CallExpr, sel *ast.SelectorExpr) error {
- x, ok := sel.X.(*ast.Ident)
- if !ok {
- return nil
- }
- if x.Name == "packr" {
- switch sel.Sel.Name {
- case "New":
- if len(expr.Args) != 2 {
- return fmt.Errorf("`New` requires two arguments")
- }
-
- zz := func(e ast.Expr) (string, error) {
- switch at := e.(type) {
- case *ast.Ident:
- switch at.Obj.Kind {
- case ast.Var:
- if as, ok := at.Obj.Decl.(*ast.AssignStmt); ok {
- return v.fromVariable(as)
- }
- case ast.Con:
- if vs, ok := at.Obj.Decl.(*ast.ValueSpec); ok {
- return v.fromConstant(vs)
- }
- }
- return "", v.evalIdent(at)
- case *ast.BasicLit:
- return at.Value, nil
- case *ast.CallExpr:
- return "", v.evalExpr(at)
- }
- return "", fmt.Errorf("can't handle %T", e)
- }
-
- k1, err := zz(expr.Args[0])
- if err != nil {
- return err
- }
- k2, err := zz(expr.Args[1])
- if err != nil {
- return err
- }
- v.addBox(k1, k2)
-
- return nil
- case "NewBox":
- for _, e := range expr.Args {
- switch at := e.(type) {
- case *ast.Ident:
- switch at.Obj.Kind {
- case ast.Var:
- if as, ok := at.Obj.Decl.(*ast.AssignStmt); ok {
- v.addVariable("", as)
- }
- case ast.Con:
- if vs, ok := at.Obj.Decl.(*ast.ValueSpec); ok {
- v.addConstant("", vs)
- }
- }
- return v.evalIdent(at)
- case *ast.BasicLit:
- v.addBox("", at.Value)
- case *ast.CallExpr:
- return v.evalExpr(at)
- }
- }
- }
- }
-
- return nil
-}
-
-func (v *Visitor) evalIdent(i *ast.Ident) error {
- if i.Obj == nil {
- return nil
- }
- if s, ok := i.Obj.Decl.(*ast.AssignStmt); ok {
- return v.evalStmt(s)
- }
- return nil
-}
-
-func (v *Visitor) addBox(name string, path string) {
- if len(name) == 0 {
- name = path
- }
- name = strings.Replace(name, "\"", "", -1)
- path = strings.Replace(path, "\"", "", -1)
- abs := path
- if _, ok := v.boxes[name]; !ok {
- box := NewBox(name, path)
- box.Package = v.Package
-
- pd := filepath.Dir(v.File.Name())
- pwd, _ := os.Getwd()
- if !filepath.IsAbs(pd) {
- pd = filepath.Join(pwd, pd)
- }
- box.PackageDir = pd
-
- if !filepath.IsAbs(abs) {
- abs = filepath.Join(pd, abs)
- }
- box.AbsPath = abs
- v.boxes[name] = box
- }
-}
-func (v *Visitor) fromVariable(as *ast.AssignStmt) (string, error) {
- if len(as.Rhs) == 1 {
- if bs, ok := as.Rhs[0].(*ast.BasicLit); ok {
- return bs.Value, nil
- }
- }
- return "", fmt.Errorf("unable to find value from variable %v", as)
-}
-
-func (v *Visitor) addVariable(bn string, as *ast.AssignStmt) error {
- bv, err := v.fromVariable(as)
- if err != nil {
- return nil
- }
- if len(bn) == 0 {
- bn = bv
- }
- v.addBox(bn, bv)
- return nil
-}
-
-func (v *Visitor) fromConstant(vs *ast.ValueSpec) (string, error) {
- if len(vs.Values) == 1 {
- if bs, ok := vs.Values[0].(*ast.BasicLit); ok {
- return bs.Value, nil
- }
- }
- return "", fmt.Errorf("unable to find value from constant %v", vs)
-}
-
-func (v *Visitor) addConstant(bn string, vs *ast.ValueSpec) error {
- if len(vs.Values) == 1 {
- if bs, ok := vs.Values[0].(*ast.BasicLit); ok {
- bv := bs.Value
- if len(bn) == 0 {
- bn = bv
- }
- v.addBox(bn, bv)
- }
- }
- return nil
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/packr.go b/vendor/github.com/gobuffalo/packr/v2/packr.go
deleted file mode 100644
index f0f88f12fec..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/packr.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package packr
-
-import (
- "fmt"
-
- "github.com/gobuffalo/packr/v2/file/resolver"
- "github.com/gobuffalo/packr/v2/jam/parser"
- "github.com/gobuffalo/packr/v2/plog"
- "github.com/markbates/safe"
-)
-
-var boxes = &boxMap{}
-
-var _ = safe.Run(func() {
- p, err := parser.NewFromRoots([]string{}, nil)
- if err != nil {
- plog.Logger.Error(err)
- return
- }
- boxes, err := p.Run()
- if err != nil {
- plog.Logger.Error(err)
- return
- }
- for _, box := range boxes {
- b := construct(box.Name, box.AbsPath)
- _, err = placeBox(b)
- if err != nil {
- plog.Logger.Error(err)
- return
- }
- }
-
-})
-
-func findBox(name string) (*Box, error) {
- key := resolver.Key(name)
- plog.Debug("packr", "findBox", "name", name, "key", key)
-
- b, ok := boxes.Load(key)
- if !ok {
- plog.Debug("packr", "findBox", "name", name, "key", key, "found", ok)
- return nil, fmt.Errorf("could not find box %s", name)
- }
-
- plog.Debug(b, "found", "box", b)
- return b, nil
-}
-
-func placeBox(b *Box) (*Box, error) {
- key := resolver.Key(b.Name)
- eb, _ := boxes.LoadOrStore(key, b)
-
- plog.Debug("packr", "placeBox", "name", eb.Name, "path", eb.Path, "resolution directory", eb.ResolutionDir)
- return eb, nil
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/plog/plog.go b/vendor/github.com/gobuffalo/packr/v2/plog/plog.go
deleted file mode 100644
index 8b1eec10900..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/plog/plog.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package plog
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/gobuffalo/logger"
- "github.com/sirupsen/logrus"
-)
-
-var Logger = logger.New(logger.ErrorLevel)
-
-func Debug(t interface{}, m string, args ...interface{}) {
- if len(args)%2 == 1 {
- args = append(args, "")
- }
- f := logrus.Fields{}
- for i := 0; i < len(args); i += 2 {
- k := fmt.Sprint(args[i])
- v := args[i+1]
- if s, ok := v.(fmt.Stringer); ok {
- f[k] = s.String()
- continue
- }
- if s, ok := v.(string); ok {
- f[k] = s
- continue
- }
- if b, err := json.Marshal(v); err == nil {
- f[k] = string(b)
- continue
- }
- f[k] = v
- }
- e := Logger.WithFields(f)
- if s, ok := t.(string); ok {
- e.Debugf("%s#%s", s, m)
- return
- }
- e.Debugf("%T#%s", t, m)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/pointer.go b/vendor/github.com/gobuffalo/packr/v2/pointer.go
deleted file mode 100644
index 6e839dc1ac3..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/pointer.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package packr
-
-import (
- "github.com/gobuffalo/packr/v2/file"
- "github.com/gobuffalo/packr/v2/file/resolver"
- "github.com/gobuffalo/packr/v2/plog"
-)
-
-// Pointer is a resolvr which resolves
-// a file from a different box.
-type Pointer struct {
- ForwardBox string
- ForwardPath string
-}
-
-var _ resolver.Resolver = Pointer{}
-
-// Resolve attempts to find the file in the specific box
-// with the specified key
-func (p Pointer) Resolve(box string, path string) (file.File, error) {
- plog.Debug(p, "Resolve", "box", box, "path", path, "forward-box", p.ForwardBox, "forward-path", p.ForwardPath)
- b, err := findBox(p.ForwardBox)
- if err != nil {
- return nil, err
- }
- f, err := b.Resolve(p.ForwardPath)
- if err != nil {
- return f, err
- }
- plog.Debug(p, "Resolve", "box", box, "path", path, "file", f)
- return file.NewFileR(path, f)
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/resolvers_map.go b/vendor/github.com/gobuffalo/packr/v2/resolvers_map.go
deleted file mode 100644
index 24a04267169..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/resolvers_map.go
+++ /dev/null
@@ -1,75 +0,0 @@
-//go:generate mapgen -name "resolvers" -zero "nil" -go-type "resolver.Resolver" -pkg "" -a "nil" -b "nil" -c "nil" -bb "nil" -destination "packr"
-// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT.
-
-package packr
-
-import (
- "sort"
- "sync"
-
- "github.com/gobuffalo/packr/v2/file/resolver"
-)
-
-// resolversMap wraps sync.Map and uses the following types:
-// key: string
-// value: resolver.Resolver
-type resolversMap struct {
- data sync.Map
-}
-
-// Delete the key from the map
-func (m *resolversMap) Delete(key string) {
- m.data.Delete(key)
-}
-
-// Load the key from the map.
-// Returns resolver.Resolver or bool.
-// A false return indicates either the key was not found
-// or the value is not of type resolver.Resolver
-func (m *resolversMap) Load(key string) (resolver.Resolver, bool) {
- i, ok := m.data.Load(key)
- if !ok {
- return nil, false
- }
- s, ok := i.(resolver.Resolver)
- return s, ok
-}
-
-// LoadOrStore will return an existing key or
-// store the value if not already in the map
-func (m *resolversMap) LoadOrStore(key string, value resolver.Resolver) (resolver.Resolver, bool) {
- i, _ := m.data.LoadOrStore(key, value)
- s, ok := i.(resolver.Resolver)
- return s, ok
-}
-
-// Range over the resolver.Resolver values in the map
-func (m *resolversMap) Range(f func(key string, value resolver.Resolver) bool) {
- m.data.Range(func(k, v interface{}) bool {
- key, ok := k.(string)
- if !ok {
- return false
- }
- value, ok := v.(resolver.Resolver)
- if !ok {
- return false
- }
- return f(key, value)
- })
-}
-
-// Store a resolver.Resolver in the map
-func (m *resolversMap) Store(key string, value resolver.Resolver) {
- m.data.Store(key, value)
-}
-
-// Keys returns a list of keys in the map
-func (m *resolversMap) Keys() []string {
- var keys []string
- m.Range(func(key string, value resolver.Resolver) bool {
- keys = append(keys, key)
- return true
- })
- sort.Strings(keys)
- return keys
-}
diff --git a/vendor/github.com/gobuffalo/packr/v2/version.go b/vendor/github.com/gobuffalo/packr/v2/version.go
deleted file mode 100644
index 58e00655613..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/version.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package packr
-
-// Version of Packr
-const Version = "v2.8.1"
diff --git a/vendor/github.com/gobuffalo/packr/v2/walk.go b/vendor/github.com/gobuffalo/packr/v2/walk.go
deleted file mode 100644
index 514631c26af..00000000000
--- a/vendor/github.com/gobuffalo/packr/v2/walk.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package packr
-
-import (
- "sort"
- "strings"
-
- "github.com/gobuffalo/packd"
- "github.com/gobuffalo/packr/v2/file"
- "github.com/gobuffalo/packr/v2/file/resolver"
- "github.com/gobuffalo/packr/v2/plog"
-)
-
-// WalkFunc is used to walk a box
-type WalkFunc = packd.WalkFunc
-
-// Walk will traverse the box and call the WalkFunc for each file in the box/folder.
-func (b *Box) Walk(wf WalkFunc) error {
- m := map[string]file.File{}
-
- dr := b.DefaultResolver
- if dr == nil {
- cd := resolver.OsPath(b.ResolutionDir)
- dr = &resolver.Disk{Root: cd}
- }
- if fm, ok := dr.(file.FileMappable); ok {
- for n, f := range fm.FileMap() {
- m[n] = f
- }
- }
- var err error
- b.resolvers.Range(func(n string, r resolver.Resolver) bool {
- var f file.File
- f, err = r.Resolve("", n)
- if err != nil {
- return false
- }
- keep := true
- for k := range m {
- if strings.EqualFold(k, n) {
- keep = false
- }
- }
- if keep {
- m[n] = f
- }
- return true
- })
- if err != nil {
- return err
- }
-
- var keys = make([]string, 0, len(m))
- for k := range m {
- keys = append(keys, k)
- }
- sort.Strings(keys)
-
- for _, k := range keys {
- osPath := resolver.OsPath(k)
- plog.Debug(b, "Walk", "path", k, "osPath", osPath)
- if err := wf(osPath, m[k]); err != nil {
- return err
- }
- }
- return nil
-}
-
-// WalkPrefix will call box.Walk and call the WalkFunc when it finds paths that have a matching prefix
-func (b *Box) WalkPrefix(prefix string, wf WalkFunc) error {
- ipref := resolver.OsPath(prefix)
- return b.Walk(func(path string, f File) error {
- ipath := resolver.OsPath(path)
- if strings.HasPrefix(ipath, ipref) {
- if err := wf(path, f); err != nil {
- return err
- }
- }
- return nil
- })
-}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/.dockerignore b/vendor/github.com/golang-migrate/migrate/v4/.dockerignore
index df33687f971..f12dc01d311 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/.dockerignore
+++ b/vendor/github.com/golang-migrate/migrate/v4/.dockerignore
@@ -2,7 +2,6 @@
FAQ.md
README.md
LICENSE
-Makefile
.gitignore
.travis.yml
CONTRIBUTING.md
diff --git a/vendor/github.com/golang-migrate/migrate/v4/.gitignore b/vendor/github.com/golang-migrate/migrate/v4/.gitignore
index 00b92cb3377..23b56045c6e 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/.gitignore
+++ b/vendor/github.com/golang-migrate/migrate/v4/.gitignore
@@ -4,4 +4,7 @@ cli/cli
cli/migrate
.coverage
.godoc.pid
-vendor/
\ No newline at end of file
+vendor/
+.vscode/
+.idea
+dist/
diff --git a/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml b/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml
index 2d4d89158b6..916eb75c70e 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml
+++ b/vendor/github.com/golang-migrate/migrate/v4/.golangci.yml
@@ -1,6 +1,6 @@
run:
# timeout for analysis, e.g. 30s, 5m, default is 1m
- deadline: 2m
+ timeout: 5m
linters:
enable:
#- golint
diff --git a/vendor/github.com/golang-migrate/migrate/v4/.goreleaser.yml b/vendor/github.com/golang-migrate/migrate/v4/.goreleaser.yml
new file mode 100644
index 00000000000..faef0d37329
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/.goreleaser.yml
@@ -0,0 +1,98 @@
+project_name: migrate
+before:
+ hooks:
+ - go mod tidy
+builds:
+ - env:
+ - CGO_ENABLED=0
+ goos:
+ - linux
+ - windows
+ - darwin
+ goarch:
+ - amd64
+ - arm
+ - arm64
+ - 386
+ goarm:
+ - 7
+ main: ./cmd/migrate
+ ldflags:
+ - '-w -s -X main.Version={{ .Version }} -extldflags "static"'
+ flags:
+ - "-tags={{ .Env.DATABASE }} {{ .Env.SOURCE }}"
+ - "-trimpath"
+nfpms:
+ - homepage: "https://github.com/golang-migrate/migrate"
+ maintainer: "dhui@users.noreply.github.com"
+ license: MIT
+ description: "Database migrations"
+ formats:
+ - deb
+ file_name_template: "{{ .ProjectName }}.{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
+dockers:
+ - goos: linux
+ goarch: amd64
+ dockerfile: Dockerfile.github-actions
+ use: buildx
+ ids:
+ - migrate
+ image_templates:
+ - 'migrate/migrate:{{ .Tag }}-amd64'
+ build_flag_templates:
+ - '--label=org.opencontainers.image.created={{ .Date }}'
+ - '--label=org.opencontainers.image.title={{ .ProjectName }}'
+ - '--label=org.opencontainers.image.revision={{ .FullCommit }}'
+ - '--label=org.opencontainers.image.version={{ .Version }}'
+ - "--label=org.opencontainers.image.source={{ .GitURL }}"
+ - "--platform=linux/amd64"
+ - goos: linux
+ goarch: arm64
+ dockerfile: Dockerfile.github-actions
+ use: buildx
+ ids:
+ - migrate
+ image_templates:
+ - 'migrate/migrate:{{ .Tag }}-arm64'
+ build_flag_templates:
+ - '--label=org.opencontainers.image.created={{ .Date }}'
+ - '--label=org.opencontainers.image.title={{ .ProjectName }}'
+ - '--label=org.opencontainers.image.revision={{ .FullCommit }}'
+ - '--label=org.opencontainers.image.version={{ .Version }}'
+ - "--label=org.opencontainers.image.source={{ .GitURL }}"
+ - "--platform=linux/arm64"
+
+docker_manifests:
+- name_template: 'migrate/migrate:{{ .Tag }}'
+ image_templates:
+ - 'migrate/migrate:{{ .Tag }}-amd64'
+ - 'migrate/migrate:{{ .Tag }}-arm64'
+- name_template: 'migrate/migrate:{{ .Major }}'
+ image_templates:
+ - 'migrate/migrate:{{ .Tag }}-amd64'
+ - 'migrate/migrate:{{ .Tag }}-arm64'
+- name_template: 'migrate/migrate:latest'
+ image_templates:
+ - 'migrate/migrate:{{ .Tag }}-amd64'
+ - 'migrate/migrate:{{ .Tag }}-arm64'
+archives:
+ - name_template: "{{ .ProjectName }}.{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
+ format_overrides:
+ - goos: windows
+ format: zip
+checksum:
+ name_template: 'sha256sum.txt'
+release:
+ draft: true
+changelog:
+ skip: false
+ sort: asc
+ filters:
+ exclude:
+ - '^docs:'
+ - '^test:'
+ - Merge pull request
+ - Merge branch
+ - go mod tidy
+snapshot:
+ name_template: "{{ .Tag }}-next"
\ No newline at end of file
diff --git a/vendor/github.com/golang-migrate/migrate/v4/.travis.yml b/vendor/github.com/golang-migrate/migrate/v4/.travis.yml
index 3a3ee81799e..fdaea8cbd83 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/.travis.yml
+++ b/vendor/github.com/golang-migrate/migrate/v4/.travis.yml
@@ -6,8 +6,8 @@ matrix:
- go: master
include:
# Supported versions of Go: https://golang.org/dl/
- - go: "1.11.x"
- - go: "1.12.x"
+ - go: "1.14.x"
+ - go: "1.15.x"
- go: master
go_import_path: github.com/golang-migrate/migrate
@@ -26,8 +26,15 @@ cache:
directories:
- $GOPATH/pkg
+
before_install:
- - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.16.0
+ # Update docker to latest version: https://docs.travis-ci.com/user/docker/#installing-a-newer-docker-version
+ - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
+ - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
+ - sudo apt-get update
+ - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
+ # Install golangci-lint
+ - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.30.0
- echo "TRAVIS_GO_VERSION=${TRAVIS_GO_VERSION}"
install:
@@ -50,13 +57,16 @@ deploy:
secure: hWH1HLPpzpfA8pXQ93T1qKQVFSpQp0as/JLQ7D91jHuJ8p+RxVeqblDrR6HQY/95R/nyiE9GJmvUolSuw5h449LSrGxPtVWhdh6EnkxlQHlen5XeMhVjRjFV0sE9qGe8v7uAkiTfRO61ktTWHrEAvw5qpyqnNISodmZS78XIasPODQbNlzwINhWhDTHIjXGb4FpizYaL3OGCanrxfR9fQyCaqKGGBjRq3Mfq8U6Yd4mApmsE+uJxgaZV8K5zBqpkSzQRWhcVGNL5DuLsU3gfSJOo7kZeA2G71SHffH577dBoqtCZ4VFv169CoUZehLWCb+7XKJZmHXVujCURATSySLGUOPc6EoLFAn3YtsCA04mS4bZVo5FZPWVwfhjmkhtDR4f6wscKp7r1HsFHSOgm59QfETQdrn4MnZ44H2Jd39axqndn5DvK9EcZVjPHynOPnueXP2u6mTuUgh2VyyWBCDO3CNo0fGlo7VJI69IkIWNSD87K9cHZWYMClyKZkUzS+PmRAhHRYbVd+9ZjKOmnU36kUHNDG/ft1D4ogsY+rhVtXB4lgWDM5adri+EIScYdYnB1/pQexLBigcJY9uE7nQTR0U6QgVNYvun7uRNs40E0c4voSfmPdFO0FlOD2y1oQhnaXfWLbu9nMcTcs4RFGrcC7NzkUN4/WjG8s285V6w=
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
file:
- cli/build/migrate.linux-amd64.tar.gz
+ - cli/build/migrate.linux-armv7.tar.gz
+ - cli/build/migrate.linux-arm64.tar.gz
- cli/build/migrate.darwin-amd64.tar.gz
- cli/build/migrate.windows-amd64.exe.tar.gz
+ - cli/build/migrate.windows-386.exe.tar.gz
- cli/build/sha256sum.txt
- dependency_tree.txt
- provider: packagecloud
@@ -68,7 +78,7 @@ deploy:
package_glob: '*.deb'
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
- provider: packagecloud
@@ -80,7 +90,7 @@ deploy:
package_glob: '*.deb'
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
- provider: packagecloud
@@ -88,11 +98,11 @@ deploy:
username: golang-migrate
token:
secure: aICwu3gJ1sJ1QVCD3elpg+Jxzt4P+Zj1uoh5f0sOwnjDNIZ4FwUT1cMrWloP8P2KD0iyCOawuZER27o/kQ21oX2OxHvQbYPReA2znLm7lHzCmypAAOHPxpgnQ4rMGHHJXd+OsxtdclGs67c+EbdBfoRRbK400Qz/vjPJEDeH4mh02ZHC2nw4Nk/wV4jjBIkIt9dGEx6NgOA17FCMa3MaPHlHeFIzU7IfTlDHbS0mCCYbg/wafWBWcbGqtZLWAYtJDmfjrAStmDLdAX5J5PsB7taGSGPZHmPmpGoVgrKt/tb9Xz1rFBGslTpGROOiO4CiMAvkEKFn8mxrBGjfSBqp7Dp3eeSalKXB1DJAbEXx2sEbMcvmnoR9o43meaAn+ZRts8lRL8S/skBloe6Nk8bx3NlJCGB9WPK1G56b7c/fZnJxQbrCw6hxDfbZwm8S2YPviFTo/z1BfZDhRsL74reKsN2kgnGo2W/k38vvzIpsssQ9DHN1b0TLCxolCNPtQ7oHcQ1ohcjP2UgYXk0FhqDoL+9LQva/DU4N9sKH0UbAaqsMVSErLeG8A4aauuFcVrWRBaDYyTag4dQqzTulEy7iru2kDDIBgSQ1gMW/yoBOIPK4oi6MtbTf1X39fzXFLS1cDd3LW61yAu3YrbjAetpfx2frIvrRAiL9TxWA1gnrs5o=
- dist: ubuntu/cosmic
+ dist: ubuntu/focal
package_glob: '*.deb'
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
- provider: packagecloud
@@ -104,7 +114,7 @@ deploy:
package_glob: '*.deb'
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
- provider: packagecloud
@@ -116,13 +126,13 @@ deploy:
package_glob: '*.deb'
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
- provider: script
script: ./docker-deploy.sh
skip_cleanup: true
on:
- go: "1.12.x"
+ go: "1.15.x"
repo: golang-migrate/migrate
tags: true
diff --git a/vendor/github.com/golang-migrate/migrate/v4/Dockerfile b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile
index 13ca3f7ffba..eb818821188 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/Dockerfile
+++ b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile
@@ -1,23 +1,26 @@
-FROM golang:1.12-alpine3.9 AS downloader
+FROM golang:1.16-alpine3.13 AS builder
ARG VERSION
-RUN apk add --no-cache git gcc musl-dev
+RUN apk add --no-cache git gcc musl-dev make
WORKDIR /go/src/github.com/golang-migrate/migrate
-COPY . ./
-
ENV GO111MODULE=on
-ENV DATABASES="postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb"
-ENV SOURCES="file go_bindata github aws_s3 google_cloud_storage godoc_vfs gitlab"
-RUN go build -a -o build/migrate.linux-386 -ldflags="-X main.Version=${VERSION}" -tags "$DATABASES $SOURCES" ./cmd/migrate
+COPY go.mod go.sum ./
+
+RUN go mod download
+
+COPY . ./
+
+RUN make build-docker
-FROM alpine:3.9
+FROM alpine:3.13
RUN apk add --no-cache ca-certificates
-COPY --from=downloader /go/src/github.com/golang-migrate/migrate/build/migrate.linux-386 /migrate
+COPY --from=builder /go/src/github.com/golang-migrate/migrate/build/migrate.linux-386 /usr/local/bin/migrate
+RUN ln -s /usr/local/bin/migrate /migrate
-ENTRYPOINT ["/migrate"]
+ENTRYPOINT ["migrate"]
CMD ["--help"]
diff --git a/vendor/github.com/golang-migrate/migrate/v4/Dockerfile.circleci b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile.circleci
new file mode 100644
index 00000000000..b6b244d1964
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile.circleci
@@ -0,0 +1,17 @@
+ARG DOCKER_IMAGE
+FROM $DOCKER_IMAGE
+
+RUN apk add --no-cache git gcc musl-dev make
+
+WORKDIR /go/src/github.com/golang-migrate/migrate
+
+ENV GO111MODULE=on
+ENV COVERAGE_DIR=/tmp/coverage
+
+COPY go.mod go.sum ./
+
+RUN go mod download
+
+COPY . ./
+
+CMD ["make", "test"]
diff --git a/vendor/github.com/golang-migrate/migrate/v4/Dockerfile.github-actions b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile.github-actions
new file mode 100644
index 00000000000..8d73061d4f8
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/Dockerfile.github-actions
@@ -0,0 +1,8 @@
+FROM alpine:3.13
+
+RUN apk add --no-cache ca-certificates
+
+ENTRYPOINT ["/usr/bin/migrate"]
+CMD ["--help"]
+
+COPY migrate /usr/bin/migrate
\ No newline at end of file
diff --git a/vendor/github.com/golang-migrate/migrate/v4/FAQ.md b/vendor/github.com/golang-migrate/migrate/v4/FAQ.md
index 1142f597273..28316281968 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/FAQ.md
+++ b/vendor/github.com/golang-migrate/migrate/v4/FAQ.md
@@ -16,7 +16,7 @@
NilMigration defines a migration without a body. NilVersion is defined as const -1.
#### What is the difference between uint(version) and int(targetVersion)?
- version refers to an existing migration version coming from a source and therefor can never be negative.
+ version refers to an existing migration version coming from a source and therefore can never be negative.
targetVersion can either be a version OR represent a NilVersion, which equals -1.
#### What's the difference between Next/Previous and Up/Down?
@@ -53,7 +53,7 @@
Yes, technically thats possible. We want to encourage you to contribute your driver to this respository though.
The driver's functionality is dictated by migrate's interfaces. That means there should really
just be one driver for a database/ source. We want to prevent a future where several drivers doing the exact same thing,
- just implemented a bit differently, co-exist somewhere on Github. If users have to do research first to find the
+ just implemented a bit differently, co-exist somewhere on GitHub. If users have to do research first to find the
"best" available driver for a database in order to get started, we would have failed as an open source community.
#### Can I mix multiple sources during a batch of migrations?
@@ -68,3 +68,12 @@
Database-specific locking features are used by *some* database drivers to prevent multiple instances of migrate from running migrations at the same time
the same database at the same time. For example, the MySQL driver uses the `GET_LOCK` function, while the Postgres driver uses
the `pg_advisory_lock` function.
+
+#### Do I need to create a table for tracking migration version used?
+No, it is done automatically.
+
+#### Can I use migrate with a non-Go project?
+Yes, you can use the migrate CLI in a non-Go project, but there are probably other libraries/frameworks available that offer better test and deploy integrations in that language/framework.
+
+#### I have got an error `Dirty database version 1. Fix and force version`. What should I do?
+Keep calm and refer to [the getting started docs](GETTING_STARTED.md#forcing-your-database-version).
diff --git a/vendor/github.com/golang-migrate/migrate/v4/GETTING_STARTED.md b/vendor/github.com/golang-migrate/migrate/v4/GETTING_STARTED.md
new file mode 100644
index 00000000000..5946005cd23
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/GETTING_STARTED.md
@@ -0,0 +1,53 @@
+# Getting started
+Before you start, you should understand the concept of forward/up and reverse/down database migrations.
+
+Configure a database for your application. Make sure that your database driver is supported [here](README.md#databases)
+
+## Create migrations
+Create some migrations using migrate CLI. Here is an example:
+```
+migrate create -ext sql -dir db/migrations -seq create_users_table
+```
+Once you create your files, you should fill them.
+
+**IMPORTANT:** In a project developed by more than one person there is a chance of migrations inconsistency - e.g. two developers can create conflicting migrations, and the developer that created his migration later gets it merged to the repository first.
+Developers and Teams should keep an eye on such cases (especially during code review).
+[Here](https://github.com/golang-migrate/migrate/issues/179#issuecomment-475821264) is the issue summary if you would like to read more.
+
+Consider making your migrations idempotent - we can run the same sql code twice in a row with the same result. This makes our migrations more robust. On the other hand, it causes slightly less control over database schema - e.g. let's say you forgot to drop the table in down migration. You run down migration - the table is still there. When you run up migration again - `CREATE TABLE` would return an error, helping you find an issue in down migration, while `CREATE TABLE IF NOT EXISTS` would not. Use those conditions wisely.
+
+In case you would like to run several commands/queries in one migration, you should wrap them in a transaction (if your database supports it).
+This way if one of commands fails, our database will remain unchanged.
+
+## Run migrations
+Run your migrations through the CLI or your app and check if they applied expected changes.
+Just to give you an idea:
+```
+migrate -database YOUR_DATABASE_URL -path PATH_TO_YOUR_MIGRATIONS up
+```
+
+Just add the code to your app and you're ready to go!
+
+Before commiting your migrations you should run your migrations up, down, and then up again to see if migrations are working properly both ways.
+(e.g. if you created a table in a migration but reverse migration did not delete it, you will encounter an error when running the forward migration again)
+It's also worth checking your migrations in a separate, containerized environment. You can find some tools in the end of this document.
+
+**IMPORTANT:** If you would like to run multiple instances of your app on different machines be sure to use a database that supports locking when running migrations. Otherwise you may encounter issues.
+
+## Forcing your database version
+In case you run a migration that contained an error, migrate will not let you run other migrations on the same database. You will see an error like `Dirty database version 1. Fix and force version`, even when you fix the erred migration. This means your database was marked as 'dirty'.
+You need to investigate the migration error - was your migration applied partially, or was it not applied at all? Once you know, you should force your database to a version reflecting it's real state. You can do so with `force` command:
+```
+migrate -path PATH_TO_YOUR_MIGRATIONS -database YOUR_DATABASE_URL force VERSION
+```
+Once you force the version and your migration was fixed, your database is 'clean' again and you can proceed with your migrations.
+
+For details and example of usage see [this comment](https://github.com/golang-migrate/migrate/issues/282#issuecomment-530743258).
+
+## Further reading:
+- [PostgreSQL tutorial](database/postgres/TUTORIAL.md)
+- [Best practices](MIGRATIONS.md)
+- [FAQ](FAQ.md)
+- Tools for testing your migrations in a container:
+ - https://github.com/dhui/dktest
+ - https://github.com/ory/dockertest
diff --git a/vendor/github.com/golang-migrate/migrate/v4/MIGRATIONS.md b/vendor/github.com/golang-migrate/migrate/v4/MIGRATIONS.md
index 8363887029b..3475d8e4eac 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/MIGRATIONS.md
+++ b/vendor/github.com/golang-migrate/migrate/v4/MIGRATIONS.md
@@ -44,9 +44,14 @@ It is suggested that the version number of corresponding `up` and `down` migrati
files be equivalent for clarity, but they are allowed to differ so long as the
relative ordering of the migrations is preserved.
-The migration files are permitted to be empty, so in the event that a migration
-is a no-op or is irreversible, it is recommended to still include both migration
-files, and either leaving them empty or adding a comment as appropriate.
+The migration files are permitted to be "empty", in the event that a migration
+is a no-op or is irreversible. It is recommended to still include both migration
+files by making the whole migration file consist of a comment.
+If your database does not support comments, then deleting the migration file will also work.
+Note, an actual empty file (e.g. a 0 byte file) may cause issues with your database since migrate
+will attempt to run an empty query. In this case, deleting the migration file will also work.
+For the rational of this behavior see:
+[#244 (comment)](https://github.com/golang-migrate/migrate/issues/244#issuecomment-510758270)
## Migration Content Format
diff --git a/vendor/github.com/golang-migrate/migrate/v4/Makefile b/vendor/github.com/golang-migrate/migrate/v4/Makefile
index b1afc221bbe..b4a7852b878 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/Makefile
+++ b/vendor/github.com/golang-migrate/migrate/v4/Makefile
@@ -1,15 +1,30 @@
-SOURCE ?= file go_bindata github aws_s3 google_cloud_storage godoc_vfs gitlab
-DATABASE ?= postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb
+SOURCE ?= file go_bindata github github_ee bitbucket aws_s3 google_cloud_storage godoc_vfs gitlab
+DATABASE ?= postgres mysql redshift cassandra spanner cockroachdb clickhouse mongodb sqlserver firebird neo4j pgx
+DATABASE_TEST ?= $(DATABASE) sqlite sqlite3 sqlcipher
VERSION ?= $(shell git describe --tags 2>/dev/null | cut -c 2-)
TEST_FLAGS ?=
REPO_OWNER ?= $(shell cd .. && basename "$$(pwd)")
COVERAGE_DIR ?= .coverage
+echo-source:
+ @echo "$(SOURCE)"
+
+echo-database:
+ @echo "$(DATABASE)"
+
+build:
+ CGO_ENABLED=0 go build -ldflags='-X main.Version=$(VERSION)' -tags '$(DATABASE) $(SOURCE)' ./cmd/migrate
+
+build-docker:
+ CGO_ENABLED=0 go build -a -o build/migrate.linux-386 -ldflags="-s -w -X main.Version=${VERSION}" -tags "$(DATABASE) $(SOURCE)" ./cmd/migrate
build-cli: clean
-mkdir ./cli/build
cd ./cmd/migrate && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o ../../cli/build/migrate.linux-amd64 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
+ cd ./cmd/migrate && CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -a -o ../../cli/build/migrate.linux-armv7 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
+ cd ./cmd/migrate && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -a -o ../../cli/build/migrate.linux-arm64 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
cd ./cmd/migrate && CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -a -o ../../cli/build/migrate.darwin-amd64 -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
+ cd ./cmd/migrate && CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -a -o ../../cli/build/migrate.windows-386.exe -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
cd ./cmd/migrate && CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -a -o ../../cli/build/migrate.windows-amd64.exe -ldflags='-X main.Version=$(VERSION) -extldflags "-static"' -tags '$(DATABASE) $(SOURCE)' .
cd ./cli/build && find . -name 'migrate*' | xargs -I{} tar czf {}.tar.gz {}
cd ./cli/build && shasum -a 256 * > sha256sum.txt
@@ -27,27 +42,14 @@ test-short:
test:
@-rm -r $(COVERAGE_DIR)
@mkdir $(COVERAGE_DIR)
- make test-with-flags TEST_FLAGS='-v -race -covermode atomic -coverprofile $$(COVERAGE_DIR)/_$$(RAND).txt -bench=. -benchmem -timeout 20m'
- @echo 'mode: atomic' > $(COVERAGE_DIR)/combined.txt
- @cat $(COVERAGE_DIR)/_*.txt | grep -v 'mode: atomic' >> $(COVERAGE_DIR)/combined.txt
+ make test-with-flags TEST_FLAGS='-v -race -covermode atomic -coverprofile $$(COVERAGE_DIR)/combined.txt -bench=. -benchmem -timeout 20m'
test-with-flags:
- @echo SOURCE: $(SOURCE)
- @echo DATABASE: $(DATABASE)
-
- @go test $(TEST_FLAGS) .
- @go test $(TEST_FLAGS) ./cli/...
- @go test $(TEST_FLAGS) ./database
- @go test $(TEST_FLAGS) ./testing/...
-
- @echo -n '$(SOURCE)' | tr -s ' ' '\n' | xargs -I{} go test $(TEST_FLAGS) ./source/{}
- @go test $(TEST_FLAGS) ./source/testing/...
- @go test $(TEST_FLAGS) ./source/stub/...
+ @echo SOURCE: $(SOURCE)
+ @echo DATABASE_TEST: $(DATABASE_TEST)
- @echo -n '$(DATABASE)' | tr -s ' ' '\n' | xargs -I{} go test $(TEST_FLAGS) ./database/{}
- @go test $(TEST_FLAGS) ./database/testing/...
- @go test $(TEST_FLAGS) ./database/stub/...
+ @go test $(TEST_FLAGS) ./...
kill-orphaned-docker-containers:
@@ -84,7 +86,7 @@ rewrite-import-paths:
docs:
-make kill-docs
nohup godoc -play -http=127.0.0.1:6064 /dev/null 2>&1 & echo $$! > .godoc.pid
- cat .godoc.pid
+ cat .godoc.pid
kill-docs:
@@ -109,10 +111,10 @@ define external_deps
endef
-.PHONY: build-cli clean test-short test test-with-flags html-coverage \
+.PHONY: build build-docker build-cli clean test-short test test-with-flags html-coverage \
restore-import-paths rewrite-import-paths list-external-deps release \
docs kill-docs open-docs kill-orphaned-docker-containers
-SHELL = /bin/bash
+SHELL = /bin/sh
RAND = $(shell echo $$RANDOM)
diff --git a/vendor/github.com/golang-migrate/migrate/v4/README.md b/vendor/github.com/golang-migrate/migrate/v4/README.md
index a5572667462..9eed2d08593 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/README.md
+++ b/vendor/github.com/golang-migrate/migrate/v4/README.md
@@ -1,21 +1,21 @@
-[![Build Status](https://img.shields.io/travis/com/golang-migrate/migrate/master.svg)](https://travis-ci.com/golang-migrate/migrate)
-[![GoDoc](https://godoc.org/github.com/golang-migrate/migrate?status.svg)](https://godoc.org/github.com/golang-migrate/migrate)
+[![CircleCI - Build Status](https://img.shields.io/circleci/build/github/golang-migrate/migrate/master)](https://circleci.com/gh/golang-migrate/migrate)
+[![GoDoc](https://pkg.go.dev/badge/github.com/golang-migrate/migrate)](https://pkg.go.dev/github.com/golang-migrate/migrate/v4)
[![Coverage Status](https://img.shields.io/coveralls/github/golang-migrate/migrate/master.svg)](https://coveralls.io/github/golang-migrate/migrate?branch=master)
[![packagecloud.io](https://img.shields.io/badge/deb-packagecloud.io-844fec.svg)](https://packagecloud.io/golang-migrate/migrate?filter=debs)
[![Docker Pulls](https://img.shields.io/docker/pulls/migrate/migrate.svg)](https://hub.docker.com/r/migrate/migrate/)
-![Supported Go Versions](https://img.shields.io/badge/Go-1.11%2C%201.12-lightgrey.svg)
+![Supported Go Versions](https://img.shields.io/badge/Go-1.15%2C%201.16-lightgrey.svg)
[![GitHub Release](https://img.shields.io/github/release/golang-migrate/migrate.svg)](https://github.com/golang-migrate/migrate/releases)
-
+[![Go Report Card](https://goreportcard.com/badge/github.com/golang-migrate/migrate)](https://goreportcard.com/report/github.com/golang-migrate/migrate)
# migrate
__Database migrations written in Go. Use as [CLI](#cli-usage) or import as [library](#use-in-your-go-project).__
- * Migrate reads migrations from [sources](#migration-sources)
+* Migrate reads migrations from [sources](#migration-sources)
and applies them in correct order to a [database](#databases).
- * Drivers are "dumb", migrate glues everything together and makes sure the logic is bulletproof.
+* Drivers are "dumb", migrate glues everything together and makes sure the logic is bulletproof.
(Keeps the drivers lightweight, too.)
- * Database drivers don't assume things or try to correct user input. When in doubt, fail.
+* Database drivers don't assume things or try to correct user input. When in doubt, fail.
Forked from [mattes/migrate](https://github.com/mattes/migrate)
@@ -23,24 +23,28 @@ Forked from [mattes/migrate](https://github.com/mattes/migrate)
Database drivers run migrations. [Add a new database?](database/driver.go)
- * [PostgreSQL](database/postgres)
- * [Redshift](database/redshift)
- * [Ql](database/ql)
- * [Cassandra](database/cassandra)
- * [SQLite](database/sqlite3) ([todo #165](https://github.com/mattes/migrate/issues/165))
- * [MySQL/ MariaDB](database/mysql)
- * [Neo4j](database/neo4j) ([todo #167](https://github.com/mattes/migrate/issues/167))
- * [MongoDB](database/mongodb)
- * [CrateDB](database/crate) ([todo #170](https://github.com/mattes/migrate/issues/170))
- * [Shell](database/shell) ([todo #171](https://github.com/mattes/migrate/issues/171))
- * [Google Cloud Spanner](database/spanner)
- * [CockroachDB](database/cockroachdb)
- * [ClickHouse](database/clickhouse)
- * [Firebird](database/firebird)
+* [PostgreSQL](database/postgres)
+* [PGX](database/pgx)
+* [Redshift](database/redshift)
+* [Ql](database/ql)
+* [Cassandra](database/cassandra)
+* [SQLite](database/sqlite)
+* [SQLite3](database/sqlite3) ([todo #165](https://github.com/mattes/migrate/issues/165))
+* [SQLCipher](database/sqlcipher)
+* [MySQL/ MariaDB](database/mysql)
+* [Neo4j](database/neo4j)
+* [MongoDB](database/mongodb)
+* [CrateDB](database/crate) ([todo #170](https://github.com/mattes/migrate/issues/170))
+* [Shell](database/shell) ([todo #171](https://github.com/mattes/migrate/issues/171))
+* [Google Cloud Spanner](database/spanner)
+* [CockroachDB](database/cockroachdb)
+* [ClickHouse](database/clickhouse)
+* [Firebird](database/firebird)
+* [MS SQL Server](database/sqlserver)
### Database URLs
-Database connection strings are specified via URLs. The URL format is driver dependent but generally has the form: `dbdriver://username:password@host:port/dbname?option1=true&option2=false`
+Database connection strings are specified via URLs. The URL format is driver dependent but generally has the form: `dbdriver://username:password@host:port/dbname?param1=true¶m2=false`
Any [reserved URL characters](https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters) need to be escaped. Note, the `%` character also [needs to be escaped](https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_the_percent_character)
@@ -48,6 +52,7 @@ Explicitly, the following characters need to be escaped:
`!`, `#`, `$`, `%`, `&`, `'`, `(`, `)`, `*`, `+`, `,`, `/`, `:`, `;`, `=`, `?`, `@`, `[`, `]`
It's easiest to always run the URL parts of your DB connection URL (e.g. username, password, etc) through an URL encoder. See the example Python snippets below:
+
```bash
$ python3 -c 'import urllib.parse; print(urllib.parse.quote(input("String to encode: "), ""))'
String to encode: FAKEpassword!#$%&'()*+,/:;=?@[]
@@ -62,44 +67,44 @@ $
Source drivers read migrations from local or remote sources. [Add a new source?](source/driver.go)
- * [Filesystem](source/file) - read from fileystem
- * [Go-Bindata](source/go_bindata) - read from embedded binary data ([jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata))
- * [Github](source/github) - read from remote Github repositories
- * [Gitlab](source/gitlab) - read from remote Gitlab repositories
- * [AWS S3](source/aws_s3) - read from Amazon Web Services S3
- * [Google Cloud Storage](source/google_cloud_storage) - read from Google Cloud Platform Storage
-
-
+* [Filesystem](source/file) - read from filesystem
+* [Go-Bindata](source/go_bindata) - read from embedded binary data ([jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata))
+* [GitHub](source/github) - read from remote GitHub repositories
+* [GitHub Enterprise](source/github_ee) - read from remote GitHub Enterprise repositories
+* [Bitbucket](source/bitbucket) - read from remote Bitbucket repositories
+* [Gitlab](source/gitlab) - read from remote Gitlab repositories
+* [AWS S3](source/aws_s3) - read from Amazon Web Services S3
+* [Google Cloud Storage](source/google_cloud_storage) - read from Google Cloud Platform Storage
## CLI usage
- * Simple wrapper around this library.
- * Handles ctrl+c (SIGINT) gracefully.
- * No config search paths, no config files, no magic ENV var injections.
+* Simple wrapper around this library.
+* Handles ctrl+c (SIGINT) gracefully.
+* No config search paths, no config files, no magic ENV var injections.
-__[CLI Documentation](cli)__
+__[CLI Documentation](cmd/migrate)__
-### Basic usage:
+### Basic usage
-```
+```bash
$ migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2
```
### Docker usage
-```
+```bash
$ docker run -v {{ migration dir }}:/migrations --network host migrate/migrate
-path=/migrations/ -database postgres://localhost:5432/database up 2
```
## Use in your Go project
- * API is stable and frozen for this release (v3 & v4).
- * Uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies.
- * To help prevent database corruptions, it supports graceful stops via `GracefulStop chan bool`.
- * Bring your own logger.
- * Uses `io.Reader` streams internally for low memory overhead.
- * Thread-safe and no goroutine leaks.
+* API is stable and frozen for this release (v3 & v4).
+* Uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies.
+* To help prevent database corruptions, it supports graceful stops via `GracefulStop chan bool`.
+* Bring your own logger.
+* Uses `io.Reader` streams internally for low memory overhead.
+* Thread-safe and no goroutine leaks.
__[Go Documentation](https://godoc.org/github.com/golang-migrate/migrate)__
@@ -139,11 +144,22 @@ func main() {
}
```
+## Getting started
+
+Go to [getting started](GETTING_STARTED.md)
+
+## Tutorials
+
+* [CockroachDB](database/cockroachdb/TUTORIAL.md)
+* [PostgreSQL](database/postgres/TUTORIAL.md)
+
+(more tutorials to come)
+
## Migration files
Each migration has an up and down migration. [Why?](FAQ.md#why-two-separate-files-up-and-down-for-a-migration)
-```
+```bash
1481574547_create_users_table.up.sql
1481574547_create_users_table.down.sql
```
@@ -165,8 +181,6 @@ read the [development guide](CONTRIBUTING.md).
Also have a look at the [FAQ](FAQ.md).
-
-
---
Looking for alternatives? [https://awesome-go.com/#database](https://awesome-go.com/#database).
diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/driver.go b/vendor/github.com/golang-migrate/migrate/v4/database/driver.go
index 901e5dd6648..fa80f455c05 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/database/driver.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/database/driver.go
@@ -7,12 +7,14 @@ package database
import (
"fmt"
"io"
- nurl "net/url"
"sync"
+
+ iurl "github.com/golang-migrate/migrate/v4/internal/url"
)
var (
- ErrLocked = fmt.Errorf("can't acquire lock")
+ ErrLocked = fmt.Errorf("can't acquire lock")
+ ErrNotLocked = fmt.Errorf("can't unlock, as not currently locked")
)
const NilVersion int = -1
@@ -32,7 +34,7 @@ var drivers = make(map[string]Driver)
// All other functions are tested by tests in database/testing.
// Saves you some time and makes sure all database drivers behave the same way.
// 5. Call Register in init().
-// 6. Create a migrate/cli/build_.go file
+// 6. Create a internal/cli/build_.go file
// 7. Add driver name in 'DATABASE' variable in Makefile
//
// Guidelines:
@@ -60,7 +62,7 @@ type Driver interface {
// all migrations have been run.
Unlock() error
- // Run applies a migration to the database. migration is garantueed to be not nil.
+ // Run applies a migration to the database. migration is guaranteed to be not nil.
Run(migration io.Reader) error
// SetVersion saves version and dirty state.
@@ -81,21 +83,16 @@ type Driver interface {
// Open returns a new driver instance.
func Open(url string) (Driver, error) {
- u, err := nurl.Parse(url)
+ scheme, err := iurl.SchemeFromURL(url)
if err != nil {
- return nil, fmt.Errorf("Unable to parse URL. Did you escape all reserved URL characters? "+
- "See: https://github.com/golang-migrate/migrate#database-urls Error: %v", err)
- }
-
- if u.Scheme == "" {
- return nil, fmt.Errorf("database driver: invalid URL scheme")
+ return nil, err
}
driversMu.RLock()
- d, ok := drivers[u.Scheme]
+ d, ok := drivers[scheme]
driversMu.RUnlock()
if !ok {
- return nil, fmt.Errorf("database driver: unknown driver %v (forgotten import?)", u.Scheme)
+ return nil, fmt.Errorf("database driver: unknown driver %v (forgotten import?)", scheme)
}
return d.Open(url)
diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/README.md b/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/README.md
index e69de29bb2d..13f3f0d1410 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/README.md
+++ b/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/README.md
@@ -0,0 +1,16 @@
+# sqlite3
+
+`sqlite3://path/to/database?query`
+
+Unlike other migrate database drivers, the sqlite3 driver will automatically wrap each migration in an implicit transaction by default. Migrations must not contain explicit `BEGIN` or `COMMIT` statements. This behavior may change in a future major release. (See below for a workaround.)
+
+Refer to [upstream documentation](https://github.com/mattn/go-sqlite3/blob/master/README.md#connection-string) for a complete list of query parameters supported by the sqlite3 database driver. The auxiliary query parameters listed below may be supplied to tailor migrate behavior. All auxiliary query parameters are optional.
+
+| URL Query | WithInstance Config | Description |
+|------------|---------------------|-------------|
+| `x-migrations-table` | `MigrationsTable` | Name of the migrations table. Defaults to `schema_migrations`. |
+| `x-no-tx-wrap` | `NoTxWrap` | Disable implicit transactions when `true`. Migrations may, and should, contain explicit `BEGIN` and `COMMIT` statements. |
+
+## Notes
+
+* Uses the `github.com/mattn/go-sqlite3` sqlite db driver (cgo)
diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go b/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go
index 9cedc6bf218..65aa6e74c1c 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/database/sqlite3/sqlite3.go
@@ -3,9 +3,11 @@ package sqlite3
import (
"database/sql"
"fmt"
+ "go.uber.org/atomic"
"io"
"io/ioutil"
nurl "net/url"
+ "strconv"
"strings"
"github.com/golang-migrate/migrate/v4"
@@ -28,11 +30,12 @@ var (
type Config struct {
MigrationsTable string
DatabaseName string
+ NoTxWrap bool
}
type Sqlite struct {
db *sql.DB
- isLocked bool
+ isLocked atomic.Bool
config *Config
}
@@ -100,13 +103,25 @@ func (m *Sqlite) Open(url string) (database.Driver, error) {
return nil, err
}
- migrationsTable := purl.Query().Get("x-migrations-table")
+ qv := purl.Query()
+
+ migrationsTable := qv.Get("x-migrations-table")
if len(migrationsTable) == 0 {
migrationsTable = DefaultMigrationsTable
}
+
+ noTxWrap := false
+ if v := qv.Get("x-no-tx-wrap"); v != "" {
+ noTxWrap, err = strconv.ParseBool(v)
+ if err != nil {
+ return nil, fmt.Errorf("x-no-tx-wrap: %s", err)
+ }
+ }
+
mx, err := WithInstance(db, &Config{
DatabaseName: purl.Path,
MigrationsTable: migrationsTable,
+ NoTxWrap: noTxWrap,
})
if err != nil {
return nil, err
@@ -129,6 +144,7 @@ func (m *Sqlite) Drop() (err error) {
err = multierror.Append(err, errClose)
}
}()
+
tableNames := make([]string, 0)
for tables.Next() {
var tableName string
@@ -139,6 +155,10 @@ func (m *Sqlite) Drop() (err error) {
tableNames = append(tableNames, tableName)
}
}
+ if err := tables.Err(); err != nil {
+ return &database.Error{OrigErr: err, Query: []byte(query)}
+ }
+
if len(tableNames) > 0 {
for _, t := range tableNames {
query := "DROP TABLE " + t
@@ -158,18 +178,16 @@ func (m *Sqlite) Drop() (err error) {
}
func (m *Sqlite) Lock() error {
- if m.isLocked {
+ if !m.isLocked.CAS(false, true) {
return database.ErrLocked
}
- m.isLocked = true
return nil
}
func (m *Sqlite) Unlock() error {
- if !m.isLocked {
- return nil
+ if !m.isLocked.CAS(true, false) {
+ return database.ErrNotLocked
}
- m.isLocked = false
return nil
}
@@ -180,6 +198,9 @@ func (m *Sqlite) Run(migration io.Reader) error {
}
query := string(migr[:])
+ if m.config.NoTxWrap {
+ return m.executeQueryNoTx(query)
+ }
return m.executeQuery(query)
}
@@ -200,6 +221,13 @@ func (m *Sqlite) executeQuery(query string) error {
return nil
}
+func (m *Sqlite) executeQueryNoTx(query string) error {
+ if _, err := m.db.Exec(query); err != nil {
+ return &database.Error{OrigErr: err, Query: []byte(query)}
+ }
+ return nil
+}
+
func (m *Sqlite) SetVersion(version int, dirty bool) error {
tx, err := m.db.Begin()
if err != nil {
@@ -211,9 +239,12 @@ func (m *Sqlite) SetVersion(version int, dirty bool) error {
return &database.Error{OrigErr: err, Query: []byte(query)}
}
- if version >= 0 {
- query := fmt.Sprintf(`INSERT INTO %s (version, dirty) VALUES (%d, '%t')`, m.config.MigrationsTable, version, dirty)
- if _, err := tx.Exec(query); err != nil {
+ // Also re-write the schema version for nil dirty versions to prevent
+ // empty schema version for failed down migration on the first migration
+ // See: https://github.com/golang-migrate/migrate/issues/330
+ if version >= 0 || (version == database.NilVersion && dirty) {
+ query := fmt.Sprintf(`INSERT INTO %s (version, dirty) VALUES (?, ?)`, m.config.MigrationsTable)
+ if _, err := tx.Exec(query, version, dirty); err != nil {
if errRollback := tx.Rollback(); errRollback != nil {
err = multierror.Append(err, errRollback)
}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/database/util.go b/vendor/github.com/golang-migrate/migrate/v4/database/util.go
index 976ad3534d2..de66d5b8021 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/database/util.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/database/util.go
@@ -2,6 +2,7 @@ package database
import (
"fmt"
+ "go.uber.org/atomic"
"hash/crc32"
"strings"
)
@@ -17,3 +18,16 @@ func GenerateAdvisoryLockId(databaseName string, additionalNames ...string) (str
sum = sum * uint32(advisoryLockIDSalt)
return fmt.Sprint(sum), nil
}
+
+// CasRestoreOnErr CAS wrapper to automatically restore the lock state on error
+func CasRestoreOnErr(lock *atomic.Bool, o, n bool, casErr error, f func() error) error {
+ if !lock.CAS(o, n) {
+ return casErr
+ }
+ if err := f(); err != nil {
+ // Automatically unlock/lock on error
+ lock.Store(o)
+ return err
+ }
+ return nil
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/internal/url/url.go b/vendor/github.com/golang-migrate/migrate/v4/internal/url/url.go
new file mode 100644
index 00000000000..e793fa828ed
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/internal/url/url.go
@@ -0,0 +1,25 @@
+package url
+
+import (
+ "errors"
+ "strings"
+)
+
+var errNoScheme = errors.New("no scheme")
+var errEmptyURL = errors.New("URL cannot be empty")
+
+// schemeFromURL returns the scheme from a URL string
+func SchemeFromURL(url string) (string, error) {
+ if url == "" {
+ return "", errEmptyURL
+ }
+
+ i := strings.Index(url, ":")
+
+ // No : or : is the first character.
+ if i < 1 {
+ return "", errNoScheme
+ }
+
+ return url[0:i], nil
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/migrate.go b/vendor/github.com/golang-migrate/migrate/v4/migrate.go
index a4a694b400d..a57dceb5d5b 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/migrate.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/migrate.go
@@ -1,18 +1,20 @@
// Package migrate reads migrations from sources and runs them against databases.
// Sources are defined by the `source.Driver` and databases by the `database.Driver`
-// interface. The driver interfaces are kept "dump", all migration logic is kept
+// interface. The driver interfaces are kept "dumb", all migration logic is kept
// in this package.
package migrate
import (
"errors"
"fmt"
- "github.com/hashicorp/go-multierror"
"os"
"sync"
"time"
+ "github.com/hashicorp/go-multierror"
+
"github.com/golang-migrate/migrate/v4/database"
+ iurl "github.com/golang-migrate/migrate/v4/internal/url"
"github.com/golang-migrate/migrate/v4/source"
)
@@ -85,13 +87,13 @@ type Migrate struct {
func New(sourceURL, databaseURL string) (*Migrate, error) {
m := newCommon()
- sourceName, err := sourceSchemeFromURL(sourceURL)
+ sourceName, err := iurl.SchemeFromURL(sourceURL)
if err != nil {
return nil, err
}
m.sourceName = sourceName
- databaseName, err := databaseSchemeFromURL(databaseURL)
+ databaseName, err := iurl.SchemeFromURL(databaseURL)
if err != nil {
return nil, err
}
@@ -119,7 +121,7 @@ func New(sourceURL, databaseURL string) (*Migrate, error) {
func NewWithDatabaseInstance(sourceURL string, databaseName string, databaseInstance database.Driver) (*Migrate, error) {
m := newCommon()
- sourceName, err := schemeFromURL(sourceURL)
+ sourceName, err := iurl.SchemeFromURL(sourceURL)
if err != nil {
return nil, err
}
@@ -145,7 +147,7 @@ func NewWithDatabaseInstance(sourceURL string, databaseName string, databaseInst
func NewWithSourceInstance(sourceName string, sourceInstance source.Driver, databaseURL string) (*Migrate, error) {
m := newCommon()
- databaseName, err := schemeFromURL(databaseURL)
+ databaseName, err := iurl.SchemeFromURL(databaseURL)
if err != nil {
return nil, err
}
@@ -485,7 +487,7 @@ func (m *Migrate) read(from int, to int, ret chan<- interface{}) {
}
prev, err := m.sourceDrv.Prev(suint(from))
- if os.IsNotExist(err) && to == -1 {
+ if errors.Is(err, os.ErrNotExist) && to == -1 {
// apply nil migration
migr, err := m.newMigration(suint(from), -1)
if err != nil {
@@ -578,7 +580,7 @@ func (m *Migrate) readUp(from int, limit int, ret chan<- interface{}) {
// apply next migration
next, err := m.sourceDrv.Next(suint(from))
- if os.IsNotExist(err) {
+ if errors.Is(err, os.ErrNotExist) {
// no limit, but no migrations applied?
if limit == -1 && count == 0 {
ret <- ErrNoChange
@@ -664,7 +666,7 @@ func (m *Migrate) readDown(from int, limit int, ret chan<- interface{}) {
}
prev, err := m.sourceDrv.Prev(suint(from))
- if os.IsNotExist(err) {
+ if errors.Is(err, os.ErrNotExist) {
// no limit or haven't reached limit, apply "first" migration
if limit == -1 || limit-count > 0 {
firstVersion, err := m.sourceDrv.First()
@@ -783,9 +785,9 @@ func (m *Migrate) versionExists(version uint) (result error) {
}
}()
}
- if os.IsExist(err) {
+ if errors.Is(err, os.ErrExist) {
return nil
- } else if !os.IsNotExist(err) {
+ } else if !errors.Is(err, os.ErrNotExist) {
return err
}
@@ -798,13 +800,15 @@ func (m *Migrate) versionExists(version uint) (result error) {
}
}()
}
- if os.IsExist(err) {
+ if errors.Is(err, os.ErrExist) {
return nil
- } else if !os.IsNotExist(err) {
+ } else if !errors.Is(err, os.ErrNotExist) {
return err
}
- return os.ErrNotExist
+ err = fmt.Errorf("no migration found for version %d: %w", version, err)
+ m.logErr(err)
+ return err
}
// stop returns true if no more migrations should be run against the database
@@ -832,7 +836,7 @@ func (m *Migrate) newMigration(version uint, targetVersion int) (*Migration, err
if targetVersion >= int(version) {
r, identifier, err := m.sourceDrv.ReadUp(version)
- if os.IsNotExist(err) {
+ if errors.Is(err, os.ErrNotExist) {
// create "empty" migration
migr, err = NewMigration(nil, "", version, targetVersion)
if err != nil {
@@ -852,7 +856,7 @@ func (m *Migrate) newMigration(version uint, targetVersion int) (*Migration, err
} else {
r, identifier, err := m.sourceDrv.ReadDown(version)
- if os.IsNotExist(err) {
+ if errors.Is(err, os.ErrNotExist) {
// create "empty" migration
migr, err = NewMigration(nil, "", version, targetVersion)
if err != nil {
@@ -950,7 +954,7 @@ func (m *Migrate) unlock() error {
// if a prevErr is not nil.
func (m *Migrate) unlockErr(prevErr error) error {
if err := m.unlock(); err != nil {
- return NewMultiError(prevErr, err)
+ return multierror.Append(prevErr, err)
}
return prevErr
}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/driver.go b/vendor/github.com/golang-migrate/migrate/v4/source/driver.go
index 05f97adabf3..63e6393c321 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/source/driver.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/driver.go
@@ -87,7 +87,7 @@ func Open(url string) (Driver, error) {
d, ok := drivers[u.Scheme]
driversMu.RUnlock()
if !ok {
- return nil, fmt.Errorf("source driver: unknown driver %v (forgotten import?)", u.Scheme)
+ return nil, fmt.Errorf("source driver: unknown driver '%s' (forgotten import?)", u.Scheme)
}
return d.Open(url)
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/errors.go b/vendor/github.com/golang-migrate/migrate/v4/source/errors.go
new file mode 100644
index 00000000000..93d66e0d4b1
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/errors.go
@@ -0,0 +1,15 @@
+package source
+
+import "os"
+
+// ErrDuplicateMigration is an error type for reporting duplicate migration
+// files.
+type ErrDuplicateMigration struct {
+ Migration
+ os.FileInfo
+}
+
+// Error implements error interface.
+func (e ErrDuplicateMigration) Error() string {
+ return "duplicate migration file: " + e.Name()
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go b/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go
index a0c6419318d..82408b99aee 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/file/file.go
@@ -1,12 +1,8 @@
package file
import (
- "fmt"
- "io"
- "io/ioutil"
nurl "net/url"
"os"
- "path"
"path/filepath"
"github.com/golang-migrate/migrate/v4/source"
@@ -16,18 +12,11 @@ func init() {
source.Register("file", &File{})
}
-type File struct {
- url string
- path string
- migrations *source.Migrations
-}
-
-func (f *File) Open(url string) (source.Driver, error) {
+func parseURL(url string) (string, error) {
u, err := nurl.Parse(url)
if err != nil {
- return nil, err
+ return "", err
}
-
// concat host and path to restore full path
// host might be `.`
p := u.Opaque
@@ -39,7 +28,7 @@ func (f *File) Open(url string) (source.Driver, error) {
// default to current directory if no path
wd, err := os.Getwd()
if err != nil {
- return nil, err
+ return "", err
}
p = wd
@@ -47,81 +36,9 @@ func (f *File) Open(url string) (source.Driver, error) {
// make path absolute if relative
abs, err := filepath.Abs(p)
if err != nil {
- return nil, err
+ return "", err
}
p = abs
}
-
- // scan directory
- files, err := ioutil.ReadDir(p)
- if err != nil {
- return nil, err
- }
-
- nf := &File{
- url: url,
- path: p,
- migrations: source.NewMigrations(),
- }
-
- for _, fi := range files {
- if !fi.IsDir() {
- m, err := source.DefaultParse(fi.Name())
- if err != nil {
- continue // ignore files that we can't parse
- }
- if !nf.migrations.Append(m) {
- return nil, fmt.Errorf("unable to parse file %v", fi.Name())
- }
- }
- }
- return nf, nil
-}
-
-func (f *File) Close() error {
- // nothing do to here
- return nil
-}
-
-func (f *File) First() (version uint, err error) {
- if v, ok := f.migrations.First(); ok {
- return v, nil
- }
- return 0, &os.PathError{Op: "first", Path: f.path, Err: os.ErrNotExist}
-}
-
-func (f *File) Prev(version uint) (prevVersion uint, err error) {
- if v, ok := f.migrations.Prev(version); ok {
- return v, nil
- }
- return 0, &os.PathError{Op: fmt.Sprintf("prev for version %v", version), Path: f.path, Err: os.ErrNotExist}
-}
-
-func (f *File) Next(version uint) (nextVersion uint, err error) {
- if v, ok := f.migrations.Next(version); ok {
- return v, nil
- }
- return 0, &os.PathError{Op: fmt.Sprintf("next for version %v", version), Path: f.path, Err: os.ErrNotExist}
-}
-
-func (f *File) ReadUp(version uint) (r io.ReadCloser, identifier string, err error) {
- if m, ok := f.migrations.Up(version); ok {
- r, err := os.Open(path.Join(f.path, m.Raw))
- if err != nil {
- return nil, "", err
- }
- return r, m.Identifier, nil
- }
- return nil, "", &os.PathError{Op: fmt.Sprintf("read version %v", version), Path: f.path, Err: os.ErrNotExist}
-}
-
-func (f *File) ReadDown(version uint) (r io.ReadCloser, identifier string, err error) {
- if m, ok := f.migrations.Down(version); ok {
- r, err := os.Open(path.Join(f.path, m.Raw))
- if err != nil {
- return nil, "", err
- }
- return r, m.Identifier, nil
- }
- return nil, "", &os.PathError{Op: fmt.Sprintf("read version %v", version), Path: f.path, Err: os.ErrNotExist}
+ return p, nil
}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/file/file_go115.go b/vendor/github.com/golang-migrate/migrate/v4/source/file/file_go115.go
new file mode 100644
index 00000000000..e2857b364af
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/file/file_go115.go
@@ -0,0 +1,32 @@
+// +build !go1.16
+
+package file
+
+import (
+ "net/http"
+
+ "github.com/golang-migrate/migrate/v4/source"
+ "github.com/golang-migrate/migrate/v4/source/httpfs"
+)
+
+type File struct {
+ httpfs.PartialDriver
+ url string
+ path string
+}
+
+func (f *File) Open(url string) (source.Driver, error) {
+ p, err := parseURL(url)
+ if err != nil {
+ return nil, err
+ }
+
+ nf := &File{
+ url: url,
+ path: p,
+ }
+ if err := nf.Init(http.Dir(p), ""); err != nil {
+ return nil, err
+ }
+ return nf, nil
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/file/file_go116.go b/vendor/github.com/golang-migrate/migrate/v4/source/file/file_go116.go
new file mode 100644
index 00000000000..5203b4bdbf2
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/file/file_go116.go
@@ -0,0 +1,31 @@
+// +build go1.16
+
+package file
+
+import (
+ "os"
+
+ "github.com/golang-migrate/migrate/v4/source"
+ "github.com/golang-migrate/migrate/v4/source/iofs"
+)
+
+type File struct {
+ iofs.PartialDriver
+ url string
+ path string
+}
+
+func (f *File) Open(url string) (source.Driver, error) {
+ p, err := parseURL(url)
+ if err != nil {
+ return nil, err
+ }
+ nf := &File{
+ url: url,
+ path: p,
+ }
+ if err := nf.Init(os.DirFS(p), "."); err != nil {
+ return nil, err
+ }
+ return nf, nil
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/README.md b/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/README.md
new file mode 100644
index 00000000000..f29b89df516
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/README.md
@@ -0,0 +1,49 @@
+# httpfs
+
+## Usage
+
+This package could be used to create new migration source drivers that uses
+`http.FileSystem` to read migration files.
+
+Struct `httpfs.PartialDriver` partly implements the `source.Driver` interface. It has all
+the methods except for `Open()`. Embedding this struct and adding `Open()` method
+allows users of this package to create new migration sources. Example:
+
+```go
+struct mydriver {
+ httpfs.PartialDriver
+}
+
+func (d *mydriver) Open(url string) (source.Driver, error) {
+ var fs http.FileSystem
+ var path string
+ var ds mydriver
+
+ // acquire fs and path from url
+ // set-up ds if necessary
+
+ if err := ds.Init(fs, path); err != nil {
+ return nil, err
+ }
+ return &ds, nil
+}
+```
+
+This package also provides a simple `source.Driver` implementation that works
+with `http.FileSystem` provided by the user of this package. It is created with
+`httpfs.New()` call.
+
+Example of using `http.Dir()` to read migrations from `sql` directory:
+
+```go
+ src, err := httpfs.New(http.Dir("sql"))
+ if err != nil {
+ // do something
+ }
+ m, err := migrate.NewWithSourceInstance("httpfs", src, "database://url")
+ if err != nil {
+ // do something
+ }
+ err = m.Up()
+ ...
+```
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/driver.go b/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/driver.go
new file mode 100644
index 00000000000..e0cdbaa0020
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/driver.go
@@ -0,0 +1,31 @@
+package httpfs
+
+import (
+ "errors"
+ "net/http"
+
+ "github.com/golang-migrate/migrate/v4/source"
+)
+
+// driver is a migration source driver for reading migrations from
+// http.FileSystem instances. It implements source.Driver interface and can be
+// used as a migration source for the main migrate library.
+type driver struct {
+ PartialDriver
+}
+
+// New creates a new migrate source driver from a http.FileSystem instance and a
+// relative path to migration files within the virtual FS.
+func New(fs http.FileSystem, path string) (source.Driver, error) {
+ var d driver
+ if err := d.Init(fs, path); err != nil {
+ return nil, err
+ }
+ return &d, nil
+}
+
+// Open completes the implementetion of source.Driver interface. Other methods
+// are implemented by the embedded PartialDriver struct.
+func (d *driver) Open(url string) (source.Driver, error) {
+ return nil, errors.New("Open() cannot be called on the httpfs passthrough driver")
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/partial_driver.go b/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/partial_driver.go
new file mode 100644
index 00000000000..5ddb798837c
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/httpfs/partial_driver.go
@@ -0,0 +1,156 @@
+package httpfs
+
+import (
+ "errors"
+ "io"
+ "net/http"
+ "os"
+ "path"
+ "strconv"
+
+ "github.com/golang-migrate/migrate/v4/source"
+)
+
+// PartialDriver is a helper service for creating new source drivers working with
+// http.FileSystem instances. It implements all source.Driver interface methods
+// except for Open(). New driver could embed this struct and add missing Open()
+// method.
+//
+// To prepare PartialDriver for use Init() function.
+type PartialDriver struct {
+ migrations *source.Migrations
+ fs http.FileSystem
+ path string
+}
+
+// Init prepares not initialized PartialDriver instance to read migrations from a
+// http.FileSystem instance and a relative path.
+func (p *PartialDriver) Init(fs http.FileSystem, path string) error {
+ root, err := fs.Open(path)
+ if err != nil {
+ return err
+ }
+
+ files, err := root.Readdir(0)
+ if err != nil {
+ _ = root.Close()
+ return err
+ }
+ if err = root.Close(); err != nil {
+ return err
+ }
+
+ ms := source.NewMigrations()
+ for _, file := range files {
+ if file.IsDir() {
+ continue
+ }
+
+ m, err := source.DefaultParse(file.Name())
+ if err != nil {
+ continue // ignore files that we can't parse
+ }
+
+ if !ms.Append(m) {
+ return source.ErrDuplicateMigration{
+ Migration: *m,
+ FileInfo: file,
+ }
+ }
+ }
+
+ p.fs = fs
+ p.path = path
+ p.migrations = ms
+ return nil
+}
+
+// Close is part of source.Driver interface implementation. This is a no-op.
+func (p *PartialDriver) Close() error {
+ return nil
+}
+
+// First is part of source.Driver interface implementation.
+func (p *PartialDriver) First() (version uint, err error) {
+ if version, ok := p.migrations.First(); ok {
+ return version, nil
+ }
+ return 0, &os.PathError{
+ Op: "first",
+ Path: p.path,
+ Err: os.ErrNotExist,
+ }
+}
+
+// Prev is part of source.Driver interface implementation.
+func (p *PartialDriver) Prev(version uint) (prevVersion uint, err error) {
+ if version, ok := p.migrations.Prev(version); ok {
+ return version, nil
+ }
+ return 0, &os.PathError{
+ Op: "prev for version " + strconv.FormatUint(uint64(version), 10),
+ Path: p.path,
+ Err: os.ErrNotExist,
+ }
+}
+
+// Next is part of source.Driver interface implementation.
+func (p *PartialDriver) Next(version uint) (nextVersion uint, err error) {
+ if version, ok := p.migrations.Next(version); ok {
+ return version, nil
+ }
+ return 0, &os.PathError{
+ Op: "next for version " + strconv.FormatUint(uint64(version), 10),
+ Path: p.path,
+ Err: os.ErrNotExist,
+ }
+}
+
+// ReadUp is part of source.Driver interface implementation.
+func (p *PartialDriver) ReadUp(version uint) (r io.ReadCloser, identifier string, err error) {
+ if m, ok := p.migrations.Up(version); ok {
+ body, err := p.open(path.Join(p.path, m.Raw))
+ if err != nil {
+ return nil, "", err
+ }
+ return body, m.Identifier, nil
+ }
+ return nil, "", &os.PathError{
+ Op: "read up for version " + strconv.FormatUint(uint64(version), 10),
+ Path: p.path,
+ Err: os.ErrNotExist,
+ }
+}
+
+// ReadDown is part of source.Driver interface implementation.
+func (p *PartialDriver) ReadDown(version uint) (r io.ReadCloser, identifier string, err error) {
+ if m, ok := p.migrations.Down(version); ok {
+ body, err := p.open(path.Join(p.path, m.Raw))
+ if err != nil {
+ return nil, "", err
+ }
+ return body, m.Identifier, nil
+ }
+ return nil, "", &os.PathError{
+ Op: "read down for version " + strconv.FormatUint(uint64(version), 10),
+ Path: p.path,
+ Err: os.ErrNotExist,
+ }
+}
+
+func (p *PartialDriver) open(path string) (http.File, error) {
+ f, err := p.fs.Open(path)
+ if err == nil {
+ return f, nil
+ }
+ // Some non-standard file systems may return errors that don't include the path, that
+ // makes debugging harder.
+ if !errors.As(err, new(*os.PathError)) {
+ err = &os.PathError{
+ Op: "open",
+ Path: path,
+ Err: err,
+ }
+ }
+ return nil, err
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/README.md b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/README.md
new file mode 100644
index 00000000000..d75b328b951
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/README.md
@@ -0,0 +1,3 @@
+# iofs
+
+https://pkg.go.dev/github.com/golang-migrate/migrate/v4/source/iofs
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/doc.go b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/doc.go
new file mode 100644
index 00000000000..6b2c862e0f2
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/doc.go
@@ -0,0 +1,10 @@
+/*
+Package iofs provides the Go 1.16+ io/fs#FS driver.
+
+It can accept various file systems (like embed.FS, archive/zip#Reader) implementing io/fs#FS.
+
+This driver cannot be used with Go versions 1.15 and below.
+
+Also, Opening with a URL scheme is not supported.
+*/
+package iofs
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/iofs.go b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/iofs.go
new file mode 100644
index 00000000000..f76e44387af
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/iofs.go
@@ -0,0 +1,175 @@
+// +build go1.16
+
+package iofs
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "io/fs"
+ "path"
+ "strconv"
+
+ "github.com/golang-migrate/migrate/v4/source"
+)
+
+type driver struct {
+ PartialDriver
+}
+
+// New returns a new Driver from io/fs#FS and a relative path.
+func New(fsys fs.FS, path string) (source.Driver, error) {
+ var i driver
+ if err := i.Init(fsys, path); err != nil {
+ return nil, fmt.Errorf("failed to init driver with path %s: %w", path, err)
+ }
+ return &i, nil
+}
+
+// Open is part of source.Driver interface implementation.
+// Open cannot be called on the iofs passthrough driver.
+func (d *driver) Open(url string) (source.Driver, error) {
+ return nil, errors.New("Open() cannot be called on the iofs passthrough driver")
+}
+
+// PartialDriver is a helper service for creating new source drivers working with
+// io/fs.FS instances. It implements all source.Driver interface methods
+// except for Open(). New driver could embed this struct and add missing Open()
+// method.
+//
+// To prepare PartialDriver for use Init() function.
+type PartialDriver struct {
+ migrations *source.Migrations
+ fsys fs.FS
+ path string
+}
+
+// Init prepares not initialized IoFS instance to read migrations from a
+// io/fs#FS instance and a relative path.
+func (d *PartialDriver) Init(fsys fs.FS, path string) error {
+ entries, err := fs.ReadDir(fsys, path)
+ if err != nil {
+ return err
+ }
+
+ ms := source.NewMigrations()
+ for _, e := range entries {
+ if e.IsDir() {
+ continue
+ }
+ m, err := source.DefaultParse(e.Name())
+ if err != nil {
+ continue
+ }
+ file, err := e.Info()
+ if err != nil {
+ return err
+ }
+ if !ms.Append(m) {
+ return source.ErrDuplicateMigration{
+ Migration: *m,
+ FileInfo: file,
+ }
+ }
+ }
+
+ d.fsys = fsys
+ d.path = path
+ d.migrations = ms
+ return nil
+}
+
+// Close is part of source.Driver interface implementation.
+// Closes the file system if possible.
+func (d *PartialDriver) Close() error {
+ c, ok := d.fsys.(io.Closer)
+ if !ok {
+ return nil
+ }
+ return c.Close()
+}
+
+// First is part of source.Driver interface implementation.
+func (d *PartialDriver) First() (version uint, err error) {
+ if version, ok := d.migrations.First(); ok {
+ return version, nil
+ }
+ return 0, &fs.PathError{
+ Op: "first",
+ Path: d.path,
+ Err: fs.ErrNotExist,
+ }
+}
+
+// Prev is part of source.Driver interface implementation.
+func (d *PartialDriver) Prev(version uint) (prevVersion uint, err error) {
+ if version, ok := d.migrations.Prev(version); ok {
+ return version, nil
+ }
+ return 0, &fs.PathError{
+ Op: "prev for version " + strconv.FormatUint(uint64(version), 10),
+ Path: d.path,
+ Err: fs.ErrNotExist,
+ }
+}
+
+// Next is part of source.Driver interface implementation.
+func (d *PartialDriver) Next(version uint) (nextVersion uint, err error) {
+ if version, ok := d.migrations.Next(version); ok {
+ return version, nil
+ }
+ return 0, &fs.PathError{
+ Op: "next for version " + strconv.FormatUint(uint64(version), 10),
+ Path: d.path,
+ Err: fs.ErrNotExist,
+ }
+}
+
+// ReadUp is part of source.Driver interface implementation.
+func (d *PartialDriver) ReadUp(version uint) (r io.ReadCloser, identifier string, err error) {
+ if m, ok := d.migrations.Up(version); ok {
+ body, err := d.open(path.Join(d.path, m.Raw))
+ if err != nil {
+ return nil, "", err
+ }
+ return body, m.Identifier, nil
+ }
+ return nil, "", &fs.PathError{
+ Op: "read up for version " + strconv.FormatUint(uint64(version), 10),
+ Path: d.path,
+ Err: fs.ErrNotExist,
+ }
+}
+
+// ReadDown is part of source.Driver interface implementation.
+func (d *PartialDriver) ReadDown(version uint) (r io.ReadCloser, identifier string, err error) {
+ if m, ok := d.migrations.Down(version); ok {
+ body, err := d.open(path.Join(d.path, m.Raw))
+ if err != nil {
+ return nil, "", err
+ }
+ return body, m.Identifier, nil
+ }
+ return nil, "", &fs.PathError{
+ Op: "read down for version " + strconv.FormatUint(uint64(version), 10),
+ Path: d.path,
+ Err: fs.ErrNotExist,
+ }
+}
+
+func (d *PartialDriver) open(path string) (fs.File, error) {
+ f, err := d.fsys.Open(path)
+ if err == nil {
+ return f, nil
+ }
+ // Some non-standard file systems may return errors that don't include the path, that
+ // makes debugging harder.
+ if !errors.As(err, new(*fs.PathError)) {
+ err = &fs.PathError{
+ Op: "open",
+ Path: path,
+ Err: err,
+ }
+ }
+ return nil, err
+}
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/1_foobar.down.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/1_foobar.down.sql
new file mode 100644
index 00000000000..4267951a5b6
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/1_foobar.down.sql
@@ -0,0 +1 @@
+1 down
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/1_foobar.up.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/1_foobar.up.sql
new file mode 100644
index 00000000000..046fd5a5dc0
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/1_foobar.up.sql
@@ -0,0 +1 @@
+1 up
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/3_foobar.up.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/3_foobar.up.sql
new file mode 100644
index 00000000000..77c1b77dcbd
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/3_foobar.up.sql
@@ -0,0 +1 @@
+3 up
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/4_foobar.down.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/4_foobar.down.sql
new file mode 100644
index 00000000000..b405d8bd024
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/4_foobar.down.sql
@@ -0,0 +1 @@
+4 down
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/4_foobar.up.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/4_foobar.up.sql
new file mode 100644
index 00000000000..eba61bb94ea
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/4_foobar.up.sql
@@ -0,0 +1 @@
+4 up
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/5_foobar.down.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/5_foobar.down.sql
new file mode 100644
index 00000000000..6dc96e20688
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/5_foobar.down.sql
@@ -0,0 +1 @@
+5 down
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/7_foobar.down.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/7_foobar.down.sql
new file mode 100644
index 00000000000..46636016b3a
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/7_foobar.down.sql
@@ -0,0 +1 @@
+7 down
diff --git a/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/7_foobar.up.sql b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/7_foobar.up.sql
new file mode 100644
index 00000000000..cdbc410ee90
--- /dev/null
+++ b/vendor/github.com/golang-migrate/migrate/v4/source/iofs/testdata/migrations/7_foobar.up.sql
@@ -0,0 +1 @@
+7 up
diff --git a/vendor/github.com/golang-migrate/migrate/v4/util.go b/vendor/github.com/golang-migrate/migrate/v4/util.go
index 4aeb0f22113..26131a3ffaa 100644
--- a/vendor/github.com/golang-migrate/migrate/v4/util.go
+++ b/vendor/github.com/golang-migrate/migrate/v4/util.go
@@ -1,18 +1,22 @@
package migrate
import (
- "errors"
"fmt"
nurl "net/url"
"strings"
)
// MultiError holds multiple errors.
+//
+// Deprecated: Use github.com/hashicorp/go-multierror instead
type MultiError struct {
Errs []error
}
// NewMultiError returns an error type holding multiple errors.
+//
+// Deprecated: Use github.com/hashicorp/go-multierror instead
+//
func NewMultiError(errs ...error) MultiError {
compactErrs := make([]error, 0)
for _, e := range errs {
@@ -44,42 +48,6 @@ func suint(n int) uint {
return uint(n)
}
-var errNoScheme = errors.New("no scheme")
-var errEmptyURL = errors.New("URL cannot be empty")
-
-func sourceSchemeFromURL(url string) (string, error) {
- u, err := schemeFromURL(url)
- if err != nil {
- return "", fmt.Errorf("source: %v", err)
- }
- return u, nil
-}
-
-func databaseSchemeFromURL(url string) (string, error) {
- u, err := schemeFromURL(url)
- if err != nil {
- return "", fmt.Errorf("database: %v", err)
- }
- return u, nil
-}
-
-// schemeFromURL returns the scheme from a URL string
-func schemeFromURL(url string) (string, error) {
- if url == "" {
- return "", errEmptyURL
- }
-
- u, err := nurl.Parse(url)
- if err != nil {
- return "", err
- }
- if len(u.Scheme) == 0 {
- return "", errNoScheme
- }
-
- return u.Scheme, nil
-}
-
// FilterCustomQuery filters all query values starting with `x-`
func FilterCustomQuery(u *nurl.URL) *nurl.URL {
ux := *u
diff --git a/vendor/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml
index 304a8359558..24b80388f72 100644
--- a/vendor/github.com/hashicorp/go-multierror/.travis.yml
+++ b/vendor/github.com/hashicorp/go-multierror/.travis.yml
@@ -9,4 +9,4 @@ branches:
only:
- master
-script: make test testrace
+script: env GO111MODULE=on make test testrace
diff --git a/vendor/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md
index ead5830f7b7..e92fa614cd6 100644
--- a/vendor/github.com/hashicorp/go-multierror/README.md
+++ b/vendor/github.com/hashicorp/go-multierror/README.md
@@ -14,9 +14,10 @@ be a list of errors. If the caller knows this, they can unwrap the
list and access the errors. If the caller doesn't know, the error
formats to a nice human-readable format.
-`go-multierror` implements the
-[errwrap](https://github.com/hashicorp/errwrap) interface so that it can
-be used with that library, as well.
+`go-multierror` is fully compatible with the Go standard library
+[errors](https://golang.org/pkg/errors/) package, including the
+functions `As`, `Is`, and `Unwrap`. This provides a standardized approach
+for introspecting on error values.
## Installation and Docs
@@ -81,6 +82,39 @@ if err := something(); err != nil {
}
```
+You can also use the standard [`errors.Unwrap`](https://golang.org/pkg/errors/#Unwrap)
+function. This will continue to unwrap into subsequent errors until none exist.
+
+**Extracting an error**
+
+The standard library [`errors.As`](https://golang.org/pkg/errors/#As)
+function can be used directly with a multierror to extract a specific error:
+
+```go
+// Assume err is a multierror value
+err := somefunc()
+
+// We want to know if "err" has a "RichErrorType" in it and extract it.
+var errRich RichErrorType
+if errors.As(err, &errRich) {
+ // It has it, and now errRich is populated.
+}
+```
+
+**Checking for an exact error value**
+
+Some errors are returned as exact errors such as the [`ErrNotExist`](https://golang.org/pkg/os/#pkg-variables)
+error in the `os` package. You can check if this error is present by using
+the standard [`errors.Is`](https://golang.org/pkg/errors/#Is) function.
+
+```go
+// Assume err is a multierror value
+err := somefunc()
+if errors.Is(err, os.ErrNotExist) {
+ // err contains os.ErrNotExist
+}
+```
+
**Returning a multierror only if there are errors**
If you build a `multierror.Error`, you can use the `ErrorOrNil` function
diff --git a/vendor/github.com/hashicorp/go-multierror/group.go b/vendor/github.com/hashicorp/go-multierror/group.go
new file mode 100644
index 00000000000..9c29efb7f87
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-multierror/group.go
@@ -0,0 +1,38 @@
+package multierror
+
+import "sync"
+
+// Group is a collection of goroutines which return errors that need to be
+// coalesced.
+type Group struct {
+ mutex sync.Mutex
+ err *Error
+ wg sync.WaitGroup
+}
+
+// Go calls the given function in a new goroutine.
+//
+// If the function returns an error it is added to the group multierror which
+// is returned by Wait.
+func (g *Group) Go(f func() error) {
+ g.wg.Add(1)
+
+ go func() {
+ defer g.wg.Done()
+
+ if err := f(); err != nil {
+ g.mutex.Lock()
+ g.err = Append(g.err, err)
+ g.mutex.Unlock()
+ }
+ }()
+}
+
+// Wait blocks until all function calls from the Go method have returned, then
+// returns the multierror.
+func (g *Group) Wait() *Error {
+ g.wg.Wait()
+ g.mutex.Lock()
+ defer g.mutex.Unlock()
+ return g.err
+}
diff --git a/vendor/github.com/hashicorp/go-multierror/multierror.go b/vendor/github.com/hashicorp/go-multierror/multierror.go
index 89b1422d1d1..d05dd926987 100644
--- a/vendor/github.com/hashicorp/go-multierror/multierror.go
+++ b/vendor/github.com/hashicorp/go-multierror/multierror.go
@@ -1,6 +1,7 @@
package multierror
import (
+ "errors"
"fmt"
)
@@ -49,3 +50,69 @@ func (e *Error) GoString() string {
func (e *Error) WrappedErrors() []error {
return e.Errors
}
+
+// Unwrap returns an error from Error (or nil if there are no errors).
+// This error returned will further support Unwrap to get the next error,
+// etc. The order will match the order of Errors in the multierror.Error
+// at the time of calling.
+//
+// The resulting error supports errors.As/Is/Unwrap so you can continue
+// to use the stdlib errors package to introspect further.
+//
+// This will perform a shallow copy of the errors slice. Any errors appended
+// to this error after calling Unwrap will not be available until a new
+// Unwrap is called on the multierror.Error.
+func (e *Error) Unwrap() error {
+ // If we have no errors then we do nothing
+ if e == nil || len(e.Errors) == 0 {
+ return nil
+ }
+
+ // If we have exactly one error, we can just return that directly.
+ if len(e.Errors) == 1 {
+ return e.Errors[0]
+ }
+
+ // Shallow copy the slice
+ errs := make([]error, len(e.Errors))
+ copy(errs, e.Errors)
+ return chain(errs)
+}
+
+// chain implements the interfaces necessary for errors.Is/As/Unwrap to
+// work in a deterministic way with multierror. A chain tracks a list of
+// errors while accounting for the current represented error. This lets
+// Is/As be meaningful.
+//
+// Unwrap returns the next error. In the cleanest form, Unwrap would return
+// the wrapped error here but we can't do that if we want to properly
+// get access to all the errors. Instead, users are recommended to use
+// Is/As to get the correct error type out.
+//
+// Precondition: []error is non-empty (len > 0)
+type chain []error
+
+// Error implements the error interface
+func (e chain) Error() string {
+ return e[0].Error()
+}
+
+// Unwrap implements errors.Unwrap by returning the next error in the
+// chain or nil if there are no more errors.
+func (e chain) Unwrap() error {
+ if len(e) == 1 {
+ return nil
+ }
+
+ return e[1:]
+}
+
+// As implements errors.As by attempting to map to the current value.
+func (e chain) As(target interface{}) bool {
+ return errors.As(e[0], target)
+}
+
+// Is implements errors.Is by comparing the current value directly.
+func (e chain) Is(target error) bool {
+ return errors.Is(e[0], target)
+}
diff --git a/vendor/github.com/jmoiron/sqlx/.gitignore b/vendor/github.com/jmoiron/sqlx/.gitignore
index 529841cf17e..b2be23c87f3 100644
--- a/vendor/github.com/jmoiron/sqlx/.gitignore
+++ b/vendor/github.com/jmoiron/sqlx/.gitignore
@@ -6,6 +6,7 @@
# Folders
_obj
_test
+.idea
# Architecture specific extensions/prefixes
*.[568vq]
diff --git a/vendor/github.com/jmoiron/sqlx/.travis.yml b/vendor/github.com/jmoiron/sqlx/.travis.yml
index 6bc68d67f21..d7281526e37 100644
--- a/vendor/github.com/jmoiron/sqlx/.travis.yml
+++ b/vendor/github.com/jmoiron/sqlx/.travis.yml
@@ -18,9 +18,9 @@ before_install:
# go versions to test
go:
- - "1.8"
- - "1.9"
- "1.10.x"
+ - "1.11.x"
+ - "1.12.x"
# run tests w/ coverage
script:
diff --git a/vendor/github.com/jmoiron/sqlx/README.md b/vendor/github.com/jmoiron/sqlx/README.md
index 839034365f0..0d7159290d9 100644
--- a/vendor/github.com/jmoiron/sqlx/README.md
+++ b/vendor/github.com/jmoiron/sqlx/README.md
@@ -15,30 +15,34 @@ Major additional concepts are:
* `Get` and `Select` to go quickly from query to struct/slice
In addition to the [godoc API documentation](http://godoc.org/github.com/jmoiron/sqlx),
-there is also some [standard documentation](http://jmoiron.github.io/sqlx/) that
+there is also some [user documentation](http://jmoiron.github.io/sqlx/) that
explains how to use `database/sql` along with sqlx.
## Recent Changes
-* The [introduction](https://github.com/jmoiron/sqlx/pull/387) of `sql.ColumnType` sets the required minimum Go version to 1.8.
+1.3.0:
-* sqlx/types.JsonText has been renamed to JSONText to follow Go naming conventions.
+* `sqlx.DB.Connx(context.Context) *sqlx.Conn`
+* `sqlx.BindDriver(driverName, bindType)`
+* support for `[]map[string]interface{}` to do "batch" insertions
+* allocation & perf improvements for `sqlx.In`
-This breaks backwards compatibility, but it's in a way that is trivially fixable
-(`s/JsonText/JSONText/g`). The `types` package is both experimental and not in
-active development currently.
+DB.Connx returns an `sqlx.Conn`, which is an `sql.Conn`-alike consistent with
+sqlx's wrapping of other types.
-* Using Go 1.6 and below with `types.JSONText` and `types.GzippedText` can be _potentially unsafe_, **especially** when used with common auto-scan sqlx idioms like `Select` and `Get`. See [golang bug #13905](https://github.com/golang/go/issues/13905).
+`BindDriver` allows users to control the bindvars that sqlx will use for drivers,
+and add new drivers at runtime. This results in a very slight performance hit
+when resolving the driver into a bind type (~40ns per call), but it allows users
+to specify what bindtype their driver uses even when sqlx has not been updated
+to know about it by default.
### Backwards Compatibility
-There is no Go1-like promise of absolute stability, but I take the issue seriously
-and will maintain the library in a compatible state unless vital bugs prevent me
-from doing so. Since [#59](https://github.com/jmoiron/sqlx/issues/59) and
-[#60](https://github.com/jmoiron/sqlx/issues/60) necessitated breaking behavior,
-a wider API cleanup was done at the time of fixing. It's possible this will happen
-in future; if it does, a git tag will be provided for users requiring the old
-behavior to continue to use it until such a time as they can migrate.
+Compatibility with the most recent two versions of Go is a requirement for any
+new changes. Compatibility beyond that is not guaranteed.
+
+Versioning is done with Go modules. Breaking changes (eg. removing deprecated API)
+will get major version number bumps.
## install
@@ -102,7 +106,7 @@ type Place struct {
}
func main() {
- // this Pings the database trying to connect, panics on error
+ // this Pings the database trying to connect
// use sqlx.Open() for sql.Open() semantics
db, err := sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable")
if err != nil {
@@ -182,6 +186,28 @@ func main() {
// as the name -> db mapping, so struct fields are lowercased and the `db` tag
// is taken into consideration.
rows, err = db.NamedQuery(`SELECT * FROM person WHERE first_name=:first_name`, jason)
+
+
+ // batch insert
+
+ // batch insert with structs
+ personStructs := []Person{
+ {FirstName: "Ardie", LastName: "Savea", Email: "asavea@ab.co.nz"},
+ {FirstName: "Sonny Bill", LastName: "Williams", Email: "sbw@ab.co.nz"},
+ {FirstName: "Ngani", LastName: "Laumape", Email: "nlaumape@ab.co.nz"},
+ }
+
+ _, err = db.NamedExec(`INSERT INTO person (first_name, last_name, email)
+ VALUES (:first_name, :last_name, :email)`, personStructs)
+
+ // batch insert with maps
+ personMaps := []map[string]interface{}{
+ {"first_name": "Ardie", "last_name": "Savea", "email": "asavea@ab.co.nz"},
+ {"first_name": "Sonny Bill", "last_name": "Williams", "email": "sbw@ab.co.nz"},
+ {"first_name": "Ngani", "last_name": "Laumape", "email": "nlaumape@ab.co.nz"},
+ }
+
+ _, err = db.NamedExec(`INSERT INTO person (first_name, last_name, email)
+ VALUES (:first_name, :last_name, :email)`, personMaps)
}
```
-
diff --git a/vendor/github.com/jmoiron/sqlx/bind.go b/vendor/github.com/jmoiron/sqlx/bind.go
index 0a48252a033..369d73b2ebd 100644
--- a/vendor/github.com/jmoiron/sqlx/bind.go
+++ b/vendor/github.com/jmoiron/sqlx/bind.go
@@ -7,6 +7,7 @@ import (
"reflect"
"strconv"
"strings"
+ "sync"
"github.com/jmoiron/sqlx/reflectx"
)
@@ -20,21 +21,36 @@ const (
AT
)
+var defaultBinds = map[int][]string{
+ DOLLAR: []string{"postgres", "pgx", "pq-timeouts", "cloudsqlpostgres", "ql", "nrpostgres", "cockroach"},
+ QUESTION: []string{"mysql", "sqlite3", "nrmysql", "nrsqlite3"},
+ NAMED: []string{"oci8", "ora", "goracle"},
+ AT: []string{"sqlserver"},
+}
+
+var binds sync.Map
+
+func init() {
+ for bind, drivers := range defaultBinds {
+ for _, driver := range drivers {
+ BindDriver(driver, bind)
+ }
+ }
+
+}
+
// BindType returns the bindtype for a given database given a drivername.
func BindType(driverName string) int {
- switch driverName {
- case "postgres", "pgx", "pq-timeouts", "cloudsqlpostgres":
- return DOLLAR
- case "mysql":
- return QUESTION
- case "sqlite3":
- return QUESTION
- case "oci8", "ora", "goracle":
- return NAMED
- case "sqlserver":
- return AT
- }
- return UNKNOWN
+ itype, ok := binds.Load(driverName)
+ if !ok {
+ return UNKNOWN
+ }
+ return itype.(int)
+}
+
+// BindDriver sets the BindType for driverName to bindType.
+func BindDriver(driverName string, bindType int) {
+ binds.Store(driverName, bindType)
}
// FIXME: this should be able to be tolerant of escaped ?'s in queries without
@@ -98,6 +114,28 @@ func rebindBuff(bindType int, query string) string {
return rqb.String()
}
+func asSliceForIn(i interface{}) (v reflect.Value, ok bool) {
+ if i == nil {
+ return reflect.Value{}, false
+ }
+
+ v = reflect.ValueOf(i)
+ t := reflectx.Deref(v.Type())
+
+ // Only expand slices
+ if t.Kind() != reflect.Slice {
+ return reflect.Value{}, false
+ }
+
+ // []byte is a driver.Value type so it should not be expanded
+ if t == reflect.TypeOf([]byte{}) {
+ return reflect.Value{}, false
+
+ }
+
+ return v, true
+}
+
// In expands slice values in args, returning the modified query string
// and a new arg list that can be executed by a database. The `query` should
// use the `?` bindVar. The return value uses the `?` bindVar.
@@ -113,17 +151,25 @@ func In(query string, args ...interface{}) (string, []interface{}, error) {
var flatArgsCount int
var anySlices bool
- meta := make([]argMeta, len(args))
+ var stackMeta [32]argMeta
+
+ var meta []argMeta
+ if len(args) <= len(stackMeta) {
+ meta = stackMeta[:len(args)]
+ } else {
+ meta = make([]argMeta, len(args))
+ }
for i, arg := range args {
if a, ok := arg.(driver.Valuer); ok {
- arg, _ = a.Value()
+ var err error
+ arg, err = a.Value()
+ if err != nil {
+ return "", nil, err
+ }
}
- v := reflect.ValueOf(arg)
- t := reflectx.Deref(v.Type())
- // []byte is a driver.Value type so it should not be expanded
- if t.Kind() == reflect.Slice && t != reflect.TypeOf([]byte{}) {
+ if v, ok := asSliceForIn(arg); ok {
meta[i].length = v.Len()
meta[i].v = v
@@ -146,7 +192,9 @@ func In(query string, args ...interface{}) (string, []interface{}, error) {
}
newArgs := make([]interface{}, 0, flatArgsCount)
- buf := make([]byte, 0, len(query)+len(", ?")*flatArgsCount)
+
+ var buf strings.Builder
+ buf.Grow(len(query) + len(", ?")*flatArgsCount)
var arg, offset int
@@ -172,10 +220,10 @@ func In(query string, args ...interface{}) (string, []interface{}, error) {
}
// write everything up to and including our ? character
- buf = append(buf, query[:offset+i+1]...)
+ buf.WriteString(query[:offset+i+1])
for si := 1; si < argMeta.length; si++ {
- buf = append(buf, ", ?"...)
+ buf.WriteString(", ?")
}
newArgs = appendReflectSlice(newArgs, argMeta.v, argMeta.length)
@@ -186,13 +234,13 @@ func In(query string, args ...interface{}) (string, []interface{}, error) {
offset = 0
}
- buf = append(buf, query...)
+ buf.WriteString(query)
if arg < len(meta) {
return "", nil, errors.New("number of bindVars less than number arguments")
}
- return string(buf), newArgs, nil
+ return buf.String(), newArgs, nil
}
func appendReflectSlice(args []interface{}, v reflect.Value, vlen int) []interface{} {
diff --git a/vendor/github.com/jmoiron/sqlx/named.go b/vendor/github.com/jmoiron/sqlx/named.go
index fa82b5609f6..276ed568d41 100644
--- a/vendor/github.com/jmoiron/sqlx/named.go
+++ b/vendor/github.com/jmoiron/sqlx/named.go
@@ -12,10 +12,12 @@ package sqlx
// * bindArgs, bindMapArgs, bindAnyArgs - given a list of names, return an arglist
//
import (
+ "bytes"
"database/sql"
"errors"
"fmt"
"reflect"
+ "regexp"
"strconv"
"unicode"
@@ -144,8 +146,22 @@ func prepareNamed(p namedPreparer, query string) (*NamedStmt, error) {
}, nil
}
+// convertMapStringInterface attempts to convert v to map[string]interface{}.
+// Unlike v.(map[string]interface{}), this function works on named types that
+// are convertible to map[string]interface{} as well.
+func convertMapStringInterface(v interface{}) (map[string]interface{}, bool) {
+ var m map[string]interface{}
+ mtype := reflect.TypeOf(m)
+ t := reflect.TypeOf(v)
+ if !t.ConvertibleTo(mtype) {
+ return nil, false
+ }
+ return reflect.ValueOf(v).Convert(mtype).Interface().(map[string]interface{}), true
+
+}
+
func bindAnyArgs(names []string, arg interface{}, m *reflectx.Mapper) ([]interface{}, error) {
- if maparg, ok := arg.(map[string]interface{}); ok {
+ if maparg, ok := convertMapStringInterface(arg); ok {
return bindMapArgs(names, maparg)
}
return bindArgs(names, arg, m)
@@ -200,7 +216,7 @@ func bindStruct(bindType int, query string, arg interface{}, m *reflectx.Mapper)
return "", []interface{}{}, err
}
- arglist, err := bindArgs(names, arg, m)
+ arglist, err := bindAnyArgs(names, arg, m)
if err != nil {
return "", []interface{}{}, err
}
@@ -208,6 +224,56 @@ func bindStruct(bindType int, query string, arg interface{}, m *reflectx.Mapper)
return bound, arglist, nil
}
+var valueBracketReg = regexp.MustCompile(`\([^(]*.[^(]\)$`)
+
+func fixBound(bound string, loop int) string {
+ loc := valueBracketReg.FindStringIndex(bound)
+ if len(loc) != 2 {
+ return bound
+ }
+ var buffer bytes.Buffer
+
+ buffer.WriteString(bound[0:loc[1]])
+ for i := 0; i < loop-1; i++ {
+ buffer.WriteString(",")
+ buffer.WriteString(bound[loc[0]:loc[1]])
+ }
+ buffer.WriteString(bound[loc[1]:])
+ return buffer.String()
+}
+
+// bindArray binds a named parameter query with fields from an array or slice of
+// structs argument.
+func bindArray(bindType int, query string, arg interface{}, m *reflectx.Mapper) (string, []interface{}, error) {
+ // do the initial binding with QUESTION; if bindType is not question,
+ // we can rebind it at the end.
+ bound, names, err := compileNamedQuery([]byte(query), QUESTION)
+ if err != nil {
+ return "", []interface{}{}, err
+ }
+ arrayValue := reflect.ValueOf(arg)
+ arrayLen := arrayValue.Len()
+ if arrayLen == 0 {
+ return "", []interface{}{}, fmt.Errorf("length of array is 0: %#v", arg)
+ }
+ var arglist = make([]interface{}, 0, len(names)*arrayLen)
+ for i := 0; i < arrayLen; i++ {
+ elemArglist, err := bindAnyArgs(names, arrayValue.Index(i).Interface(), m)
+ if err != nil {
+ return "", []interface{}{}, err
+ }
+ arglist = append(arglist, elemArglist...)
+ }
+ if arrayLen > 1 {
+ bound = fixBound(bound, arrayLen)
+ }
+ // adjust binding type if we weren't on question
+ if bindType != QUESTION {
+ bound = Rebind(bindType, bound)
+ }
+ return bound, arglist, nil
+}
+
// bindMap binds a named parameter query with a map of arguments.
func bindMap(bindType int, query string, args map[string]interface{}) (string, []interface{}, error) {
bound, names, err := compileNamedQuery([]byte(query), bindType)
@@ -259,7 +325,7 @@ func compileNamedQuery(qs []byte, bindType int) (query string, names []string, e
}
inName = true
name = []byte{}
- } else if inName && i > 0 && b == '=' {
+ } else if inName && i > 0 && b == '=' && len(name) == 0 {
rebound = append(rebound, ':', '=')
inName = false
continue
@@ -327,10 +393,20 @@ func Named(query string, arg interface{}) (string, []interface{}, error) {
}
func bindNamedMapper(bindType int, query string, arg interface{}, m *reflectx.Mapper) (string, []interface{}, error) {
- if maparg, ok := arg.(map[string]interface{}); ok {
- return bindMap(bindType, query, maparg)
+ t := reflect.TypeOf(arg)
+ k := t.Kind()
+ switch {
+ case k == reflect.Map && t.Key().Kind() == reflect.String:
+ m, ok := convertMapStringInterface(arg)
+ if !ok {
+ return "", nil, fmt.Errorf("sqlx.bindNamedMapper: unsupported map type: %T", arg)
+ }
+ return bindMap(bindType, query, m)
+ case k == reflect.Array || k == reflect.Slice:
+ return bindArray(bindType, query, arg, m)
+ default:
+ return bindStruct(bindType, query, arg, m)
}
- return bindStruct(bindType, query, arg, m)
}
// NamedQuery binds a named query and then runs Query on the result using the
@@ -346,7 +422,7 @@ func NamedQuery(e Ext, query string, arg interface{}) (*Rows, error) {
// NamedExec uses BindStruct to get a query executable by the driver and
// then runs Exec on the result. Returns an error from the binding
-// or the query excution itself.
+// or the query execution itself.
func NamedExec(e Ext, query string, arg interface{}) (sql.Result, error) {
q, args, err := bindNamedMapper(BindType(e.DriverName()), query, arg, mapperFor(e))
if err != nil {
diff --git a/vendor/github.com/jmoiron/sqlx/named_context.go b/vendor/github.com/jmoiron/sqlx/named_context.go
index 9405007e234..07ad2165d01 100644
--- a/vendor/github.com/jmoiron/sqlx/named_context.go
+++ b/vendor/github.com/jmoiron/sqlx/named_context.go
@@ -122,7 +122,7 @@ func NamedQueryContext(ctx context.Context, e ExtContext, query string, arg inte
// NamedExecContext uses BindStruct to get a query executable by the driver and
// then runs Exec on the result. Returns an error from the binding
-// or the query excution itself.
+// or the query execution itself.
func NamedExecContext(ctx context.Context, e ExtContext, query string, arg interface{}) (sql.Result, error) {
q, args, err := bindNamedMapper(BindType(e.DriverName()), query, arg, mapperFor(e))
if err != nil {
diff --git a/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go b/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go
index 73c21eb39d3..0b1099428da 100644
--- a/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go
+++ b/vendor/github.com/jmoiron/sqlx/reflectx/reflect.go
@@ -269,9 +269,7 @@ type typeQueue struct {
// A copying append that creates a new slice each time.
func apnd(is []int, i int) []int {
x := make([]int, len(is)+1)
- for p, n := range is {
- x[p] = n
- }
+ copy(x, is)
x[len(x)-1] = i
return x
}
@@ -431,9 +429,14 @@ QueueLoop:
flds := &StructMap{Index: m, Tree: root, Paths: map[string]*FieldInfo{}, Names: map[string]*FieldInfo{}}
for _, fi := range flds.Index {
- flds.Paths[fi.Path] = fi
- if fi.Name != "" && !fi.Embedded {
- flds.Names[fi.Path] = fi
+ // check if nothing has already been pushed with the same path
+ // sometimes you can choose to override a type using embedded struct
+ fld, ok := flds.Paths[fi.Path]
+ if !ok || fld.Embedded {
+ flds.Paths[fi.Path] = fi
+ if fi.Name != "" && !fi.Embedded {
+ flds.Names[fi.Path] = fi
+ }
}
}
diff --git a/vendor/github.com/jmoiron/sqlx/sqlx.go b/vendor/github.com/jmoiron/sqlx/sqlx.go
index 3f000f47ce4..112ef70e9cc 100644
--- a/vendor/github.com/jmoiron/sqlx/sqlx.go
+++ b/vendor/github.com/jmoiron/sqlx/sqlx.go
@@ -64,11 +64,7 @@ func isScannable(t reflect.Type) bool {
// it's not important that we use the right mapper for this particular object,
// we're only concerned on how many exported fields this struct has
- m := mapper()
- if len(m.TypeMap(t).Index) == 0 {
- return true
- }
- return false
+ return len(mapper().TypeMap(t).Index) == 0
}
// ColScanner is an interface used by MapScan and SliceScan
@@ -149,15 +145,15 @@ func isUnsafe(i interface{}) bool {
}
func mapperFor(i interface{}) *reflectx.Mapper {
- switch i.(type) {
+ switch i := i.(type) {
case DB:
- return i.(DB).Mapper
+ return i.Mapper
case *DB:
- return i.(*DB).Mapper
+ return i.Mapper
case Tx:
- return i.(Tx).Mapper
+ return i.Mapper
case *Tx:
- return i.(*Tx).Mapper
+ return i.Mapper
default:
return mapper()
}
@@ -380,6 +376,14 @@ func (db *DB) PrepareNamed(query string) (*NamedStmt, error) {
return prepareNamed(db, query)
}
+// Conn is a wrapper around sql.Conn with extra functionality
+type Conn struct {
+ *sql.Conn
+ driverName string
+ unsafe bool
+ Mapper *reflectx.Mapper
+}
+
// Tx is an sqlx wrapper around sql.Tx with extra functionality
type Tx struct {
*sql.Tx
diff --git a/vendor/github.com/jmoiron/sqlx/sqlx_context.go b/vendor/github.com/jmoiron/sqlx/sqlx_context.go
index 06033111a58..7aa4dd01e19 100644
--- a/vendor/github.com/jmoiron/sqlx/sqlx_context.go
+++ b/vendor/github.com/jmoiron/sqlx/sqlx_context.go
@@ -208,6 +208,74 @@ func (db *DB) BeginTxx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) {
return &Tx{Tx: tx, driverName: db.driverName, unsafe: db.unsafe, Mapper: db.Mapper}, err
}
+// Connx returns an *sqlx.Conn instead of an *sql.Conn.
+func (db *DB) Connx(ctx context.Context) (*Conn, error) {
+ conn, err := db.DB.Conn(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ return &Conn{Conn: conn, driverName: db.driverName, unsafe: db.unsafe, Mapper: db.Mapper}, nil
+}
+
+// BeginTxx begins a transaction and returns an *sqlx.Tx instead of an
+// *sql.Tx.
+//
+// The provided context is used until the transaction is committed or rolled
+// back. If the context is canceled, the sql package will roll back the
+// transaction. Tx.Commit will return an error if the context provided to
+// BeginxContext is canceled.
+func (c *Conn) BeginTxx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) {
+ tx, err := c.Conn.BeginTx(ctx, opts)
+ if err != nil {
+ return nil, err
+ }
+ return &Tx{Tx: tx, driverName: c.driverName, unsafe: c.unsafe, Mapper: c.Mapper}, err
+}
+
+// SelectContext using this Conn.
+// Any placeholder parameters are replaced with supplied args.
+func (c *Conn) SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error {
+ return SelectContext(ctx, c, dest, query, args...)
+}
+
+// GetContext using this Conn.
+// Any placeholder parameters are replaced with supplied args.
+// An error is returned if the result set is empty.
+func (c *Conn) GetContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error {
+ return GetContext(ctx, c, dest, query, args...)
+}
+
+// PreparexContext returns an sqlx.Stmt instead of a sql.Stmt.
+//
+// The provided context is used for the preparation of the statement, not for
+// the execution of the statement.
+func (c *Conn) PreparexContext(ctx context.Context, query string) (*Stmt, error) {
+ return PreparexContext(ctx, c, query)
+}
+
+// QueryxContext queries the database and returns an *sqlx.Rows.
+// Any placeholder parameters are replaced with supplied args.
+func (c *Conn) QueryxContext(ctx context.Context, query string, args ...interface{}) (*Rows, error) {
+ r, err := c.Conn.QueryContext(ctx, query, args...)
+ if err != nil {
+ return nil, err
+ }
+ return &Rows{Rows: r, unsafe: c.unsafe, Mapper: c.Mapper}, err
+}
+
+// QueryRowxContext queries the database and returns an *sqlx.Row.
+// Any placeholder parameters are replaced with supplied args.
+func (c *Conn) QueryRowxContext(ctx context.Context, query string, args ...interface{}) *Row {
+ rows, err := c.Conn.QueryContext(ctx, query, args...)
+ return &Row{rows: rows, err: err, unsafe: c.unsafe, Mapper: c.Mapper}
+}
+
+// Rebind a query within a Conn's bindvar type.
+func (c *Conn) Rebind(query string) string {
+ return Rebind(BindType(c.driverName), query)
+}
+
// StmtxContext returns a version of the prepared statement which runs within a
// transaction. Provided stmt can be either *sql.Stmt or *sqlx.Stmt.
func (tx *Tx) StmtxContext(ctx context.Context, stmt interface{}) *Stmt {
diff --git a/vendor/github.com/karrick/godirwalk/.gitignore b/vendor/github.com/karrick/godirwalk/.gitignore
deleted file mode 100644
index ea2d9ece601..00000000000
--- a/vendor/github.com/karrick/godirwalk/.gitignore
+++ /dev/null
@@ -1,19 +0,0 @@
-# Binaries for programs and plugins
-*.exe
-*.dll
-*.so
-*.dylib
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
-.glide/
-
-examples/remove-empty-directories/remove-empty-directories
-examples/sizes/sizes
-examples/walk-fast/walk-fast
-examples/walk-stdlib/walk-stdlib
diff --git a/vendor/github.com/karrick/godirwalk/LICENSE b/vendor/github.com/karrick/godirwalk/LICENSE
deleted file mode 100644
index 01ce194c80d..00000000000
--- a/vendor/github.com/karrick/godirwalk/LICENSE
+++ /dev/null
@@ -1,25 +0,0 @@
-BSD 2-Clause License
-
-Copyright (c) 2017, Karrick McDermott
-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/karrick/godirwalk/README.md b/vendor/github.com/karrick/godirwalk/README.md
deleted file mode 100644
index 0902cce5c9e..00000000000
--- a/vendor/github.com/karrick/godirwalk/README.md
+++ /dev/null
@@ -1,320 +0,0 @@
-# godirwalk
-
-`godirwalk` is a library for traversing a directory tree on a file
-system.
-
-[![GoDoc](https://godoc.org/github.com/karrick/godirwalk?status.svg)](https://godoc.org/github.com/karrick/godirwalk) [![Build Status](https://dev.azure.com/microsoft0235/microsoft/_apis/build/status/karrick.godirwalk?branchName=master)](https://dev.azure.com/microsoft0235/microsoft/_build/latest?definitionId=1&branchName=master)
-
-In short, why do I use this library?
-
-1. It's faster than `filepath.Walk`.
-1. It's more correct on Windows than `filepath.Walk`.
-1. It's more easy to use than `filepath.Walk`.
-1. It's more flexible than `filepath.Walk`.
-
-## Usage Example
-
-Additional examples are provided in the `examples/` subdirectory.
-
-This library will normalize the provided top level directory name
-based on the os-specific path separator by calling `filepath.Clean` on
-its first argument. However it always provides the pathname created by
-using the correct os-specific path separator when invoking the
-provided callback function.
-
-```Go
- dirname := "some/directory/root"
- err := godirwalk.Walk(dirname, &godirwalk.Options{
- Callback: func(osPathname string, de *godirwalk.Dirent) error {
- // Following string operation is not most performant way
- // of doing this, but common enough to warrant a simple
- // example here:
- if strings.Contains(osPathname, ".git") {
- return godirwalk.SkipThis
- }
- fmt.Printf("%s %s\n", de.ModeType(), osPathname)
- return nil
- },
- Unsorted: true, // (optional) set true for faster yet non-deterministic enumeration (see godoc)
- })
-```
-
-This library not only provides functions for traversing a file system
-directory tree, but also for obtaining a list of immediate descendants
-of a particular directory, typically much more quickly than using
-`os.ReadDir` or `os.ReadDirnames`.
-
-## Description
-
-Here's why I use `godirwalk` in preference to `filepath.Walk`,
-`os.ReadDir`, and `os.ReadDirnames`.
-
-### It's faster than `filepath.Walk`
-
-When compared against `filepath.Walk` in benchmarks, it has been
-observed to run between five and ten times the speed on darwin, at
-speeds comparable to the that of the unix `find` utility; and about
-twice the speed on linux; and about four times the speed on Windows.
-
-How does it obtain this performance boost? It does less work to give
-you nearly the same output. This library calls the same `syscall`
-functions to do the work, but it makes fewer calls, does not throw
-away information that it might need, and creates less memory churn
-along the way by reusing the same scratch buffer for reading from a
-directory rather than reallocating a new buffer every time it reads
-file system entry data from the operating system.
-
-While traversing a file system directory tree, `filepath.Walk` obtains
-the list of immediate descendants of a directory, and throws away the
-node type information for the file system entry that is provided by
-the operating system that comes with the node's name. Then,
-immediately prior to invoking the callback function, `filepath.Walk`
-invokes `os.Stat` for each node, and passes the returned `os.FileInfo`
-information to the callback.
-
-While the `os.FileInfo` information provided by `os.Stat` is extremely
-helpful--and even includes the `os.FileMode` data--providing it
-requires an additional system call for each node.
-
-Because most callbacks only care about what the node type is, this
-library does not throw the type information away, but rather provides
-that information to the callback function in the form of a
-`os.FileMode` value. Note that the provided `os.FileMode` value that
-this library provides only has the node type information, and does not
-have the permission bits, sticky bits, or other information from the
-file's mode. If the callback does care about a particular node's
-entire `os.FileInfo` data structure, the callback can easiy invoke
-`os.Stat` when needed, and only when needed.
-
-#### Benchmarks
-
-##### macOS
-
-```Bash
-$ go test -bench=. -benchmem
-goos: darwin
-goarch: amd64
-pkg: github.com/karrick/godirwalk
-BenchmarkReadDirnamesStandardLibrary-12 50000 26250 ns/op 10360 B/op 16 allocs/op
-BenchmarkReadDirnamesThisLibrary-12 50000 24372 ns/op 5064 B/op 20 allocs/op
-BenchmarkFilepathWalk-12 1 1099524875 ns/op 228415912 B/op 416952 allocs/op
-BenchmarkGodirwalk-12 2 526754589 ns/op 103110464 B/op 451442 allocs/op
-BenchmarkGodirwalkUnsorted-12 3 509219296 ns/op 100751400 B/op 378800 allocs/op
-BenchmarkFlameGraphFilepathWalk-12 1 7478618820 ns/op 2284138176 B/op 4169453 allocs/op
-BenchmarkFlameGraphGodirwalk-12 1 4977264058 ns/op 1031105328 B/op 4514423 allocs/op
-PASS
-ok github.com/karrick/godirwalk 21.219s
-```
-
-##### Linux
-
-```Bash
-$ go test -bench=. -benchmem
-goos: linux
-goarch: amd64
-pkg: github.com/karrick/godirwalk
-BenchmarkReadDirnamesStandardLibrary-12 100000 15458 ns/op 10360 B/op 16 allocs/op
-BenchmarkReadDirnamesThisLibrary-12 100000 14646 ns/op 5064 B/op 20 allocs/op
-BenchmarkFilepathWalk-12 2 631034745 ns/op 228210216 B/op 416939 allocs/op
-BenchmarkGodirwalk-12 3 358714883 ns/op 102988664 B/op 451437 allocs/op
-BenchmarkGodirwalkUnsorted-12 3 355363915 ns/op 100629234 B/op 378796 allocs/op
-BenchmarkFlameGraphFilepathWalk-12 1 6086913991 ns/op 2282104720 B/op 4169417 allocs/op
-BenchmarkFlameGraphGodirwalk-12 1 3456398824 ns/op 1029886400 B/op 4514373 allocs/op
-PASS
-ok github.com/karrick/godirwalk 19.179s
-```
-
-### It's more correct on Windows than `filepath.Walk`
-
-I did not previously care about this either, but humor me. We all love
-how we can write once and run everywhere. It is essential for the
-language's adoption, growth, and success, that the software we create
-can run unmodified on all architectures and operating systems
-supported by Go.
-
-When the traversed file system has a logical loop caused by symbolic
-links to directories, on unix `filepath.Walk` ignores symbolic links
-and traverses the entire directory tree without error. On Windows
-however, `filepath.Walk` will continue following directory symbolic
-links, even though it is not supposed to, eventually causing
-`filepath.Walk` to terminate early and return an error when the
-pathname gets too long from concatenating endless loops of symbolic
-links onto the pathname. This error comes from Windows, passes through
-`filepath.Walk`, and to the upstream client running `filepath.Walk`.
-
-The takeaway is that behavior is different based on which platform
-`filepath.Walk` is running. While this is clearly not intentional,
-until it is fixed in the standard library, it presents a compatibility
-problem.
-
-This library fixes the above problem such that it will never follow
-logical file sytem loops on either unix or Windows. Furthermore, it
-will only follow symbolic links when `FollowSymbolicLinks` is set to
-true. Behavior on Windows and other operating systems is identical.
-
-### It's more easy to use than `filepath.Walk`
-
-While this library strives to mimic the behavior of the incredibly
-well-written `filepath.Walk` standard library, there are places where
-it deviates a bit in order to provide a more easy or intuitive caller
-interface.
-
-#### Callback interface does not send you an error to check
-
-Since this library does not invoke `os.Stat` on every file system node
-it encounters, there is no possible error event for the callback
-function to filter on. The third argument in the `filepath.WalkFunc`
-function signature to pass the error from `os.Stat` to the callback
-function is no longer necessary, and thus eliminated from signature of
-the callback function from this library.
-
-Furthermore, this slight interface difference between
-`filepath.WalkFunc` and this library's `WalkFunc` eliminates the
-boilerplate code that callback handlers must write when they use
-`filepath.Walk`. Rather than every callback function needing to check
-the error value passed into it and branch accordingly, users of this
-library do not even have an error value to check immediately upon
-entry into the callback function. This is an improvement both in
-runtime performance and code clarity.
-
-#### Callback function is invoked with OS specific file system path separator
-
-On every OS platform `filepath.Walk` invokes the callback function
-with a solidus (`/`) delimited pathname. By contrast this library
-invokes the callback with the os-specific pathname separator,
-obviating a call to `filepath.Clean` in the callback function for each
-node prior to actually using the provided pathname.
-
-In other words, even on Windows, `filepath.Walk` will invoke the
-callback with `some/path/to/foo.txt`, requiring well written clients
-to perform pathname normalization for every file prior to working with
-the specified file. This is a hidden boilerplate requirement to create
-truly os agnostic callback functions. In truth, many clients developed
-on unix and not tested on Windows neglect this subtlety, and will
-result in software bugs when someone tries to run that software on
-Windows.
-
-This library invokes the callback function with `some\path\to\foo.txt`
-for the same file when running on Windows, eliminating the need to
-normalize the pathname by the client, and lessen the likelyhood that a
-client will work on unix but not on Windows.
-
-This enhancement eliminates necessity for some more boilerplate code
-in callback functions while improving the runtime performance of this
-library.
-
-#### `godirwalk.SkipThis` is more intuitive to use than `filepath.SkipDir`
-
-One arguably confusing aspect of the `filepath.WalkFunc` interface
-that this library must emulate is how a caller tells the `Walk`
-function to skip file system entries. With both `filepath.Walk` and
-this library's `Walk`, when a callback function wants to skip a
-directory and not descend into its children, it returns
-`filepath.SkipDir`. If the callback function returns
-`filepath.SkipDir` for a non-directory, `filepath.Walk` and this
-library will stop processing any more entries in the current
-directory. This is not necessarily what most developers want or
-expect. If you want to simply skip a particular non-directory entry
-but continue processing entries in the directory, the callback
-function must return nil.
-
-The implications of this interface design is when you want to walk a
-file system hierarchy and skip an entry, you have to return a
-different value based on what type of file system entry that node
-is. To skip an entry, if the entry is a directory, you must return
-`filepath.SkipDir`, and if entry is not a directory, you must return
-`nil`. This is an unfortunate hurdle I have observed many developers
-struggling with, simply because it is not an intuitive interface.
-
-Here is an example callback function that adheres to
-`filepath.WalkFunc` interface to have it skip any file system entry
-whose full pathname includes a particular substring, `optSkip`. Note
-that this library still supports identical behavior of `filepath.Walk`
-when the callback function returns `filepath.SkipDir`.
-
-```Go
- func callback1(osPathname string, de *godirwalk.Dirent) error {
- if optSkip != "" && strings.Contains(osPathname, optSkip) {
- if b, err := de.IsDirOrSymlinkToDir(); b == true && err == nil {
- return filepath.SkipDir
- }
- return nil
- }
- // Process file like normal...
- return nil
- }
-```
-
-This library attempts to eliminate some of that logic boilerplate
-required in callback functions by providing a new token error value,
-`SkipThis`, which a callback function may return to skip the current
-file system entry regardless of what type of entry it is. If the
-current entry is a directory, its children will not be enumerated,
-exactly as if the callback had returned `filepath.SkipDir`. If the
-current entry is a non-directory, the next file system entry in the
-current directory will be enumerated, exactly as if the callback
-returned `nil`. The following example callback function has identical
-behavior as the previous, but has less boilerplate, and admittedly
-logic that I find more simple to follow.
-
-```Go
- func callback2(osPathname string, de *godirwalk.Dirent) error {
- if optSkip != "" && strings.Contains(osPathname, optSkip) {
- return godirwalk.SkipThis
- }
- // Process file like normal...
- return nil
- }
-```
-
-### It's more flexible than `filepath.Walk`
-
-#### Configurable Handling of Symbolic Links
-
-The default behavior of this library is to ignore symbolic links to
-directories when walking a directory tree, just like `filepath.Walk`
-does. However, it does invoke the callback function with each node it
-finds, including symbolic links. If a particular use case exists to
-follow symbolic links when traversing a directory tree, this library
-can be invoked in manner to do so, by setting the
-`FollowSymbolicLinks` config parameter to `true`.
-
-#### Configurable Sorting of Directory Children
-
-The default behavior of this library is to always sort the immediate
-descendants of a directory prior to visiting each node, just like
-`filepath.Walk` does. This is usually the desired behavior. However,
-this does come at slight performance and memory penalties required to
-sort the names when a directory node has many entries. Additionally if
-caller specifies `Unsorted` enumeration in the configuration
-parameter, reading directories is lazily performed as the caller
-consumes entries. If a particular use case exists that does not
-require sorting the directory's immediate descendants prior to
-visiting its nodes, this library will skip the sorting step when the
-`Unsorted` parameter is set to `true`.
-
-Here's an interesting read of the potential hazzards of traversing a
-file system hierarchy in a non-deterministic order. If you know the
-problem you are solving is not affected by the order files are
-visited, then I encourage you to use `Unsorted`. Otherwise skip
-setting this option.
-
-[Researchers find bug in Python script may have affected hundreds of studies](https://arstechnica.com/information-technology/2019/10/chemists-discover-cross-platform-python-scripts-not-so-cross-platform/)
-
-#### Configurable Post Children Callback
-
-This library provides upstream code with the ability to specify a
-callback function to be invoked for each directory after its children
-are processed. This has been used to recursively delete empty
-directories after traversing the file system in a more efficient
-manner. See the `examples/clean-empties` directory for an example of
-this usage.
-
-#### Configurable Error Callback
-
-This library provides upstream code with the ability to specify a
-callback to be invoked for errors that the operating system returns,
-allowing the upstream code to determine the next course of action to
-take, whether to halt walking the hierarchy, as it would do were no
-error callback provided, or skip the node that caused the error. See
-the `examples/walk-fast` directory for an example of this usage.
diff --git a/vendor/github.com/karrick/godirwalk/azure-pipelines.yml b/vendor/github.com/karrick/godirwalk/azure-pipelines.yml
deleted file mode 100644
index d56f2484d63..00000000000
--- a/vendor/github.com/karrick/godirwalk/azure-pipelines.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Go
-# Build your Go project.
-# Add steps that test, save build artifacts, deploy, and more:
-# https://docs.microsoft.com/azure/devops/pipelines/languages/go
-
-trigger:
-- master
-
-variables:
- GOVERSION: 1.13
-
-jobs:
- - job: Linux
- pool:
- vmImage: 'ubuntu-latest'
- steps:
- - task: GoTool@0
- displayName: 'Use Go $(GOVERSION)'
- inputs:
- version: $(GOVERSION)
- - task: Go@0
- inputs:
- command: test
- arguments: -race -v ./...
- displayName: 'Execute Tests'
-
- - job: Mac
- pool:
- vmImage: 'macos-latest'
- steps:
- - task: GoTool@0
- displayName: 'Use Go $(GOVERSION)'
- inputs:
- version: $(GOVERSION)
- - task: Go@0
- inputs:
- command: test
- arguments: -race -v ./...
- displayName: 'Execute Tests'
-
- - job: Windows
- pool:
- vmImage: 'windows-latest'
- steps:
- - task: GoTool@0
- displayName: 'Use Go $(GOVERSION)'
- inputs:
- version: $(GOVERSION)
- - task: Go@0
- inputs:
- command: test
- arguments: -race -v ./...
- displayName: 'Execute Tests'
diff --git a/vendor/github.com/karrick/godirwalk/bench.sh b/vendor/github.com/karrick/godirwalk/bench.sh
deleted file mode 100644
index b2ba374cf28..00000000000
--- a/vendor/github.com/karrick/godirwalk/bench.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-# for version in v1.9.1 v1.10.0 v1.10.3 v1.10.12 v1.11.2 v1.11.3 v1.12.0 v1.13.1 v1.14.0 v1.14.1 ; do
-for version in v1.10.12 v1.14.1 v1.15.2 ; do
- echo "### $version" > $version.txt
- git checkout -- go.mod && git checkout $version && go test -run=NONE -bench=Benchmark2 >> $version.txt || exit 1
-done
diff --git a/vendor/github.com/karrick/godirwalk/debug_development.go b/vendor/github.com/karrick/godirwalk/debug_development.go
deleted file mode 100644
index 6e1cb0bf7ed..00000000000
--- a/vendor/github.com/karrick/godirwalk/debug_development.go
+++ /dev/null
@@ -1,14 +0,0 @@
-// +build godirwalk_debug
-
-package godirwalk
-
-import (
- "fmt"
- "os"
-)
-
-// debug formats and prints arguments to stderr for development builds
-func debug(f string, a ...interface{}) {
- // fmt.Fprintf(os.Stderr, f, a...)
- os.Stderr.Write([]byte("godirwalk: " + fmt.Sprintf(f, a...)))
-}
diff --git a/vendor/github.com/karrick/godirwalk/debug_release.go b/vendor/github.com/karrick/godirwalk/debug_release.go
deleted file mode 100644
index 986178731fe..00000000000
--- a/vendor/github.com/karrick/godirwalk/debug_release.go
+++ /dev/null
@@ -1,6 +0,0 @@
-// +build !godirwalk_debug
-
-package godirwalk
-
-// debug is a no-op for release builds
-func debug(_ string, _ ...interface{}) {}
diff --git a/vendor/github.com/karrick/godirwalk/dirent.go b/vendor/github.com/karrick/godirwalk/dirent.go
deleted file mode 100644
index 38e141ba6b1..00000000000
--- a/vendor/github.com/karrick/godirwalk/dirent.go
+++ /dev/null
@@ -1,104 +0,0 @@
-package godirwalk
-
-import (
- "os"
- "path/filepath"
-)
-
-// Dirent stores the name and file system mode type of discovered file system
-// entries.
-type Dirent struct {
- name string // base name of the file system entry.
- path string // path name of the file system entry.
- modeType os.FileMode // modeType is the type of file system entry.
-}
-
-// NewDirent returns a newly initialized Dirent structure, or an error. This
-// function does not follow symbolic links.
-//
-// This function is rarely used, as Dirent structures are provided by other
-// functions in this library that read and walk directories, but is provided,
-// however, for the occasion when a program needs to create a Dirent.
-func NewDirent(osPathname string) (*Dirent, error) {
- modeType, err := modeType(osPathname)
- if err != nil {
- return nil, err
- }
- return &Dirent{
- name: filepath.Base(osPathname),
- path: filepath.Dir(osPathname),
- modeType: modeType,
- }, nil
-}
-
-// IsDir returns true if and only if the Dirent represents a file system
-// directory. Note that on some operating systems, more than one file mode bit
-// may be set for a node. For instance, on Windows, a symbolic link that points
-// to a directory will have both the directory and the symbolic link bits set.
-func (de Dirent) IsDir() bool { return de.modeType&os.ModeDir != 0 }
-
-// IsDirOrSymlinkToDir returns true if and only if the Dirent represents a file
-// system directory, or a symbolic link to a directory. Note that if the Dirent
-// is not a directory but is a symbolic link, this method will resolve by
-// sending a request to the operating system to follow the symbolic link.
-func (de Dirent) IsDirOrSymlinkToDir() (bool, error) {
- if de.IsDir() {
- return true, nil
- }
- if !de.IsSymlink() {
- return false, nil
- }
- // Does this symlink point to a directory?
- info, err := os.Stat(filepath.Join(de.path, de.name))
- if err != nil {
- return false, err
- }
- return info.IsDir(), nil
-}
-
-// IsRegular returns true if and only if the Dirent represents a regular file.
-// That is, it ensures that no mode type bits are set.
-func (de Dirent) IsRegular() bool { return de.modeType&os.ModeType == 0 }
-
-// IsSymlink returns true if and only if the Dirent represents a file system
-// symbolic link. Note that on some operating systems, more than one file mode
-// bit may be set for a node. For instance, on Windows, a symbolic link that
-// points to a directory will have both the directory and the symbolic link bits
-// set.
-func (de Dirent) IsSymlink() bool { return de.modeType&os.ModeSymlink != 0 }
-
-// IsDevice returns true if and only if the Dirent represents a device file.
-func (de Dirent) IsDevice() bool { return de.modeType&os.ModeDevice != 0 }
-
-// ModeType returns the mode bits that specify the file system node type. We
-// could make our own enum-like data type for encoding the file type, but Go's
-// runtime already gives us architecture independent file modes, as discussed in
-// `os/types.go`:
-//
-// Go's runtime FileMode type has same definition on all systems, so that
-// information about files can be moved from one system to another portably.
-func (de Dirent) ModeType() os.FileMode { return de.modeType }
-
-// Name returns the base name of the file system entry.
-func (de Dirent) Name() string { return de.name }
-
-// reset releases memory held by entry err and name, and resets mode type to 0.
-func (de *Dirent) reset() {
- de.name = ""
- de.path = ""
- de.modeType = 0
-}
-
-// Dirents represents a slice of Dirent pointers, which are sortable by base
-// name. This type satisfies the `sort.Interface` interface.
-type Dirents []*Dirent
-
-// Len returns the count of Dirent structures in the slice.
-func (l Dirents) Len() int { return len(l) }
-
-// Less returns true if and only if the base name of the element specified by
-// the first index is lexicographically less than that of the second index.
-func (l Dirents) Less(i, j int) bool { return l[i].name < l[j].name }
-
-// Swap exchanges the two Dirent entries specified by the two provided indexes.
-func (l Dirents) Swap(i, j int) { l[i], l[j] = l[j], l[i] }
diff --git a/vendor/github.com/karrick/godirwalk/doc.go b/vendor/github.com/karrick/godirwalk/doc.go
deleted file mode 100644
index 440aa82a3a8..00000000000
--- a/vendor/github.com/karrick/godirwalk/doc.go
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Package godirwalk provides functions to read and traverse directory trees.
-
-In short, why do I use this library?
-
-* It's faster than `filepath.Walk`.
-
-* It's more correct on Windows than `filepath.Walk`.
-
-* It's more easy to use than `filepath.Walk`.
-
-* It's more flexible than `filepath.Walk`.
-
-USAGE
-
-This library will normalize the provided top level directory name based on the
-os-specific path separator by calling `filepath.Clean` on its first
-argument. However it always provides the pathname created by using the correct
-os-specific path separator when invoking the provided callback function.
-
- dirname := "some/directory/root"
- err := godirwalk.Walk(dirname, &godirwalk.Options{
- Callback: func(osPathname string, de *godirwalk.Dirent) error {
- fmt.Printf("%s %s\n", de.ModeType(), osPathname)
- return nil
- },
- })
-
-This library not only provides functions for traversing a file system directory
-tree, but also for obtaining a list of immediate descendants of a particular
-directory, typically much more quickly than using `os.ReadDir` or
-`os.ReadDirnames`.
-
- scratchBuffer := make([]byte, godirwalk.MinimumScratchBufferSize)
-
- names, err := godirwalk.ReadDirnames("some/directory", scratchBuffer)
- // ...
-
- entries, err := godirwalk.ReadDirents("another/directory", scratchBuffer)
- // ...
-*/
-package godirwalk
diff --git a/vendor/github.com/karrick/godirwalk/inoWithFileno.go b/vendor/github.com/karrick/godirwalk/inoWithFileno.go
deleted file mode 100644
index 1dc04a717a7..00000000000
--- a/vendor/github.com/karrick/godirwalk/inoWithFileno.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// +build dragonfly freebsd openbsd netbsd
-
-package godirwalk
-
-import "syscall"
-
-func inoFromDirent(de *syscall.Dirent) uint64 {
- return uint64(de.Fileno)
-}
diff --git a/vendor/github.com/karrick/godirwalk/inoWithIno.go b/vendor/github.com/karrick/godirwalk/inoWithIno.go
deleted file mode 100644
index 842a6662d8a..00000000000
--- a/vendor/github.com/karrick/godirwalk/inoWithIno.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// +build aix darwin linux nacl solaris
-
-package godirwalk
-
-import "syscall"
-
-func inoFromDirent(de *syscall.Dirent) uint64 {
- return uint64(de.Ino)
-}
diff --git a/vendor/github.com/karrick/godirwalk/modeType.go b/vendor/github.com/karrick/godirwalk/modeType.go
deleted file mode 100644
index 6427a6852cd..00000000000
--- a/vendor/github.com/karrick/godirwalk/modeType.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package godirwalk
-
-import (
- "os"
-)
-
-// modeType returns the mode type of the file system entry identified by
-// osPathname by calling os.LStat function, to intentionally not follow symbolic
-// links.
-//
-// Even though os.LStat provides all file mode bits, we want to ensure same
-// values returned to caller regardless of whether we obtained file mode bits
-// from syscall or stat call. Therefore mask out the additional file mode bits
-// that are provided by stat but not by the syscall, so users can rely on their
-// values.
-func modeType(osPathname string) (os.FileMode, error) {
- fi, err := os.Lstat(osPathname)
- if err == nil {
- return fi.Mode() & os.ModeType, nil
- }
- return 0, err
-}
diff --git a/vendor/github.com/karrick/godirwalk/modeTypeWithType.go b/vendor/github.com/karrick/godirwalk/modeTypeWithType.go
deleted file mode 100644
index 7890e7761b6..00000000000
--- a/vendor/github.com/karrick/godirwalk/modeTypeWithType.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// +build darwin dragonfly freebsd linux netbsd openbsd
-
-package godirwalk
-
-import (
- "os"
- "path/filepath"
- "syscall"
-)
-
-// modeTypeFromDirent converts a syscall defined constant, which is in purview
-// of OS, to a constant defined by Go, assumed by this project to be stable.
-//
-// When the syscall constant is not recognized, this function falls back to a
-// Stat on the file system.
-func modeTypeFromDirent(de *syscall.Dirent, osDirname, osBasename string) (os.FileMode, error) {
- switch de.Type {
- case syscall.DT_REG:
- return 0, nil
- case syscall.DT_DIR:
- return os.ModeDir, nil
- case syscall.DT_LNK:
- return os.ModeSymlink, nil
- case syscall.DT_CHR:
- return os.ModeDevice | os.ModeCharDevice, nil
- case syscall.DT_BLK:
- return os.ModeDevice, nil
- case syscall.DT_FIFO:
- return os.ModeNamedPipe, nil
- case syscall.DT_SOCK:
- return os.ModeSocket, nil
- default:
- // If syscall returned unknown type (e.g., DT_UNKNOWN, DT_WHT), then
- // resolve actual mode by reading file information.
- return modeType(filepath.Join(osDirname, osBasename))
- }
-}
diff --git a/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go b/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go
deleted file mode 100644
index 5299392ee90..00000000000
--- a/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// +build aix js nacl solaris
-
-package godirwalk
-
-import (
- "os"
- "path/filepath"
- "syscall"
-)
-
-// modeTypeFromDirent converts a syscall defined constant, which is in purview
-// of OS, to a constant defined by Go, assumed by this project to be stable.
-//
-// Because some operating system syscall.Dirent structures do not include a Type
-// field, fall back on Stat of the file system.
-func modeTypeFromDirent(_ *syscall.Dirent, osDirname, osBasename string) (os.FileMode, error) {
- return modeType(filepath.Join(osDirname, osBasename))
-}
diff --git a/vendor/github.com/karrick/godirwalk/nameWithNamlen.go b/vendor/github.com/karrick/godirwalk/nameWithNamlen.go
deleted file mode 100644
index 2c0231eea73..00000000000
--- a/vendor/github.com/karrick/godirwalk/nameWithNamlen.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// +build aix darwin dragonfly freebsd netbsd openbsd
-
-package godirwalk
-
-import (
- "reflect"
- "syscall"
- "unsafe"
-)
-
-func nameFromDirent(de *syscall.Dirent) []byte {
- // Because this GOOS' syscall.Dirent provides a Namlen field that says how
- // long the name is, this function does not need to search for the NULL
- // byte.
- ml := int(de.Namlen)
-
- // Convert syscall.Dirent.Name, which is array of int8, to []byte, by
- // overwriting Cap, Len, and Data slice header fields to values from
- // syscall.Dirent fields. Setting the Cap, Len, and Data field values for
- // the slice header modifies what the slice header points to, and in this
- // case, the name buffer.
- var name []byte
- sh := (*reflect.SliceHeader)(unsafe.Pointer(&name))
- sh.Cap = ml
- sh.Len = ml
- sh.Data = uintptr(unsafe.Pointer(&de.Name[0]))
-
- return name
-}
diff --git a/vendor/github.com/karrick/godirwalk/nameWithoutNamlen.go b/vendor/github.com/karrick/godirwalk/nameWithoutNamlen.go
deleted file mode 100644
index f776fbc760e..00000000000
--- a/vendor/github.com/karrick/godirwalk/nameWithoutNamlen.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// +build nacl linux js solaris
-
-package godirwalk
-
-import (
- "bytes"
- "reflect"
- "syscall"
- "unsafe"
-)
-
-// nameOffset is a compile time constant
-const nameOffset = int(unsafe.Offsetof(syscall.Dirent{}.Name))
-
-func nameFromDirent(de *syscall.Dirent) (name []byte) {
- // Because this GOOS' syscall.Dirent does not provide a field that specifies
- // the name length, this function must first calculate the max possible name
- // length, and then search for the NULL byte.
- ml := int(de.Reclen) - nameOffset
-
- // Convert syscall.Dirent.Name, which is array of int8, to []byte, by
- // overwriting Cap, Len, and Data slice header fields to the max possible
- // name length computed above, and finding the terminating NULL byte.
- sh := (*reflect.SliceHeader)(unsafe.Pointer(&name))
- sh.Cap = ml
- sh.Len = ml
- sh.Data = uintptr(unsafe.Pointer(&de.Name[0]))
-
- if index := bytes.IndexByte(name, 0); index >= 0 {
- // Found NULL byte; set slice's cap and len accordingly.
- sh.Cap = index
- sh.Len = index
- return
- }
-
- // NOTE: This branch is not expected, but included for defensive
- // programming, and provides a hard stop on the name based on the structure
- // field array size.
- sh.Cap = len(de.Name)
- sh.Len = sh.Cap
- return
-}
diff --git a/vendor/github.com/karrick/godirwalk/readdir.go b/vendor/github.com/karrick/godirwalk/readdir.go
deleted file mode 100644
index c8fa8155e35..00000000000
--- a/vendor/github.com/karrick/godirwalk/readdir.go
+++ /dev/null
@@ -1,53 +0,0 @@
-package godirwalk
-
-// ReadDirents returns a sortable slice of pointers to Dirent structures, each
-// representing the file system name and mode type for one of the immediate
-// descendant of the specified directory. If the specified directory is a
-// symbolic link, it will be resolved.
-//
-// If an optional scratch buffer is provided that is at least one page of
-// memory, it will be used when reading directory entries from the file
-// system. If you plan on calling this function in a loop, you will have
-// significantly better performance if you allocate a scratch buffer and use it
-// each time you call this function.
-//
-// children, err := godirwalk.ReadDirents(osDirname, nil)
-// if err != nil {
-// return nil, errors.Wrap(err, "cannot get list of directory children")
-// }
-// sort.Sort(children)
-// for _, child := range children {
-// fmt.Printf("%s %s\n", child.ModeType, child.Name)
-// }
-func ReadDirents(osDirname string, scratchBuffer []byte) (Dirents, error) {
- return readDirents(osDirname, scratchBuffer)
-}
-
-// ReadDirnames returns a slice of strings, representing the immediate
-// descendants of the specified directory. If the specified directory is a
-// symbolic link, it will be resolved.
-//
-// If an optional scratch buffer is provided that is at least one page of
-// memory, it will be used when reading directory entries from the file
-// system. If you plan on calling this function in a loop, you will have
-// significantly better performance if you allocate a scratch buffer and use it
-// each time you call this function.
-//
-// Note that this function, depending on operating system, may or may not invoke
-// the ReadDirents function, in order to prepare the list of immediate
-// descendants. Therefore, if your program needs both the names and the file
-// system mode types of descendants, it will always be faster to invoke
-// ReadDirents directly, rather than calling this function, then looping over
-// the results and calling os.Stat or os.LStat for each entry.
-//
-// children, err := godirwalk.ReadDirnames(osDirname, nil)
-// if err != nil {
-// return nil, errors.Wrap(err, "cannot get list of directory children")
-// }
-// sort.Strings(children)
-// for _, child := range children {
-// fmt.Printf("%s\n", child)
-// }
-func ReadDirnames(osDirname string, scratchBuffer []byte) ([]string, error) {
- return readDirnames(osDirname, scratchBuffer)
-}
diff --git a/vendor/github.com/karrick/godirwalk/readdir_unix.go b/vendor/github.com/karrick/godirwalk/readdir_unix.go
deleted file mode 100644
index a993038ba23..00000000000
--- a/vendor/github.com/karrick/godirwalk/readdir_unix.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// +build !windows
-
-package godirwalk
-
-import (
- "os"
- "syscall"
- "unsafe"
-)
-
-// MinimumScratchBufferSize specifies the minimum size of the scratch buffer
-// that ReadDirents, ReadDirnames, Scanner, and Walk will use when reading file
-// entries from the operating system. During program startup it is initialized
-// to the result from calling `os.Getpagesize()` for non Windows environments,
-// and 0 for Windows.
-var MinimumScratchBufferSize = os.Getpagesize()
-
-func newScratchBuffer() []byte { return make([]byte, MinimumScratchBufferSize) }
-
-func readDirents(osDirname string, scratchBuffer []byte) ([]*Dirent, error) {
- var entries []*Dirent
- var workBuffer []byte
-
- dh, err := os.Open(osDirname)
- if err != nil {
- return nil, err
- }
- fd := int(dh.Fd())
-
- if len(scratchBuffer) < MinimumScratchBufferSize {
- scratchBuffer = newScratchBuffer()
- }
-
- var sde syscall.Dirent
- for {
- if len(workBuffer) == 0 {
- n, err := syscall.ReadDirent(fd, scratchBuffer)
- // n, err := unix.ReadDirent(fd, scratchBuffer)
- if err != nil {
- if err == syscall.EINTR /* || err == unix.EINTR */ {
- continue
- }
- _ = dh.Close()
- return nil, err
- }
- if n <= 0 { // end of directory: normal exit
- if err = dh.Close(); err != nil {
- return nil, err
- }
- return entries, nil
- }
- workBuffer = scratchBuffer[:n] // trim work buffer to number of bytes read
- }
-
- copy((*[unsafe.Sizeof(syscall.Dirent{})]byte)(unsafe.Pointer(&sde))[:], workBuffer)
- workBuffer = workBuffer[reclen(&sde):] // advance buffer for next iteration through loop
-
- if inoFromDirent(&sde) == 0 {
- continue // inode set to 0 indicates an entry that was marked as deleted
- }
-
- nameSlice := nameFromDirent(&sde)
- nameLength := len(nameSlice)
-
- if nameLength == 0 || (nameSlice[0] == '.' && (nameLength == 1 || (nameLength == 2 && nameSlice[1] == '.'))) {
- continue
- }
-
- childName := string(nameSlice)
- mt, err := modeTypeFromDirent(&sde, osDirname, childName)
- if err != nil {
- _ = dh.Close()
- return nil, err
- }
- entries = append(entries, &Dirent{name: childName, path: osDirname, modeType: mt})
- }
-}
-
-func readDirnames(osDirname string, scratchBuffer []byte) ([]string, error) {
- var entries []string
- var workBuffer []byte
- var sde *syscall.Dirent
-
- dh, err := os.Open(osDirname)
- if err != nil {
- return nil, err
- }
- fd := int(dh.Fd())
-
- if len(scratchBuffer) < MinimumScratchBufferSize {
- scratchBuffer = newScratchBuffer()
- }
-
- for {
- if len(workBuffer) == 0 {
- n, err := syscall.ReadDirent(fd, scratchBuffer)
- // n, err := unix.ReadDirent(fd, scratchBuffer)
- if err != nil {
- if err == syscall.EINTR /* || err == unix.EINTR */ {
- continue
- }
- _ = dh.Close()
- return nil, err
- }
- if n <= 0 { // end of directory: normal exit
- if err = dh.Close(); err != nil {
- return nil, err
- }
- return entries, nil
- }
- workBuffer = scratchBuffer[:n] // trim work buffer to number of bytes read
- }
-
- sde = (*syscall.Dirent)(unsafe.Pointer(&workBuffer[0])) // point entry to first syscall.Dirent in buffer
- // Handle first entry in the work buffer.
- workBuffer = workBuffer[reclen(sde):] // advance buffer for next iteration through loop
-
- if inoFromDirent(sde) == 0 {
- continue // inode set to 0 indicates an entry that was marked as deleted
- }
-
- nameSlice := nameFromDirent(sde)
- nameLength := len(nameSlice)
-
- if nameLength == 0 || (nameSlice[0] == '.' && (nameLength == 1 || (nameLength == 2 && nameSlice[1] == '.'))) {
- continue
- }
-
- entries = append(entries, string(nameSlice))
- }
-}
diff --git a/vendor/github.com/karrick/godirwalk/readdir_windows.go b/vendor/github.com/karrick/godirwalk/readdir_windows.go
deleted file mode 100644
index 7dd76cbc350..00000000000
--- a/vendor/github.com/karrick/godirwalk/readdir_windows.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// +build windows
-
-package godirwalk
-
-import "os"
-
-// MinimumScratchBufferSize specifies the minimum size of the scratch buffer
-// that ReadDirents, ReadDirnames, Scanner, and Walk will use when reading file
-// entries from the operating system. During program startup it is initialized
-// to the result from calling `os.Getpagesize()` for non Windows environments,
-// and 0 for Windows.
-var MinimumScratchBufferSize = 0
-
-func newScratchBuffer() []byte { return nil }
-
-func readDirents(osDirname string, _ []byte) ([]*Dirent, error) {
- dh, err := os.Open(osDirname)
- if err != nil {
- return nil, err
- }
-
- fileinfos, err := dh.Readdir(-1)
- if err != nil {
- _ = dh.Close()
- return nil, err
- }
-
- entries := make([]*Dirent, len(fileinfos))
-
- for i, fi := range fileinfos {
- entries[i] = &Dirent{
- name: fi.Name(),
- path: osDirname,
- modeType: fi.Mode() & os.ModeType,
- }
- }
-
- if err = dh.Close(); err != nil {
- return nil, err
- }
- return entries, nil
-}
-
-func readDirnames(osDirname string, _ []byte) ([]string, error) {
- dh, err := os.Open(osDirname)
- if err != nil {
- return nil, err
- }
-
- fileinfos, err := dh.Readdir(-1)
- if err != nil {
- _ = dh.Close()
- return nil, err
- }
-
- entries := make([]string, len(fileinfos))
-
- for i, fi := range fileinfos {
- entries[i] = fi.Name()
- }
-
- if err = dh.Close(); err != nil {
- return nil, err
- }
- return entries, nil
-}
diff --git a/vendor/github.com/karrick/godirwalk/reclenFromNamlen.go b/vendor/github.com/karrick/godirwalk/reclenFromNamlen.go
deleted file mode 100644
index baeefcee3a5..00000000000
--- a/vendor/github.com/karrick/godirwalk/reclenFromNamlen.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// +build dragonfly
-
-package godirwalk
-
-import "syscall"
-
-func reclen(de *syscall.Dirent) uint64 {
- return (16 + uint64(de.Namlen) + 1 + 7) &^ 7
-}
diff --git a/vendor/github.com/karrick/godirwalk/reclenFromReclen.go b/vendor/github.com/karrick/godirwalk/reclenFromReclen.go
deleted file mode 100644
index 99be34d8715..00000000000
--- a/vendor/github.com/karrick/godirwalk/reclenFromReclen.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// +build nacl linux js solaris aix darwin freebsd netbsd openbsd
-
-package godirwalk
-
-import "syscall"
-
-func reclen(de *syscall.Dirent) uint64 {
- return uint64(de.Reclen)
-}
diff --git a/vendor/github.com/karrick/godirwalk/scandir_unix.go b/vendor/github.com/karrick/godirwalk/scandir_unix.go
deleted file mode 100644
index 33250b61d8f..00000000000
--- a/vendor/github.com/karrick/godirwalk/scandir_unix.go
+++ /dev/null
@@ -1,166 +0,0 @@
-// +build !windows
-
-package godirwalk
-
-import (
- "os"
- "syscall"
- "unsafe"
-)
-
-// Scanner is an iterator to enumerate the contents of a directory.
-type Scanner struct {
- scratchBuffer []byte // read directory bytes from file system into this buffer
- workBuffer []byte // points into scratchBuffer, from which we chunk out directory entries
- osDirname string
- childName string
- err error // err is the error associated with scanning directory
- statErr error // statErr is any error return while attempting to stat an entry
- dh *os.File // used to close directory after done reading
- de *Dirent // most recently decoded directory entry
- sde syscall.Dirent
- fd int // file descriptor used to read entries from directory
-}
-
-// NewScanner returns a new directory Scanner that lazily enumerates the
-// contents of a single directory.
-//
-// scanner, err := godirwalk.NewScanner(dirname)
-// if err != nil {
-// fatal("cannot scan directory: %s", err)
-// }
-//
-// for scanner.Scan() {
-// dirent, err := scanner.Dirent()
-// if err != nil {
-// warning("cannot get dirent: %s", err)
-// continue
-// }
-// name := dirent.Name()
-// if name == "break" {
-// break
-// }
-// if name == "continue" {
-// continue
-// }
-// fmt.Printf("%v %v\n", dirent.ModeType(), dirent.Name())
-// }
-// if err := scanner.Err(); err != nil {
-// fatal("cannot scan directory: %s", err)
-// }
-func NewScanner(osDirname string) (*Scanner, error) {
- return NewScannerWithScratchBuffer(osDirname, nil)
-}
-
-// NewScannerWithScratchBuffer returns a new directory Scanner that lazily
-// enumerates the contents of a single directory. On platforms other than
-// Windows it uses the provided scratch buffer to read from the file system. On
-// Windows the scratch buffer is ignored.
-func NewScannerWithScratchBuffer(osDirname string, scratchBuffer []byte) (*Scanner, error) {
- dh, err := os.Open(osDirname)
- if err != nil {
- return nil, err
- }
- if len(scratchBuffer) < MinimumScratchBufferSize {
- scratchBuffer = newScratchBuffer()
- }
- scanner := &Scanner{
- scratchBuffer: scratchBuffer,
- osDirname: osDirname,
- dh: dh,
- fd: int(dh.Fd()),
- }
- return scanner, nil
-}
-
-// Dirent returns the current directory entry while scanning a directory.
-func (s *Scanner) Dirent() (*Dirent, error) {
- if s.de == nil {
- s.de = &Dirent{name: s.childName, path: s.osDirname}
- s.de.modeType, s.statErr = modeTypeFromDirent(&s.sde, s.osDirname, s.childName)
- }
- return s.de, s.statErr
-}
-
-// done is called when directory scanner unable to continue, with either the
-// triggering error, or nil when there are simply no more entries to read from
-// the directory.
-func (s *Scanner) done(err error) {
- if s.dh == nil {
- return
- }
-
- if cerr := s.dh.Close(); err == nil {
- s.err = cerr
- }
-
- s.osDirname, s.childName = "", ""
- s.scratchBuffer, s.workBuffer = nil, nil
- s.dh, s.de, s.statErr = nil, nil, nil
- s.sde = syscall.Dirent{}
- s.fd = 0
-}
-
-// Err returns any error associated with scanning a directory. It is normal to
-// call Err after Scan returns false, even though they both ensure Scanner
-// resources are released. Do not call until done scanning a directory.
-func (s *Scanner) Err() error {
- s.done(nil)
- return s.err
-}
-
-// Name returns the base name of the current directory entry while scanning a
-// directory.
-func (s *Scanner) Name() string { return s.childName }
-
-// Scan potentially reads and then decodes the next directory entry from the
-// file system.
-//
-// When it returns false, this releases resources used by the Scanner then
-// returns any error associated with closing the file system directory resource.
-func (s *Scanner) Scan() bool {
- if s.dh == nil {
- return false
- }
-
- s.de = nil
-
- for {
- // When the work buffer has nothing remaining to decode, we need to load
- // more data from disk.
- if len(s.workBuffer) == 0 {
- n, err := syscall.ReadDirent(s.fd, s.scratchBuffer)
- // n, err := unix.ReadDirent(s.fd, s.scratchBuffer)
- if err != nil {
- if err == syscall.EINTR /* || err == unix.EINTR */ {
- continue
- }
- s.done(err)
- return false
- }
- if n <= 0 { // end of directory: normal exit
- s.done(nil)
- return false
- }
- s.workBuffer = s.scratchBuffer[:n] // trim work buffer to number of bytes read
- }
-
- // point entry to first syscall.Dirent in buffer
- copy((*[unsafe.Sizeof(syscall.Dirent{})]byte)(unsafe.Pointer(&s.sde))[:], s.workBuffer)
- s.workBuffer = s.workBuffer[reclen(&s.sde):] // advance buffer for next iteration through loop
-
- if inoFromDirent(&s.sde) == 0 {
- continue // inode set to 0 indicates an entry that was marked as deleted
- }
-
- nameSlice := nameFromDirent(&s.sde)
- nameLength := len(nameSlice)
-
- if nameLength == 0 || (nameSlice[0] == '.' && (nameLength == 1 || (nameLength == 2 && nameSlice[1] == '.'))) {
- continue
- }
-
- s.childName = string(nameSlice)
- return true
- }
-}
diff --git a/vendor/github.com/karrick/godirwalk/scandir_windows.go b/vendor/github.com/karrick/godirwalk/scandir_windows.go
deleted file mode 100644
index a2110618e0d..00000000000
--- a/vendor/github.com/karrick/godirwalk/scandir_windows.go
+++ /dev/null
@@ -1,133 +0,0 @@
-// +build windows
-
-package godirwalk
-
-import (
- "fmt"
- "os"
-)
-
-// Scanner is an iterator to enumerate the contents of a directory.
-type Scanner struct {
- osDirname string
- childName string
- dh *os.File // dh is handle to open directory
- de *Dirent
- err error // err is the error associated with scanning directory
- childMode os.FileMode
-}
-
-// NewScanner returns a new directory Scanner that lazily enumerates the
-// contents of a single directory.
-//
-// scanner, err := godirwalk.NewScanner(dirname)
-// if err != nil {
-// fatal("cannot scan directory: %s", err)
-// }
-//
-// for scanner.Scan() {
-// dirent, err := scanner.Dirent()
-// if err != nil {
-// warning("cannot get dirent: %s", err)
-// continue
-// }
-// name := dirent.Name()
-// if name == "break" {
-// break
-// }
-// if name == "continue" {
-// continue
-// }
-// fmt.Printf("%v %v\n", dirent.ModeType(), dirent.Name())
-// }
-// if err := scanner.Err(); err != nil {
-// fatal("cannot scan directory: %s", err)
-// }
-func NewScanner(osDirname string) (*Scanner, error) {
- dh, err := os.Open(osDirname)
- if err != nil {
- return nil, err
- }
- scanner := &Scanner{
- osDirname: osDirname,
- dh: dh,
- }
- return scanner, nil
-}
-
-// NewScannerWithScratchBuffer returns a new directory Scanner that lazily
-// enumerates the contents of a single directory. On platforms other than
-// Windows it uses the provided scratch buffer to read from the file system. On
-// Windows the scratch buffer parameter is ignored.
-func NewScannerWithScratchBuffer(osDirname string, scratchBuffer []byte) (*Scanner, error) {
- return NewScanner(osDirname)
-}
-
-// Dirent returns the current directory entry while scanning a directory.
-func (s *Scanner) Dirent() (*Dirent, error) {
- if s.de == nil {
- s.de = &Dirent{
- name: s.childName,
- path: s.osDirname,
- modeType: s.childMode,
- }
- }
- return s.de, nil
-}
-
-// done is called when directory scanner unable to continue, with either the
-// triggering error, or nil when there are simply no more entries to read from
-// the directory.
-func (s *Scanner) done(err error) {
- if s.dh == nil {
- return
- }
-
- if cerr := s.dh.Close(); err == nil {
- s.err = cerr
- }
-
- s.childName, s.osDirname = "", ""
- s.de, s.dh = nil, nil
-}
-
-// Err returns any error associated with scanning a directory. It is normal to
-// call Err after Scan returns false, even though they both ensure Scanner
-// resources are released. Do not call until done scanning a directory.
-func (s *Scanner) Err() error {
- s.done(nil)
- return s.err
-}
-
-// Name returns the base name of the current directory entry while scanning a
-// directory.
-func (s *Scanner) Name() string { return s.childName }
-
-// Scan potentially reads and then decodes the next directory entry from the
-// file system.
-//
-// When it returns false, this releases resources used by the Scanner then
-// returns any error associated with closing the file system directory resource.
-func (s *Scanner) Scan() bool {
- if s.dh == nil {
- return false
- }
-
- s.de = nil
-
- fileinfos, err := s.dh.Readdir(1)
- if err != nil {
- s.done(err)
- return false
- }
-
- if l := len(fileinfos); l != 1 {
- s.done(fmt.Errorf("expected a single entry rather than %d", l))
- return false
- }
-
- fi := fileinfos[0]
- s.childMode = fi.Mode() & os.ModeType
- s.childName = fi.Name()
- return true
-}
diff --git a/vendor/github.com/karrick/godirwalk/scanner.go b/vendor/github.com/karrick/godirwalk/scanner.go
deleted file mode 100644
index c08179e1ed2..00000000000
--- a/vendor/github.com/karrick/godirwalk/scanner.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package godirwalk
-
-import "sort"
-
-type scanner interface {
- Dirent() (*Dirent, error)
- Err() error
- Name() string
- Scan() bool
-}
-
-// sortedScanner enumerates through a directory's contents after reading the
-// entire directory and sorting the entries by name. Used by walk to simplify
-// its implementation.
-type sortedScanner struct {
- dd []*Dirent
- de *Dirent
-}
-
-func newSortedScanner(osPathname string, scratchBuffer []byte) (*sortedScanner, error) {
- deChildren, err := ReadDirents(osPathname, scratchBuffer)
- if err != nil {
- return nil, err
- }
- sort.Sort(deChildren)
- return &sortedScanner{dd: deChildren}, nil
-}
-
-func (d *sortedScanner) Err() error {
- d.dd, d.de = nil, nil
- return nil
-}
-
-func (d *sortedScanner) Dirent() (*Dirent, error) { return d.de, nil }
-
-func (d *sortedScanner) Name() string { return d.de.name }
-
-func (d *sortedScanner) Scan() bool {
- if len(d.dd) > 0 {
- d.de, d.dd = d.dd[0], d.dd[1:]
- return true
- }
- return false
-}
diff --git a/vendor/github.com/karrick/godirwalk/walk.go b/vendor/github.com/karrick/godirwalk/walk.go
deleted file mode 100644
index 9d0235dfb81..00000000000
--- a/vendor/github.com/karrick/godirwalk/walk.go
+++ /dev/null
@@ -1,379 +0,0 @@
-package godirwalk
-
-import (
- "errors"
- "fmt"
- "os"
- "path/filepath"
-)
-
-// Options provide parameters for how the Walk function operates.
-type Options struct {
- // ErrorCallback specifies a function to be invoked in the case of an error
- // that could potentially be ignored while walking a file system
- // hierarchy. When set to nil or left as its zero-value, any error condition
- // causes Walk to immediately return the error describing what took
- // place. When non-nil, this user supplied function is invoked with the OS
- // pathname of the file system object that caused the error along with the
- // error that took place. The return value of the supplied ErrorCallback
- // function determines whether the error will cause Walk to halt immediately
- // as it would were no ErrorCallback value provided, or skip this file
- // system node yet continue on with the remaining nodes in the file system
- // hierarchy.
- //
- // ErrorCallback is invoked both for errors that are returned by the
- // runtime, and for errors returned by other user supplied callback
- // functions.
- ErrorCallback func(string, error) ErrorAction
-
- // FollowSymbolicLinks specifies whether Walk will follow symbolic links
- // that refer to directories. When set to false or left as its zero-value,
- // Walk will still invoke the callback function with symbolic link nodes,
- // but if the symbolic link refers to a directory, it will not recurse on
- // that directory. When set to true, Walk will recurse on symbolic links
- // that refer to a directory.
- FollowSymbolicLinks bool
-
- // Unsorted controls whether or not Walk will sort the immediate descendants
- // of a directory by their relative names prior to visiting each of those
- // entries.
- //
- // When set to false or left at its zero-value, Walk will get the list of
- // immediate descendants of a particular directory, sort that list by
- // lexical order of their names, and then visit each node in the list in
- // sorted order. This will cause Walk to always traverse the same directory
- // tree in the same order, however may be inefficient for directories with
- // many immediate descendants.
- //
- // When set to true, Walk skips sorting the list of immediate descendants
- // for a directory, and simply visits each node in the order the operating
- // system enumerated them. This will be more fast, but with the side effect
- // that the traversal order may be different from one invocation to the
- // next.
- Unsorted bool
-
- // Callback is a required function that Walk will invoke for every file
- // system node it encounters.
- Callback WalkFunc
-
- // PostChildrenCallback is an option function that Walk will invoke for
- // every file system directory it encounters after its children have been
- // processed.
- PostChildrenCallback WalkFunc
-
- // ScratchBuffer is an optional byte slice to use as a scratch buffer for
- // Walk to use when reading directory entries, to reduce amount of garbage
- // generation. Not all architectures take advantage of the scratch
- // buffer. If omitted or the provided buffer has fewer bytes than
- // MinimumScratchBufferSize, then a buffer with MinimumScratchBufferSize
- // bytes will be created and used once per Walk invocation.
- ScratchBuffer []byte
-
- // AllowNonDirectory causes Walk to bypass the check that ensures it is
- // being called on a directory node, or when FollowSymbolicLinks is true, a
- // symbolic link that points to a directory. Leave this value false to have
- // Walk return an error when called on a non-directory. Set this true to
- // have Walk run even when called on a non-directory node.
- AllowNonDirectory bool
-}
-
-// ErrorAction defines a set of actions the Walk function could take based on
-// the occurrence of an error while walking the file system. See the
-// documentation for the ErrorCallback field of the Options structure for more
-// information.
-type ErrorAction int
-
-const (
- // Halt is the ErrorAction return value when the upstream code wants to halt
- // the walk process when a runtime error takes place. It matches the default
- // action the Walk function would take were no ErrorCallback provided.
- Halt ErrorAction = iota
-
- // SkipNode is the ErrorAction return value when the upstream code wants to
- // ignore the runtime error for the current file system node, skip
- // processing of the node that caused the error, and continue walking the
- // file system hierarchy with the remaining nodes.
- SkipNode
-)
-
-// SkipThis is used as a return value from WalkFuncs to indicate that the file
-// system entry named in the call is to be skipped. It is not returned as an
-// error by any function.
-var SkipThis = errors.New("skip this directory entry")
-
-// WalkFunc is the type of the function called for each file system node visited
-// by Walk. The pathname argument will contain the argument to Walk as a prefix;
-// that is, if Walk is called with "dir", which is a directory containing the
-// file "a", the provided WalkFunc will be invoked with the argument "dir/a",
-// using the correct os.PathSeparator for the Go Operating System architecture,
-// GOOS. The directory entry argument is a pointer to a Dirent for the node,
-// providing access to both the basename and the mode type of the file system
-// node.
-//
-// If an error is returned by the Callback or PostChildrenCallback functions,
-// and no ErrorCallback function is provided, processing stops. If an
-// ErrorCallback function is provided, then it is invoked with the OS pathname
-// of the node that caused the error along along with the error. The return
-// value of the ErrorCallback function determines whether to halt processing, or
-// skip this node and continue processing remaining file system nodes.
-//
-// The exception is when the function returns the special value
-// filepath.SkipDir. If the function returns filepath.SkipDir when invoked on a
-// directory, Walk skips the directory's contents entirely. If the function
-// returns filepath.SkipDir when invoked on a non-directory file system node,
-// Walk skips the remaining files in the containing directory. Note that any
-// supplied ErrorCallback function is not invoked with filepath.SkipDir when the
-// Callback or PostChildrenCallback functions return that special value.
-//
-// One arguably confusing aspect of the filepath.WalkFunc API that this library
-// must emulate is how a caller tells Walk to skip file system entries or
-// directories. With both filepath.Walk and this Walk, when a callback function
-// wants to skip a directory and not descend into its children, it returns
-// filepath.SkipDir. If the callback function returns filepath.SkipDir for a
-// non-directory, filepath.Walk and this library will stop processing any more
-// entries in the current directory, which is what many people do not want. If
-// you want to simply skip a particular non-directory entry but continue
-// processing entries in the directory, a callback function must return nil. The
-// implications of this API is when you want to walk a file system hierarchy and
-// skip an entry, when the entry is a directory, you must return one value,
-// namely filepath.SkipDir, but when the entry is a non-directory, you must
-// return a different value, namely nil. In other words, to get identical
-// behavior for two file system entry types you need to send different token
-// values.
-//
-// Here is an example callback function that adheres to filepath.Walk API to
-// have it skip any file system entry whose full pathname includes a particular
-// substring, optSkip:
-//
-// func callback1(osPathname string, de *godirwalk.Dirent) error {
-// if optSkip != "" && strings.Contains(osPathname, optSkip) {
-// if b, err := de.IsDirOrSymlinkToDir(); b == true && err == nil {
-// return filepath.SkipDir
-// }
-// return nil
-// }
-// // Process file like normal...
-// return nil
-// }
-//
-// This library attempts to eliminate some of that logic boilerplate by
-// providing a new token error value, SkipThis, which a callback function may
-// return to skip the current file system entry regardless of what type of entry
-// it is. If the current entry is a directory, its children will not be
-// enumerated, exactly as if the callback returned filepath.SkipDir. If the
-// current entry is a non-directory, the next file system entry in the current
-// directory will be enumerated, exactly as if the callback returned nil. The
-// following example callback function has identical behavior as the previous,
-// but has less boilerplate, and admittedly more simple logic.
-//
-// func callback2(osPathname string, de *godirwalk.Dirent) error {
-// if optSkip != "" && strings.Contains(osPathname, optSkip) {
-// return godirwalk.SkipThis
-// }
-// // Process file like normal...
-// return nil
-// }
-type WalkFunc func(osPathname string, directoryEntry *Dirent) error
-
-// Walk walks the file tree rooted at the specified directory, calling the
-// specified callback function for each file system node in the tree, including
-// root, symbolic links, and other node types.
-//
-// This function is often much faster than filepath.Walk because it does not
-// invoke os.Stat for every node it encounters, but rather obtains the file
-// system node type when it reads the parent directory.
-//
-// If a runtime error occurs, either from the operating system or from the
-// upstream Callback or PostChildrenCallback functions, processing typically
-// halts. However, when an ErrorCallback function is provided in the provided
-// Options structure, that function is invoked with the error along with the OS
-// pathname of the file system node that caused the error. The ErrorCallback
-// function's return value determines the action that Walk will then take.
-//
-// func main() {
-// dirname := "."
-// if len(os.Args) > 1 {
-// dirname = os.Args[1]
-// }
-// err := godirwalk.Walk(dirname, &godirwalk.Options{
-// Callback: func(osPathname string, de *godirwalk.Dirent) error {
-// fmt.Printf("%s %s\n", de.ModeType(), osPathname)
-// return nil
-// },
-// ErrorCallback: func(osPathname string, err error) godirwalk.ErrorAction {
-// // Your program may want to log the error somehow.
-// fmt.Fprintf(os.Stderr, "ERROR: %s\n", err)
-//
-// // For the purposes of this example, a simple SkipNode will suffice,
-// // although in reality perhaps additional logic might be called for.
-// return godirwalk.SkipNode
-// },
-// })
-// if err != nil {
-// fmt.Fprintf(os.Stderr, "%s\n", err)
-// os.Exit(1)
-// }
-// }
-func Walk(pathname string, options *Options) error {
- if options == nil || options.Callback == nil {
- return errors.New("cannot walk without non-nil options and Callback function")
- }
-
- pathname = filepath.Clean(pathname)
-
- var fi os.FileInfo
- var err error
-
- if options.FollowSymbolicLinks {
- fi, err = os.Stat(pathname)
- } else {
- fi, err = os.Lstat(pathname)
- }
- if err != nil {
- return err
- }
-
- mode := fi.Mode()
- if !options.AllowNonDirectory && mode&os.ModeDir == 0 {
- return fmt.Errorf("cannot Walk non-directory: %s", pathname)
- }
-
- dirent := &Dirent{
- name: filepath.Base(pathname),
- path: filepath.Dir(pathname),
- modeType: mode & os.ModeType,
- }
-
- if len(options.ScratchBuffer) < MinimumScratchBufferSize {
- options.ScratchBuffer = newScratchBuffer()
- }
-
- // If ErrorCallback is nil, set to a default value that halts the walk
- // process on all operating system errors. This is done to allow error
- // handling to be more succinct in the walk code.
- if options.ErrorCallback == nil {
- options.ErrorCallback = defaultErrorCallback
- }
-
- err = walk(pathname, dirent, options)
- switch err {
- case nil, SkipThis, filepath.SkipDir:
- // silence SkipThis and filepath.SkipDir for top level
- debug("no error of significance: %v\n", err)
- return nil
- default:
- return err
- }
-}
-
-// defaultErrorCallback always returns Halt because if the upstream code did not
-// provide an ErrorCallback function, walking the file system hierarchy ought to
-// halt upon any operating system error.
-func defaultErrorCallback(_ string, _ error) ErrorAction { return Halt }
-
-// walk recursively traverses the file system node specified by pathname and the
-// Dirent.
-func walk(osPathname string, dirent *Dirent, options *Options) error {
- err := options.Callback(osPathname, dirent)
- if err != nil {
- if err == SkipThis || err == filepath.SkipDir {
- return err
- }
- if action := options.ErrorCallback(osPathname, err); action == SkipNode {
- return nil
- }
- return err
- }
-
- if dirent.IsSymlink() {
- if !options.FollowSymbolicLinks {
- return nil
- }
- // Does this symlink point to a directory?
- info, err := os.Stat(osPathname)
- if err != nil {
- if action := options.ErrorCallback(osPathname, err); action == SkipNode {
- return nil
- }
- return err
- }
- if !info.IsDir() {
- return nil
- }
- } else if !dirent.IsDir() {
- return nil
- }
-
- // If get here, then specified pathname refers to a directory or a
- // symbolic link to a directory.
-
- var ds scanner
-
- if options.Unsorted {
- // When upstream does not request a sorted iteration, it's more memory
- // efficient to read a single child at a time from the file system.
- ds, err = NewScanner(osPathname)
- } else {
- // When upstream wants a sorted iteration, we must read the entire
- // directory and sort through the child names, and then iterate on each
- // child.
- ds, err = newSortedScanner(osPathname, options.ScratchBuffer)
- }
- if err != nil {
- if action := options.ErrorCallback(osPathname, err); action == SkipNode {
- return nil
- }
- return err
- }
-
- for ds.Scan() {
- deChild, err := ds.Dirent()
- osChildname := filepath.Join(osPathname, deChild.name)
- if err != nil {
- if action := options.ErrorCallback(osChildname, err); action == SkipNode {
- return nil
- }
- return err
- }
- err = walk(osChildname, deChild, options)
- debug("osChildname: %q; error: %v\n", osChildname, err)
- if err == nil || err == SkipThis {
- continue
- }
- if err != filepath.SkipDir {
- return err
- }
- // When received SkipDir on a directory or a symbolic link to a
- // directory, stop processing that directory but continue processing
- // siblings. When received on a non-directory, stop processing
- // remaining siblings.
- isDir, err := deChild.IsDirOrSymlinkToDir()
- if err != nil {
- if action := options.ErrorCallback(osChildname, err); action == SkipNode {
- continue // ignore and continue with next sibling
- }
- return err // caller does not approve of this error
- }
- if !isDir {
- break // stop processing remaining siblings, but allow post children callback
- }
- // continue processing remaining siblings
- }
- if err = ds.Err(); err != nil {
- return err
- }
-
- if options.PostChildrenCallback == nil {
- return nil
- }
-
- err = options.PostChildrenCallback(osPathname, dirent)
- if err == nil || err == filepath.SkipDir {
- return err
- }
-
- if action := options.ErrorCallback(osPathname, err); action == SkipNode {
- return nil
- }
- return err
-}
diff --git a/vendor/github.com/markbates/errx/.gitignore b/vendor/github.com/markbates/errx/.gitignore
deleted file mode 100644
index 3689718594c..00000000000
--- a/vendor/github.com/markbates/errx/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.log
-.DS_Store
-doc
-tmp
-pkg
-*.gem
-*.pid
-coverage
-coverage.data
-build/*
-*.pbxuser
-*.mode1v3
-.svn
-profile
-.console_history
-.sass-cache/*
-.rake_tasks~
-*.log.lck
-solr/
-.jhw-cache/
-jhw.*
-*.sublime*
-node_modules/
-dist/
-generated/
-.vendor/
-bin/*
-gin-bin
-.idea/
diff --git a/vendor/github.com/markbates/errx/LICENSE b/vendor/github.com/markbates/errx/LICENSE
deleted file mode 100644
index 649efd43722..00000000000
--- a/vendor/github.com/markbates/errx/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 Mark Bates
-
-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/markbates/errx/Makefile b/vendor/github.com/markbates/errx/Makefile
deleted file mode 100644
index 0ac539f1c2e..00000000000
--- a/vendor/github.com/markbates/errx/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-TAGS ?= ""
-GO_BIN ?= "go"
-
-install:
- $(GO_BIN) install -tags ${TAGS} -v .
- make tidy
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
- make tidy
-
-build:
- $(GO_BIN) build -v .
- make tidy
-
-test:
- $(GO_BIN) test -cover -tags ${TAGS} ./...
- make tidy
-
-ci-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
-
-ci-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
-
-lint:
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
- golangci-lint run --enable-all
- make tidy
-
-update:
-ifeq ($(GO111MODULE),on)
- rm go.*
- $(GO_BIN) mod init
- $(GO_BIN) mod tidy
-else
- $(GO_BIN) get -u -tags ${TAGS}
-endif
- make test
- make install
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-release:
- $(GO_BIN) get github.com/gobuffalo/release
- make tidy
- release -y -f version.go --skip-packr
- make tidy
-
-
-
diff --git a/vendor/github.com/markbates/errx/SHOULDERS.md b/vendor/github.com/markbates/errx/SHOULDERS.md
deleted file mode 100644
index b19072e9f66..00000000000
--- a/vendor/github.com/markbates/errx/SHOULDERS.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# github.com/markbates/errx Stands on the Shoulders of Giants
-
-github.com/markbates/errx does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
diff --git a/vendor/github.com/markbates/errx/azure-pipelines.yml b/vendor/github.com/markbates/errx/azure-pipelines.yml
deleted file mode 100644
index 417e2c57921..00000000000
--- a/vendor/github.com/markbates/errx/azure-pipelines.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-variables:
- GOBIN: "$(GOPATH)/bin" # Go binaries path
- GOPATH: "$(system.defaultWorkingDirectory)/gopath" # Go workspace path
- modulePath: "$(GOPATH)/src/github.com/$(build.repository.name)" # Path to the module"s code
-
-jobs:
-- job: Windows
- pool:
- vmImage: "vs2017-win2016"
- strategy:
- matrix:
- go 1.10:
- go_version: "1.10"
- go 1.11 (on):
- go_version: "1.11.5"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.5"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
-
-- job: macOS
- pool:
- vmImage: "macOS-10.13"
- strategy:
- matrix:
- go 1.10:
- go_version: "1.10"
- go 1.11 (on):
- go_version: "1.11.5"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.5"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
-
-- job: Linux
- pool:
- vmImage: "ubuntu-16.04"
- strategy:
- matrix:
- go 1.10:
- go_version: "1.10"
- go 1.11 (on):
- go_version: "1.11.5"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.5"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
diff --git a/vendor/github.com/markbates/errx/azure-tests.yml b/vendor/github.com/markbates/errx/azure-tests.yml
deleted file mode 100644
index eea5822fad5..00000000000
--- a/vendor/github.com/markbates/errx/azure-tests.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-steps:
- - task: GoTool@0
- inputs:
- version: $(go_version)
- - task: Bash@3
- inputs:
- targetType: inline
- script: |
- mkdir -p "$(GOBIN)"
- mkdir -p "$(GOPATH)/pkg"
- mkdir -p "$(modulePath)"
- shopt -s extglob
- mv !(gopath) "$(modulePath)"
- displayName: "Setup Go Workspace"
- - script: |
- go get -t -v ./...
- go test -race ./...
- workingDirectory: "$(modulePath)"
- displayName: "Tests"
diff --git a/vendor/github.com/markbates/errx/errx.go b/vendor/github.com/markbates/errx/errx.go
deleted file mode 100644
index 515d9f506ac..00000000000
--- a/vendor/github.com/markbates/errx/errx.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package errx
-
-import "fmt"
-
-// go2 errors
-type Wrapper interface {
- Unwrap() error
-}
-
-// pkg/errors
-type Causer interface {
- Cause() error
-}
-
-func Unwrap(err error) error {
- switch e := err.(type) {
- case Wrapper:
- return e.Unwrap()
- case Causer:
- return e.Cause()
- }
- return err
-}
-
-var Cause = Unwrap
-
-func Wrap(err error, msg string) error {
- return wrapped{
- err: err,
- msg: msg,
- }
-}
-
-type wrapped struct {
- err error
- msg string
-}
-
-func (w wrapped) Error() string {
- return fmt.Sprintf("%s: %s", w.msg, w.err)
-}
-
-func (w wrapped) Unwrap() error {
- return w.err
-}
-
-func (w wrapped) Cause() error {
- return w.err
-}
diff --git a/vendor/github.com/markbates/errx/version.go b/vendor/github.com/markbates/errx/version.go
deleted file mode 100644
index 6b5c99b8e21..00000000000
--- a/vendor/github.com/markbates/errx/version.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package errx
-
-// Version of errx
-const Version = "v1.1.0"
diff --git a/vendor/github.com/markbates/oncer/.gitignore b/vendor/github.com/markbates/oncer/.gitignore
deleted file mode 100644
index 3689718594c..00000000000
--- a/vendor/github.com/markbates/oncer/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.log
-.DS_Store
-doc
-tmp
-pkg
-*.gem
-*.pid
-coverage
-coverage.data
-build/*
-*.pbxuser
-*.mode1v3
-.svn
-profile
-.console_history
-.sass-cache/*
-.rake_tasks~
-*.log.lck
-solr/
-.jhw-cache/
-jhw.*
-*.sublime*
-node_modules/
-dist/
-generated/
-.vendor/
-bin/*
-gin-bin
-.idea/
diff --git a/vendor/github.com/markbates/oncer/LICENSE b/vendor/github.com/markbates/oncer/LICENSE
deleted file mode 100644
index 649efd43722..00000000000
--- a/vendor/github.com/markbates/oncer/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 Mark Bates
-
-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/markbates/oncer/Makefile b/vendor/github.com/markbates/oncer/Makefile
deleted file mode 100644
index 0ac539f1c2e..00000000000
--- a/vendor/github.com/markbates/oncer/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-TAGS ?= ""
-GO_BIN ?= "go"
-
-install:
- $(GO_BIN) install -tags ${TAGS} -v .
- make tidy
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
- make tidy
-
-build:
- $(GO_BIN) build -v .
- make tidy
-
-test:
- $(GO_BIN) test -cover -tags ${TAGS} ./...
- make tidy
-
-ci-deps:
- $(GO_BIN) get -tags ${TAGS} -t ./...
-
-ci-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
-
-lint:
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
- golangci-lint run --enable-all
- make tidy
-
-update:
-ifeq ($(GO111MODULE),on)
- rm go.*
- $(GO_BIN) mod init
- $(GO_BIN) mod tidy
-else
- $(GO_BIN) get -u -tags ${TAGS}
-endif
- make test
- make install
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-release:
- $(GO_BIN) get github.com/gobuffalo/release
- make tidy
- release -y -f version.go --skip-packr
- make tidy
-
-
-
diff --git a/vendor/github.com/markbates/oncer/SHOULDERS.md b/vendor/github.com/markbates/oncer/SHOULDERS.md
deleted file mode 100644
index 47a4cd1cfd2..00000000000
--- a/vendor/github.com/markbates/oncer/SHOULDERS.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# github.com/markbates/oncer Stands on the Shoulders of Giants
-
-github.com/markbates/oncer does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
-
-* [github.com/davecgh/go-spew](https://godoc.org/github.com/davecgh/go-spew)
-
-* [github.com/stretchr/testify](https://godoc.org/github.com/stretchr/testify)
diff --git a/vendor/github.com/markbates/oncer/azure-pipelines.yml b/vendor/github.com/markbates/oncer/azure-pipelines.yml
deleted file mode 100644
index bfda076f50a..00000000000
--- a/vendor/github.com/markbates/oncer/azure-pipelines.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-variables:
- GOBIN: "$(GOPATH)/bin" # Go binaries path
- GOPATH: "$(system.defaultWorkingDirectory)/gopath" # Go workspace path
- modulePath: "$(GOPATH)/src/github.com/$(build.repository.name)" # Path to the module"s code
-
-jobs:
-- job: Windows
- pool:
- vmImage: "vs2017-win2016"
- strategy:
- matrix:
- go 1.11 (on):
- go_version: "1.11.11"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.11"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12.6"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12.6"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
-
-- job: macOS
- pool:
- vmImage: "macOS-10.13"
- strategy:
- matrix:
- go 1.11 (on):
- go_version: "1.11.11"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.11"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12.6"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12.6"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
-
-- job: Linux
- pool:
- vmImage: "ubuntu-16.04"
- strategy:
- matrix:
- go 1.11 (on):
- go_version: "1.11.11"
- GO111MODULE: "on"
- go 1.11 (off):
- go_version: "1.11.11"
- GO111MODULE: "off"
- go 1.12 (on):
- go_version: "1.12.6"
- GO111MODULE: "on"
- go 1.12 (off):
- go_version: "1.12.6"
- GO111MODULE: "off"
- steps:
- - template: azure-tests.yml
diff --git a/vendor/github.com/markbates/oncer/azure-tests.yml b/vendor/github.com/markbates/oncer/azure-tests.yml
deleted file mode 100644
index eea5822fad5..00000000000
--- a/vendor/github.com/markbates/oncer/azure-tests.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-steps:
- - task: GoTool@0
- inputs:
- version: $(go_version)
- - task: Bash@3
- inputs:
- targetType: inline
- script: |
- mkdir -p "$(GOBIN)"
- mkdir -p "$(GOPATH)/pkg"
- mkdir -p "$(modulePath)"
- shopt -s extglob
- mv !(gopath) "$(modulePath)"
- displayName: "Setup Go Workspace"
- - script: |
- go get -t -v ./...
- go test -race ./...
- workingDirectory: "$(modulePath)"
- displayName: "Tests"
diff --git a/vendor/github.com/markbates/oncer/deprecate.go b/vendor/github.com/markbates/oncer/deprecate.go
deleted file mode 100644
index 4eb3a443e2c..00000000000
--- a/vendor/github.com/markbates/oncer/deprecate.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package oncer
-
-import (
- "fmt"
- "io"
- "os"
-)
-
-const deprecated = "DEPRECATED"
-
-var deprecationWriter io.Writer = os.Stdout
-
-func Deprecate(depth int, name string, msg string) {
- Do(deprecated+name, func() {
- fmt.Fprintf(deprecationWriter, "[%s] %s has been deprecated.\n", deprecated, name)
- if len(msg) > 0 {
- fmt.Fprintf(deprecationWriter, "\t%s\n", msg)
- }
- })
-}
diff --git a/vendor/github.com/markbates/oncer/log.go b/vendor/github.com/markbates/oncer/log.go
deleted file mode 100644
index ed434639626..00000000000
--- a/vendor/github.com/markbates/oncer/log.go
+++ /dev/null
@@ -1,7 +0,0 @@
-//+build !debug
-
-package oncer
-
-func log(name string, fn func()) func() {
- return fn
-}
diff --git a/vendor/github.com/markbates/oncer/log_debug.go b/vendor/github.com/markbates/oncer/log_debug.go
deleted file mode 100644
index 76d0e114902..00000000000
--- a/vendor/github.com/markbates/oncer/log_debug.go
+++ /dev/null
@@ -1,19 +0,0 @@
-//+build debug
-
-package oncer
-
-import (
- "fmt"
- "time"
-)
-
-func log(name string, fn func()) func() {
- return func() {
- start := time.Now()
- if len(name) > 80 {
- name = name[(len(name) - 80):]
- }
- defer fmt.Println(name, time.Now().Sub(start))
- fn()
- }
-}
diff --git a/vendor/github.com/markbates/oncer/oncer.go b/vendor/github.com/markbates/oncer/oncer.go
deleted file mode 100644
index 5b3ab8df0e8..00000000000
--- a/vendor/github.com/markbates/oncer/oncer.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package oncer
-
-import (
- "sync"
-)
-
-var onces = &sync.Map{}
-
-func Do(name string, fn func()) {
- o, _ := onces.LoadOrStore(name, &sync.Once{})
- if once, ok := o.(*sync.Once); ok {
- once.Do(log(name, fn))
- }
-}
-
-func Reset(names ...string) {
- if len(names) == 0 {
- onces = &sync.Map{}
- return
- }
-
- for _, n := range names {
- onces.Delete(n)
- onces.Delete(deprecated + n)
- }
-}
diff --git a/vendor/github.com/markbates/oncer/version.go b/vendor/github.com/markbates/oncer/version.go
deleted file mode 100644
index 8b7448d8fe9..00000000000
--- a/vendor/github.com/markbates/oncer/version.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package oncer
-
-// Version of oncer
-const Version = "v1.0.0"
diff --git a/vendor/github.com/markbates/safe/.gitignore b/vendor/github.com/markbates/safe/.gitignore
deleted file mode 100644
index 3689718594c..00000000000
--- a/vendor/github.com/markbates/safe/.gitignore
+++ /dev/null
@@ -1,29 +0,0 @@
-*.log
-.DS_Store
-doc
-tmp
-pkg
-*.gem
-*.pid
-coverage
-coverage.data
-build/*
-*.pbxuser
-*.mode1v3
-.svn
-profile
-.console_history
-.sass-cache/*
-.rake_tasks~
-*.log.lck
-solr/
-.jhw-cache/
-jhw.*
-*.sublime*
-node_modules/
-dist/
-generated/
-.vendor/
-bin/*
-gin-bin
-.idea/
diff --git a/vendor/github.com/markbates/safe/.gometalinter.json b/vendor/github.com/markbates/safe/.gometalinter.json
deleted file mode 100644
index e4f65a36e82..00000000000
--- a/vendor/github.com/markbates/safe/.gometalinter.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "Enable": ["vet", "golint", "goimports", "deadcode", "gotype", "ineffassign", "misspell", "nakedret", "unconvert", "megacheck", "varcheck"]
-}
diff --git a/vendor/github.com/markbates/safe/.travis.yml b/vendor/github.com/markbates/safe/.travis.yml
deleted file mode 100644
index cf1d2c7d42e..00000000000
--- a/vendor/github.com/markbates/safe/.travis.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-language: go
-
-sudo: false
-
-matrix:
- include:
- - go: "1.9.x"
- - go: "1.10.x"
- - go: "1.11.x"
- env:
- - GO111MODULE=off
- - go: "1.11.x"
- env:
- - GO111MODULE=on
- - go: "tip"
- env:
- - GO111MODULE=off
- - go: "tip"
- env:
- - GO111MODULE=on
- allow_failures:
- - go: "tip"
-
-install: make deps
-
-script: make ci-test
diff --git a/vendor/github.com/markbates/safe/LICENSE b/vendor/github.com/markbates/safe/LICENSE
deleted file mode 100644
index a538bcbf28e..00000000000
--- a/vendor/github.com/markbates/safe/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2018 Mark Bates
-
-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/markbates/safe/Makefile b/vendor/github.com/markbates/safe/Makefile
deleted file mode 100644
index e0e2f3baa4d..00000000000
--- a/vendor/github.com/markbates/safe/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-TAGS ?= "sqlite"
-GO_BIN ?= go
-
-install:
- packr
- $(GO_BIN) install -tags ${TAGS} -v .
- make tidy
-
-tidy:
-ifeq ($(GO111MODULE),on)
- $(GO_BIN) mod tidy
-else
- echo skipping go mod tidy
-endif
-
-deps:
- $(GO_BIN) get github.com/gobuffalo/release
- $(GO_BIN) get github.com/gobuffalo/packr/packr
- $(GO_BIN) get -tags ${TAGS} -t ./...
- make tidy
-
-build:
- packr
- $(GO_BIN) build -v .
- make tidy
-
-test:
- packr
- $(GO_BIN) test -tags ${TAGS} ./...
- make tidy
-
-ci-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-lint:
- gometalinter --vendor ./... --deadline=1m --skip=internal
- make tidy
-
-update:
- $(GO_BIN) get -u -tags ${TAGS}
- make tidy
- packr
- make test
- make install
- make tidy
-
-release-test:
- $(GO_BIN) test -tags ${TAGS} -race ./...
- make tidy
-
-release:
- make tidy
- release -y -f version.go
- make tidy
diff --git a/vendor/github.com/markbates/safe/safe.go b/vendor/github.com/markbates/safe/safe.go
deleted file mode 100644
index a40d2083e5b..00000000000
--- a/vendor/github.com/markbates/safe/safe.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package safe
-
-import (
- "errors"
- "fmt"
-)
-
-// Run the function safely knowing that if it panics
-// the panic will be caught and returned as an error
-func Run(fn func()) (err error) {
- return RunE(func() error {
- fn()
- return nil
- })
-}
-
-// Run the function safely knowing that if it panics
-// the panic will be caught and returned as an error
-func RunE(fn func() error) (err error) {
- defer func() {
- if err != nil {
- return
- }
- if ex := recover(); ex != nil {
- if e, ok := ex.(error); ok {
- err = e
- return
- }
- err = errors.New(fmt.Sprint(ex))
- }
- }()
- return fn()
-}
diff --git a/vendor/github.com/markbates/safe/shoulders.md b/vendor/github.com/markbates/safe/shoulders.md
deleted file mode 100644
index a3821f2ad1b..00000000000
--- a/vendor/github.com/markbates/safe/shoulders.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# github.com/markbates/safe Stands on the Shoulders of Giants
-
-github.com/markbates/safe does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants this project would not be possible. Please make sure to check them out and thank them for all of their hard work.
-
-Thank you to the following **GIANTS**:
-
-
-* [github.com/markbates/safe](https://godoc.org/github.com/markbates/safe)
diff --git a/vendor/github.com/markbates/safe/version.go b/vendor/github.com/markbates/safe/version.go
deleted file mode 100644
index e655dc5e3cd..00000000000
--- a/vendor/github.com/markbates/safe/version.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package safe
-
-const Version = "v1.0.1"
diff --git a/vendor/github.com/pelletier/go-toml/.dockerignore b/vendor/github.com/pelletier/go-toml/.dockerignore
new file mode 100644
index 00000000000..7b5883475df
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/.dockerignore
@@ -0,0 +1,2 @@
+cmd/tomll/tomll
+cmd/tomljson/tomljson
diff --git a/vendor/github.com/pelletier/go-toml/.gitignore b/vendor/github.com/pelletier/go-toml/.gitignore
index 99e38bbc53f..e6ba63a5c5c 100644
--- a/vendor/github.com/pelletier/go-toml/.gitignore
+++ b/vendor/github.com/pelletier/go-toml/.gitignore
@@ -1,2 +1,5 @@
test_program/test_program_bin
fuzz/
+cmd/tomll/tomll
+cmd/tomljson/tomljson
+cmd/tomltestgen/tomltestgen
diff --git a/vendor/github.com/pelletier/go-toml/.travis.yml b/vendor/github.com/pelletier/go-toml/.travis.yml
deleted file mode 100644
index c9fbf304bf3..00000000000
--- a/vendor/github.com/pelletier/go-toml/.travis.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-sudo: false
-language: go
-go:
- - 1.8.x
- - 1.9.x
- - 1.10.x
- - tip
-matrix:
- allow_failures:
- - go: tip
- fast_finish: true
-script:
- - if [ -n "$(go fmt ./...)" ]; then exit 1; fi
- - ./test.sh
- - ./benchmark.sh $TRAVIS_BRANCH https://github.com/$TRAVIS_REPO_SLUG.git
-before_install:
- - go get github.com/axw/gocov/gocov
- - go get github.com/mattn/goveralls
- - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
-branches:
- only: [master]
-after_success:
- - $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=coverage.out -repotoken $COVERALLS_TOKEN
diff --git a/vendor/github.com/pelletier/go-toml/CONTRIBUTING.md b/vendor/github.com/pelletier/go-toml/CONTRIBUTING.md
new file mode 100644
index 00000000000..405c911c903
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/CONTRIBUTING.md
@@ -0,0 +1,132 @@
+## Contributing
+
+Thank you for your interest in go-toml! We appreciate you considering
+contributing to go-toml!
+
+The main goal is the project is to provide an easy-to-use TOML
+implementation for Go that gets the job done and gets out of your way –
+dealing with TOML is probably not the central piece of your project.
+
+As the single maintainer of go-toml, time is scarce. All help, big or
+small, is more than welcomed!
+
+### Ask questions
+
+Any question you may have, somebody else might have it too. Always feel
+free to ask them on the [issues tracker][issues-tracker]. We will try to
+answer them as clearly and quickly as possible, time permitting.
+
+Asking questions also helps us identify areas where the documentation needs
+improvement, or new features that weren't envisioned before. Sometimes, a
+seemingly innocent question leads to the fix of a bug. Don't hesitate and
+ask away!
+
+### Improve the documentation
+
+The best way to share your knowledge and experience with go-toml is to
+improve the documentation. Fix a typo, clarify an interface, add an
+example, anything goes!
+
+The documentation is present in the [README][readme] and thorough the
+source code. On release, it gets updated on [GoDoc][godoc]. To make a
+change to the documentation, create a pull request with your proposed
+changes. For simple changes like that, the easiest way to go is probably
+the "Fork this project and edit the file" button on Github, displayed at
+the top right of the file. Unless it's a trivial change (for example a
+typo), provide a little bit of context in your pull request description or
+commit message.
+
+### Report a bug
+
+Found a bug! Sorry to hear that :(. Help us and other track them down and
+fix by reporting it. [File a new bug report][bug-report] on the [issues
+tracker][issues-tracker]. The template should provide enough guidance on
+what to include. When in doubt: add more details! By reducing ambiguity and
+providing more information, it decreases back and forth and saves everyone
+time.
+
+### Code changes
+
+Want to contribute a patch? Very happy to hear that!
+
+First, some high-level rules:
+
+* A short proposal with some POC code is better than a lengthy piece of
+ text with no code. Code speaks louder than words.
+* No backward-incompatible patch will be accepted unless discussed.
+ Sometimes it's hard, and Go's lack of versioning by default does not
+ help, but we try not to break people's programs unless we absolutely have
+ to.
+* If you are writing a new feature or extending an existing one, make sure
+ to write some documentation.
+* Bug fixes need to be accompanied with regression tests.
+* New code needs to be tested.
+* Your commit messages need to explain why the change is needed, even if
+ already included in the PR description.
+
+It does sound like a lot, but those best practices are here to save time
+overall and continuously improve the quality of the project, which is
+something everyone benefits from.
+
+#### Get started
+
+The fairly standard code contribution process looks like that:
+
+1. [Fork the project][fork].
+2. Make your changes, commit on any branch you like.
+3. [Open up a pull request][pull-request]
+4. Review, potential ask for changes.
+5. Merge. You're in!
+
+Feel free to ask for help! You can create draft pull requests to gather
+some early feedback!
+
+#### Run the tests
+
+You can run tests for go-toml using Go's test tool: `go test ./...`.
+When creating a pull requests, all tests will be ran on Linux on a few Go
+versions (Travis CI), and on Windows using the latest Go version
+(AppVeyor).
+
+#### Style
+
+Try to look around and follow the same format and structure as the rest of
+the code. We enforce using `go fmt` on the whole code base.
+
+---
+
+### Maintainers-only
+
+#### Merge pull request
+
+Checklist:
+
+* Passing CI.
+* Does not introduce backward-incompatible changes (unless discussed).
+* Has relevant doc changes.
+* Has relevant unit tests.
+
+1. Merge using "squash and merge".
+2. Make sure to edit the commit message to keep all the useful information
+ nice and clean.
+3. Make sure the commit title is clear and contains the PR number (#123).
+
+#### New release
+
+1. Go to [releases][releases]. Click on "X commits to master since this
+ release".
+2. Make note of all the changes. Look for backward incompatible changes,
+ new features, and bug fixes.
+3. Pick the new version using the above and semver.
+4. Create a [new release][new-release].
+5. Follow the same format as [1.1.0][release-110].
+
+[issues-tracker]: https://github.com/pelletier/go-toml/issues
+[bug-report]: https://github.com/pelletier/go-toml/issues/new?template=bug_report.md
+[godoc]: https://godoc.org/github.com/pelletier/go-toml
+[readme]: ./README.md
+[fork]: https://help.github.com/articles/fork-a-repo
+[pull-request]: https://help.github.com/en/articles/creating-a-pull-request
+[releases]: https://github.com/pelletier/go-toml/releases
+[new-release]: https://github.com/pelletier/go-toml/releases/new
+[release-110]: https://github.com/pelletier/go-toml/releases/tag/v1.1.0
diff --git a/vendor/github.com/pelletier/go-toml/Dockerfile b/vendor/github.com/pelletier/go-toml/Dockerfile
new file mode 100644
index 00000000000..fffdb016668
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/Dockerfile
@@ -0,0 +1,11 @@
+FROM golang:1.12-alpine3.9 as builder
+WORKDIR /go/src/github.com/pelletier/go-toml
+COPY . .
+ENV CGO_ENABLED=0
+ENV GOOS=linux
+RUN go install ./...
+
+FROM scratch
+COPY --from=builder /go/bin/tomll /usr/bin/tomll
+COPY --from=builder /go/bin/tomljson /usr/bin/tomljson
+COPY --from=builder /go/bin/jsontoml /usr/bin/jsontoml
diff --git a/vendor/github.com/pelletier/go-toml/Makefile b/vendor/github.com/pelletier/go-toml/Makefile
new file mode 100644
index 00000000000..9e4503aea65
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/Makefile
@@ -0,0 +1,29 @@
+export CGO_ENABLED=0
+go := go
+go.goos ?= $(shell echo `go version`|cut -f4 -d ' '|cut -d '/' -f1)
+go.goarch ?= $(shell echo `go version`|cut -f4 -d ' '|cut -d '/' -f2)
+
+out.tools := tomll tomljson jsontoml
+out.dist := $(out.tools:=_$(go.goos)_$(go.goarch).tar.xz)
+sources := $(wildcard **/*.go)
+
+
+.PHONY:
+tools: $(out.tools)
+
+$(out.tools): $(sources)
+ GOOS=$(go.goos) GOARCH=$(go.goarch) $(go) build ./cmd/$@
+
+.PHONY:
+dist: $(out.dist)
+
+$(out.dist):%_$(go.goos)_$(go.goarch).tar.xz: %
+ if [ "$(go.goos)" = "windows" ]; then \
+ tar -cJf $@ $^.exe; \
+ else \
+ tar -cJf $@ $^; \
+ fi
+
+.PHONY:
+clean:
+ rm -rf $(out.tools) $(out.dist)
diff --git a/vendor/github.com/pelletier/go-toml/PULL_REQUEST_TEMPLATE.md b/vendor/github.com/pelletier/go-toml/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 00000000000..041cdc4a2f1
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,5 @@
+**Issue:** add link to pelletier/go-toml issue here
+
+Explanation of what this pull request does.
+
+More detailed description of the decisions being made and the reasons why (if the patch is non-trivial).
diff --git a/vendor/github.com/pelletier/go-toml/README.md b/vendor/github.com/pelletier/go-toml/README.md
index 0d357acf35d..4ef303af03a 100644
--- a/vendor/github.com/pelletier/go-toml/README.md
+++ b/vendor/github.com/pelletier/go-toml/README.md
@@ -3,13 +3,14 @@
Go library for the [TOML](https://github.com/mojombo/toml) format.
This library supports TOML version
-[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md)
+[v0.5.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.5.0.md)
[![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml)
[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE)
-[![Build Status](https://travis-ci.org/pelletier/go-toml.svg?branch=master)](https://travis-ci.org/pelletier/go-toml)
-[![Coverage Status](https://coveralls.io/repos/github/pelletier/go-toml/badge.svg?branch=master)](https://coveralls.io/github/pelletier/go-toml?branch=master)
+[![Build Status](https://dev.azure.com/pelletierthomas/go-toml-ci/_apis/build/status/pelletier.go-toml?branchName=master)](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master)
+[![codecov](https://codecov.io/gh/pelletier/go-toml/branch/master/graph/badge.svg)](https://codecov.io/gh/pelletier/go-toml)
[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml)
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield)
## Features
@@ -98,6 +99,30 @@ Go-toml provides two handy command line tools:
go install github.com/pelletier/go-toml/cmd/tomljson
tomljson --help
```
+
+ * `jsontoml`: Reads a JSON file and outputs a TOML representation.
+
+ ```
+ go install github.com/pelletier/go-toml/cmd/jsontoml
+ jsontoml --help
+ ```
+
+### Docker image
+
+Those tools are also availble as a Docker image from
+[dockerhub](https://hub.docker.com/r/pelletier/go-toml). For example, to
+use `tomljson`:
+
+```
+docker run -v $PWD:/workdir pelletier/go-toml tomljson /workdir/example.toml
+```
+
+Only master (`latest`) and tagged versions are published to dockerhub. You
+can build your own image as usual:
+
+```
+docker build -t go-toml .
+```
## Contribute
@@ -107,12 +132,7 @@ much appreciated!
### Run tests
-You have to make sure two kind of tests run:
-
-1. The Go unit tests
-2. The TOML examples base
-
-You can run both of them using `./test.sh`.
+`go test ./...`
### Fuzzing
diff --git a/vendor/github.com/pelletier/go-toml/azure-pipelines.yml b/vendor/github.com/pelletier/go-toml/azure-pipelines.yml
new file mode 100644
index 00000000000..242b5b5403b
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/azure-pipelines.yml
@@ -0,0 +1,230 @@
+trigger:
+- master
+
+stages:
+- stage: fuzzit
+ displayName: "Run Fuzzit"
+ dependsOn: []
+ condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))
+ jobs:
+ - job: submit
+ displayName: "Submit"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go 1.14"
+ inputs:
+ version: "1.14"
+ - script: echo "##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/"
+ - script: mkdir -p ${HOME}/go/src/github.com/pelletier/go-toml
+ - script: cp -R . ${HOME}/go/src/github.com/pelletier/go-toml
+ - task: Bash@3
+ inputs:
+ filePath: './fuzzit.sh'
+ env:
+ TYPE: fuzzing
+ FUZZIT_API_KEY: $(FUZZIT_API_KEY)
+
+- stage: run_checks
+ displayName: "Check"
+ dependsOn: []
+ jobs:
+ - job: fmt
+ displayName: "fmt"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go 1.14"
+ inputs:
+ version: "1.14"
+ - task: Go@0
+ displayName: "go fmt ./..."
+ inputs:
+ command: 'custom'
+ customCommand: 'fmt'
+ arguments: './...'
+ - job: coverage
+ displayName: "coverage"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go 1.14"
+ inputs:
+ version: "1.14"
+ - task: Go@0
+ displayName: "Generate coverage"
+ inputs:
+ command: 'test'
+ arguments: "-race -coverprofile=coverage.txt -covermode=atomic"
+ - task: Bash@3
+ inputs:
+ targetType: 'inline'
+ script: 'bash <(curl -s https://codecov.io/bash) -t ${CODECOV_TOKEN}'
+ env:
+ CODECOV_TOKEN: $(CODECOV_TOKEN)
+ - job: benchmark
+ displayName: "benchmark"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go 1.14"
+ inputs:
+ version: "1.14"
+ - script: echo "##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/"
+ - task: Bash@3
+ inputs:
+ filePath: './benchmark.sh'
+ arguments: "master $(Build.Repository.Uri)"
+
+ - job: fuzzing
+ displayName: "fuzzing"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go 1.14"
+ inputs:
+ version: "1.14"
+ - script: echo "##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/"
+ - script: mkdir -p ${HOME}/go/src/github.com/pelletier/go-toml
+ - script: cp -R . ${HOME}/go/src/github.com/pelletier/go-toml
+ - task: Bash@3
+ inputs:
+ filePath: './fuzzit.sh'
+ env:
+ TYPE: local-regression
+
+ - job: go_unit_tests
+ displayName: "unit tests"
+ strategy:
+ matrix:
+ linux 1.14:
+ goVersion: '1.14'
+ imageName: 'ubuntu-latest'
+ mac 1.14:
+ goVersion: '1.14'
+ imageName: 'macOS-latest'
+ windows 1.14:
+ goVersion: '1.14'
+ imageName: 'windows-latest'
+ linux 1.13:
+ goVersion: '1.13'
+ imageName: 'ubuntu-latest'
+ mac 1.13:
+ goVersion: '1.13'
+ imageName: 'macOS-latest'
+ windows 1.13:
+ goVersion: '1.13'
+ imageName: 'windows-latest'
+ pool:
+ vmImage: $(imageName)
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go $(goVersion)"
+ inputs:
+ version: $(goVersion)
+ - task: Go@0
+ displayName: "go test ./..."
+ inputs:
+ command: 'test'
+ arguments: './...'
+- stage: build_binaries
+ displayName: "Build binaries"
+ dependsOn: run_checks
+ jobs:
+ - job: build_binary
+ displayName: "Build binary"
+ strategy:
+ matrix:
+ linux_amd64:
+ GOOS: linux
+ GOARCH: amd64
+ darwin_amd64:
+ GOOS: darwin
+ GOARCH: amd64
+ windows_amd64:
+ GOOS: windows
+ GOARCH: amd64
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: GoTool@0
+ displayName: "Install Go"
+ inputs:
+ version: 1.14
+ - task: Bash@3
+ inputs:
+ targetType: inline
+ script: "make dist"
+ env:
+ go.goos: $(GOOS)
+ go.goarch: $(GOARCH)
+ - task: CopyFiles@2
+ inputs:
+ sourceFolder: '$(Build.SourcesDirectory)'
+ contents: '*.tar.xz'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)'
+ - task: PublishBuildArtifacts@1
+ inputs:
+ pathtoPublish: '$(Build.ArtifactStagingDirectory)'
+ artifactName: binaries
+- stage: build_binaries_manifest
+ displayName: "Build binaries manifest"
+ dependsOn: build_binaries
+ jobs:
+ - job: build_manifest
+ displayName: "Build binaries manifest"
+ steps:
+ - task: DownloadBuildArtifacts@0
+ inputs:
+ buildType: 'current'
+ downloadType: 'single'
+ artifactName: 'binaries'
+ downloadPath: '$(Build.SourcesDirectory)'
+ - task: Bash@3
+ inputs:
+ targetType: inline
+ script: "cd binaries && sha256sum --binary *.tar.xz | tee $(Build.ArtifactStagingDirectory)/sha256sums.txt"
+ - task: PublishBuildArtifacts@1
+ inputs:
+ pathtoPublish: '$(Build.ArtifactStagingDirectory)'
+ artifactName: manifest
+
+- stage: build_docker_image
+ displayName: "Build Docker image"
+ dependsOn: run_checks
+ jobs:
+ - job: build
+ displayName: "Build"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: Docker@2
+ inputs:
+ command: 'build'
+ Dockerfile: 'Dockerfile'
+ buildContext: '.'
+ addPipelineData: false
+
+- stage: publish_docker_image
+ displayName: "Publish Docker image"
+ dependsOn: build_docker_image
+ condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))
+ jobs:
+ - job: publish
+ displayName: "Publish"
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - task: Docker@2
+ inputs:
+ containerRegistry: 'DockerHub'
+ repository: 'pelletier/go-toml'
+ command: 'buildAndPush'
+ Dockerfile: 'Dockerfile'
+ buildContext: '.'
+ tags: 'latest'
diff --git a/vendor/github.com/pelletier/go-toml/benchmark.sh b/vendor/github.com/pelletier/go-toml/benchmark.sh
index 8b8bb528e75..7914fff49c9 100644
--- a/vendor/github.com/pelletier/go-toml/benchmark.sh
+++ b/vendor/github.com/pelletier/go-toml/benchmark.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -e
+set -ex
reference_ref=${1:-master}
reference_git=${2:-.}
@@ -8,7 +8,6 @@ reference_git=${2:-.}
if ! `hash benchstat 2>/dev/null`; then
echo "Installing benchstat"
go get golang.org/x/perf/cmd/benchstat
- go install golang.org/x/perf/cmd/benchstat
fi
tempdir=`mktemp -d /tmp/go-toml-benchmark-XXXXXX`
@@ -29,4 +28,4 @@ go test -bench=. -benchmem | tee ${local_benchmark}
echo ""
echo "=== diff"
-benchstat -delta-test=none ${ref_benchmark} ${local_benchmark}
\ No newline at end of file
+benchstat -delta-test=none ${ref_benchmark} ${local_benchmark}
diff --git a/vendor/github.com/pelletier/go-toml/doc.go b/vendor/github.com/pelletier/go-toml/doc.go
index d5fd98c0211..a1406a32b38 100644
--- a/vendor/github.com/pelletier/go-toml/doc.go
+++ b/vendor/github.com/pelletier/go-toml/doc.go
@@ -1,7 +1,7 @@
// Package toml is a TOML parser and manipulation library.
//
// This version supports the specification as described in
-// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md
+// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.5.0.md
//
// Marshaling
//
diff --git a/vendor/github.com/pelletier/go-toml/fuzzit.sh b/vendor/github.com/pelletier/go-toml/fuzzit.sh
new file mode 100644
index 00000000000..b575a6081f0
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/fuzzit.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -xe
+
+# go-fuzz doesn't support modules yet, so ensure we do everything
+# in the old style GOPATH way
+export GO111MODULE="off"
+
+# install go-fuzz
+go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build
+
+# target name can only contain lower-case letters (a-z), digits (0-9) and a dash (-)
+# to add another target, make sure to create it with `fuzzit create target`
+# before using `fuzzit create job`
+TARGET=toml-fuzzer
+
+go-fuzz-build -libfuzzer -o ${TARGET}.a github.com/pelletier/go-toml
+clang -fsanitize=fuzzer ${TARGET}.a -o ${TARGET}
+
+# install fuzzit for talking to fuzzit.dev service
+# or latest version:
+# https://github.com/fuzzitdev/fuzzit/releases/latest/download/fuzzit_Linux_x86_64
+wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.52/fuzzit_Linux_x86_64
+chmod a+x fuzzit
+
+# TODO: change kkowalczyk to go-toml and create toml-fuzzer target there
+./fuzzit create job --type $TYPE go-toml/${TARGET} ${TARGET}
diff --git a/vendor/github.com/pelletier/go-toml/keysparsing.go b/vendor/github.com/pelletier/go-toml/keysparsing.go
index 284db64678b..e923bc4f9b7 100644
--- a/vendor/github.com/pelletier/go-toml/keysparsing.go
+++ b/vendor/github.com/pelletier/go-toml/keysparsing.go
@@ -3,79 +3,107 @@
package toml
import (
- "bytes"
"errors"
"fmt"
"unicode"
)
// Convert the bare key group string to an array.
-// The input supports double quotation to allow "." inside the key name,
+// The input supports double quotation and single quotation,
// but escape sequences are not supported. Lexers must unescape them beforehand.
func parseKey(key string) ([]string, error) {
- groups := []string{}
- var buffer bytes.Buffer
- inQuotes := false
- wasInQuotes := false
- ignoreSpace := true
- expectDot := false
+ runes := []rune(key)
+ var groups []string
- for _, char := range key {
- if ignoreSpace {
- if char == ' ' {
- continue
- }
- ignoreSpace = false
+ if len(key) == 0 {
+ return nil, errors.New("empty key")
+ }
+
+ idx := 0
+ for idx < len(runes) {
+ for ; idx < len(runes) && isSpace(runes[idx]); idx++ {
+ // skip leading whitespace
}
- switch char {
- case '"':
- if inQuotes {
- groups = append(groups, buffer.String())
- buffer.Reset()
- wasInQuotes = true
- }
- inQuotes = !inQuotes
- expectDot = false
- case '.':
- if inQuotes {
- buffer.WriteRune(char)
- } else {
- if !wasInQuotes {
- if buffer.Len() == 0 {
- return nil, errors.New("empty table key")
+ if idx >= len(runes) {
+ break
+ }
+ r := runes[idx]
+ if isValidBareChar(r) {
+ // parse bare key
+ startIdx := idx
+ endIdx := -1
+ idx++
+ for idx < len(runes) {
+ r = runes[idx]
+ if isValidBareChar(r) {
+ idx++
+ } else if r == '.' {
+ endIdx = idx
+ break
+ } else if isSpace(r) {
+ endIdx = idx
+ for ; idx < len(runes) && isSpace(runes[idx]); idx++ {
+ // skip trailing whitespace
}
- groups = append(groups, buffer.String())
- buffer.Reset()
+ if idx < len(runes) && runes[idx] != '.' {
+ return nil, fmt.Errorf("invalid key character after whitespace: %c", runes[idx])
+ }
+ break
+ } else {
+ return nil, fmt.Errorf("invalid bare key character: %c", r)
+ }
+ }
+ if endIdx == -1 {
+ endIdx = idx
+ }
+ groups = append(groups, string(runes[startIdx:endIdx]))
+ } else if r == '\'' {
+ // parse single quoted key
+ idx++
+ startIdx := idx
+ for {
+ if idx >= len(runes) {
+ return nil, fmt.Errorf("unclosed single-quoted key")
}
- ignoreSpace = true
- expectDot = false
- wasInQuotes = false
+ r = runes[idx]
+ if r == '\'' {
+ groups = append(groups, string(runes[startIdx:idx]))
+ idx++
+ break
+ }
+ idx++
}
- case ' ':
- if inQuotes {
- buffer.WriteRune(char)
- } else {
- expectDot = true
+ } else if r == '"' {
+ // parse double quoted key
+ idx++
+ startIdx := idx
+ for {
+ if idx >= len(runes) {
+ return nil, fmt.Errorf("unclosed double-quoted key")
+ }
+ r = runes[idx]
+ if r == '"' {
+ groups = append(groups, string(runes[startIdx:idx]))
+ idx++
+ break
+ }
+ idx++
}
- default:
- if !inQuotes && !isValidBareChar(char) {
- return nil, fmt.Errorf("invalid bare character: %c", char)
+ } else if r == '.' {
+ idx++
+ if idx >= len(runes) {
+ return nil, fmt.Errorf("unexpected end of key")
}
- if !inQuotes && expectDot {
- return nil, errors.New("what?")
+ r = runes[idx]
+ if !isValidBareChar(r) && r != '\'' && r != '"' && r != ' ' {
+ return nil, fmt.Errorf("expecting key part after dot")
}
- buffer.WriteRune(char)
- expectDot = false
+ } else {
+ return nil, fmt.Errorf("invalid key character: %c", r)
}
}
- if inQuotes {
- return nil, errors.New("mismatched quotes")
- }
- if buffer.Len() > 0 {
- groups = append(groups, buffer.String())
- }
if len(groups) == 0 {
- return nil, errors.New("empty key")
+ return nil, fmt.Errorf("empty key")
}
return groups, nil
}
diff --git a/vendor/github.com/pelletier/go-toml/lexer.go b/vendor/github.com/pelletier/go-toml/lexer.go
index d11de428594..88fd91ee0b0 100644
--- a/vendor/github.com/pelletier/go-toml/lexer.go
+++ b/vendor/github.com/pelletier/go-toml/lexer.go
@@ -223,9 +223,12 @@ func (l *tomlLexer) lexRvalue() tomlLexStateFn {
}
possibleDate := l.peekString(35)
- dateMatch := dateRegexp.FindString(possibleDate)
- if dateMatch != "" {
- l.fastForward(len(dateMatch))
+ dateSubmatches := dateRegexp.FindStringSubmatch(possibleDate)
+ if dateSubmatches != nil && dateSubmatches[0] != "" {
+ l.fastForward(len(dateSubmatches[0]))
+ if dateSubmatches[2] == "" { // no timezone information => local date
+ return l.lexLocalDate
+ }
return l.lexDate
}
@@ -247,7 +250,7 @@ func (l *tomlLexer) lexRvalue() tomlLexStateFn {
func (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn {
l.next()
l.emit(tokenLeftCurlyBrace)
- return l.lexRvalue
+ return l.lexVoid
}
func (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn {
@@ -261,6 +264,11 @@ func (l *tomlLexer) lexDate() tomlLexStateFn {
return l.lexRvalue
}
+func (l *tomlLexer) lexLocalDate() tomlLexStateFn {
+ l.emit(tokenLocalDate)
+ return l.lexRvalue
+}
+
func (l *tomlLexer) lexTrue() tomlLexStateFn {
l.fastForward(4)
l.emit(tokenTrue)
@@ -309,7 +317,7 @@ func (l *tomlLexer) lexKey() tomlLexStateFn {
if err != nil {
return l.errorf(err.Error())
}
- growingString += str
+ growingString += "\"" + str + "\""
l.next()
continue
} else if r == '\'' {
@@ -318,13 +326,15 @@ func (l *tomlLexer) lexKey() tomlLexStateFn {
if err != nil {
return l.errorf(err.Error())
}
- growingString += str
+ growingString += "'" + str + "'"
l.next()
continue
} else if r == '\n' {
return l.errorf("keys cannot contain new lines")
} else if isSpace(r) {
break
+ } else if r == '.' {
+ // skip
} else if !isValidBareChar(r) {
return l.errorf("keys cannot contain %c character", r)
}
@@ -731,7 +741,27 @@ func (l *tomlLexer) run() {
}
func init() {
- dateRegexp = regexp.MustCompile(`^\d{1,4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})`)
+ // Regexp for all date/time formats supported by TOML.
+ // Group 1: nano precision
+ // Group 2: timezone
+ //
+ // /!\ also matches the empty string
+ //
+ // Example matches:
+ //1979-05-27T07:32:00Z
+ //1979-05-27T00:32:00-07:00
+ //1979-05-27T00:32:00.999999-07:00
+ //1979-05-27 07:32:00Z
+ //1979-05-27 00:32:00-07:00
+ //1979-05-27 00:32:00.999999-07:00
+ //1979-05-27T07:32:00
+ //1979-05-27T00:32:00.999999
+ //1979-05-27 07:32:00
+ //1979-05-27 00:32:00.999999
+ //1979-05-27
+ //07:32:00
+ //00:32:00.999999
+ dateRegexp = regexp.MustCompile(`^(?:\d{1,4}-\d{2}-\d{2})?(?:[T ]?\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})?)?`)
}
// Entry point
diff --git a/vendor/github.com/pelletier/go-toml/localtime.go b/vendor/github.com/pelletier/go-toml/localtime.go
new file mode 100644
index 00000000000..a2149e9663a
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/localtime.go
@@ -0,0 +1,281 @@
+// Implementation of TOML's local date/time.
+// Copied over from https://github.com/googleapis/google-cloud-go/blob/master/civil/civil.go
+// to avoid pulling all the Google dependencies.
+//
+// Copyright 2016 Google LLC
+//
+// 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.
+
+// Package civil implements types for civil time, a time-zone-independent
+// representation of time that follows the rules of the proleptic
+// Gregorian calendar with exactly 24-hour days, 60-minute hours, and 60-second
+// minutes.
+//
+// Because they lack location information, these types do not represent unique
+// moments or intervals of time. Use time.Time for that purpose.
+package toml
+
+import (
+ "fmt"
+ "time"
+)
+
+// A LocalDate represents a date (year, month, day).
+//
+// This type does not include location information, and therefore does not
+// describe a unique 24-hour timespan.
+type LocalDate struct {
+ Year int // Year (e.g., 2014).
+ Month time.Month // Month of the year (January = 1, ...).
+ Day int // Day of the month, starting at 1.
+}
+
+// LocalDateOf returns the LocalDate in which a time occurs in that time's location.
+func LocalDateOf(t time.Time) LocalDate {
+ var d LocalDate
+ d.Year, d.Month, d.Day = t.Date()
+ return d
+}
+
+// ParseLocalDate parses a string in RFC3339 full-date format and returns the date value it represents.
+func ParseLocalDate(s string) (LocalDate, error) {
+ t, err := time.Parse("2006-01-02", s)
+ if err != nil {
+ return LocalDate{}, err
+ }
+ return LocalDateOf(t), nil
+}
+
+// String returns the date in RFC3339 full-date format.
+func (d LocalDate) String() string {
+ return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day)
+}
+
+// IsValid reports whether the date is valid.
+func (d LocalDate) IsValid() bool {
+ return LocalDateOf(d.In(time.UTC)) == d
+}
+
+// In returns the time corresponding to time 00:00:00 of the date in the location.
+//
+// In is always consistent with time.LocalDate, even when time.LocalDate returns a time
+// on a different day. For example, if loc is America/Indiana/Vincennes, then both
+// time.LocalDate(1955, time.May, 1, 0, 0, 0, 0, loc)
+// and
+// civil.LocalDate{Year: 1955, Month: time.May, Day: 1}.In(loc)
+// return 23:00:00 on April 30, 1955.
+//
+// In panics if loc is nil.
+func (d LocalDate) In(loc *time.Location) time.Time {
+ return time.Date(d.Year, d.Month, d.Day, 0, 0, 0, 0, loc)
+}
+
+// AddDays returns the date that is n days in the future.
+// n can also be negative to go into the past.
+func (d LocalDate) AddDays(n int) LocalDate {
+ return LocalDateOf(d.In(time.UTC).AddDate(0, 0, n))
+}
+
+// DaysSince returns the signed number of days between the date and s, not including the end day.
+// This is the inverse operation to AddDays.
+func (d LocalDate) DaysSince(s LocalDate) (days int) {
+ // We convert to Unix time so we do not have to worry about leap seconds:
+ // Unix time increases by exactly 86400 seconds per day.
+ deltaUnix := d.In(time.UTC).Unix() - s.In(time.UTC).Unix()
+ return int(deltaUnix / 86400)
+}
+
+// Before reports whether d1 occurs before d2.
+func (d1 LocalDate) Before(d2 LocalDate) bool {
+ if d1.Year != d2.Year {
+ return d1.Year < d2.Year
+ }
+ if d1.Month != d2.Month {
+ return d1.Month < d2.Month
+ }
+ return d1.Day < d2.Day
+}
+
+// After reports whether d1 occurs after d2.
+func (d1 LocalDate) After(d2 LocalDate) bool {
+ return d2.Before(d1)
+}
+
+// MarshalText implements the encoding.TextMarshaler interface.
+// The output is the result of d.String().
+func (d LocalDate) MarshalText() ([]byte, error) {
+ return []byte(d.String()), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface.
+// The date is expected to be a string in a format accepted by ParseLocalDate.
+func (d *LocalDate) UnmarshalText(data []byte) error {
+ var err error
+ *d, err = ParseLocalDate(string(data))
+ return err
+}
+
+// A LocalTime represents a time with nanosecond precision.
+//
+// This type does not include location information, and therefore does not
+// describe a unique moment in time.
+//
+// This type exists to represent the TIME type in storage-based APIs like BigQuery.
+// Most operations on Times are unlikely to be meaningful. Prefer the LocalDateTime type.
+type LocalTime struct {
+ Hour int // The hour of the day in 24-hour format; range [0-23]
+ Minute int // The minute of the hour; range [0-59]
+ Second int // The second of the minute; range [0-59]
+ Nanosecond int // The nanosecond of the second; range [0-999999999]
+}
+
+// LocalTimeOf returns the LocalTime representing the time of day in which a time occurs
+// in that time's location. It ignores the date.
+func LocalTimeOf(t time.Time) LocalTime {
+ var tm LocalTime
+ tm.Hour, tm.Minute, tm.Second = t.Clock()
+ tm.Nanosecond = t.Nanosecond()
+ return tm
+}
+
+// ParseLocalTime parses a string and returns the time value it represents.
+// ParseLocalTime accepts an extended form of the RFC3339 partial-time format. After
+// the HH:MM:SS part of the string, an optional fractional part may appear,
+// consisting of a decimal point followed by one to nine decimal digits.
+// (RFC3339 admits only one digit after the decimal point).
+func ParseLocalTime(s string) (LocalTime, error) {
+ t, err := time.Parse("15:04:05.999999999", s)
+ if err != nil {
+ return LocalTime{}, err
+ }
+ return LocalTimeOf(t), nil
+}
+
+// String returns the date in the format described in ParseLocalTime. If Nanoseconds
+// is zero, no fractional part will be generated. Otherwise, the result will
+// end with a fractional part consisting of a decimal point and nine digits.
+func (t LocalTime) String() string {
+ s := fmt.Sprintf("%02d:%02d:%02d", t.Hour, t.Minute, t.Second)
+ if t.Nanosecond == 0 {
+ return s
+ }
+ return s + fmt.Sprintf(".%09d", t.Nanosecond)
+}
+
+// IsValid reports whether the time is valid.
+func (t LocalTime) IsValid() bool {
+ // Construct a non-zero time.
+ tm := time.Date(2, 2, 2, t.Hour, t.Minute, t.Second, t.Nanosecond, time.UTC)
+ return LocalTimeOf(tm) == t
+}
+
+// MarshalText implements the encoding.TextMarshaler interface.
+// The output is the result of t.String().
+func (t LocalTime) MarshalText() ([]byte, error) {
+ return []byte(t.String()), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface.
+// The time is expected to be a string in a format accepted by ParseLocalTime.
+func (t *LocalTime) UnmarshalText(data []byte) error {
+ var err error
+ *t, err = ParseLocalTime(string(data))
+ return err
+}
+
+// A LocalDateTime represents a date and time.
+//
+// This type does not include location information, and therefore does not
+// describe a unique moment in time.
+type LocalDateTime struct {
+ Date LocalDate
+ Time LocalTime
+}
+
+// Note: We deliberately do not embed LocalDate into LocalDateTime, to avoid promoting AddDays and Sub.
+
+// LocalDateTimeOf returns the LocalDateTime in which a time occurs in that time's location.
+func LocalDateTimeOf(t time.Time) LocalDateTime {
+ return LocalDateTime{
+ Date: LocalDateOf(t),
+ Time: LocalTimeOf(t),
+ }
+}
+
+// ParseLocalDateTime parses a string and returns the LocalDateTime it represents.
+// ParseLocalDateTime accepts a variant of the RFC3339 date-time format that omits
+// the time offset but includes an optional fractional time, as described in
+// ParseLocalTime. Informally, the accepted format is
+// YYYY-MM-DDTHH:MM:SS[.FFFFFFFFF]
+// where the 'T' may be a lower-case 't'.
+func ParseLocalDateTime(s string) (LocalDateTime, error) {
+ t, err := time.Parse("2006-01-02T15:04:05.999999999", s)
+ if err != nil {
+ t, err = time.Parse("2006-01-02t15:04:05.999999999", s)
+ if err != nil {
+ return LocalDateTime{}, err
+ }
+ }
+ return LocalDateTimeOf(t), nil
+}
+
+// String returns the date in the format described in ParseLocalDate.
+func (dt LocalDateTime) String() string {
+ return dt.Date.String() + "T" + dt.Time.String()
+}
+
+// IsValid reports whether the datetime is valid.
+func (dt LocalDateTime) IsValid() bool {
+ return dt.Date.IsValid() && dt.Time.IsValid()
+}
+
+// In returns the time corresponding to the LocalDateTime in the given location.
+//
+// If the time is missing or ambigous at the location, In returns the same
+// result as time.LocalDate. For example, if loc is America/Indiana/Vincennes, then
+// both
+// time.LocalDate(1955, time.May, 1, 0, 30, 0, 0, loc)
+// and
+// civil.LocalDateTime{
+// civil.LocalDate{Year: 1955, Month: time.May, Day: 1}},
+// civil.LocalTime{Minute: 30}}.In(loc)
+// return 23:30:00 on April 30, 1955.
+//
+// In panics if loc is nil.
+func (dt LocalDateTime) In(loc *time.Location) time.Time {
+ return time.Date(dt.Date.Year, dt.Date.Month, dt.Date.Day, dt.Time.Hour, dt.Time.Minute, dt.Time.Second, dt.Time.Nanosecond, loc)
+}
+
+// Before reports whether dt1 occurs before dt2.
+func (dt1 LocalDateTime) Before(dt2 LocalDateTime) bool {
+ return dt1.In(time.UTC).Before(dt2.In(time.UTC))
+}
+
+// After reports whether dt1 occurs after dt2.
+func (dt1 LocalDateTime) After(dt2 LocalDateTime) bool {
+ return dt2.Before(dt1)
+}
+
+// MarshalText implements the encoding.TextMarshaler interface.
+// The output is the result of dt.String().
+func (dt LocalDateTime) MarshalText() ([]byte, error) {
+ return []byte(dt.String()), nil
+}
+
+// UnmarshalText implements the encoding.TextUnmarshaler interface.
+// The datetime is expected to be a string in a format accepted by ParseLocalDateTime
+func (dt *LocalDateTime) UnmarshalText(data []byte) error {
+ var err error
+ *dt, err = ParseLocalDateTime(string(data))
+ return err
+}
diff --git a/vendor/github.com/pelletier/go-toml/marshal.go b/vendor/github.com/pelletier/go-toml/marshal.go
index 671da5564c3..dcddad8dba0 100644
--- a/vendor/github.com/pelletier/go-toml/marshal.go
+++ b/vendor/github.com/pelletier/go-toml/marshal.go
@@ -6,20 +6,28 @@ import (
"fmt"
"io"
"reflect"
+ "sort"
"strconv"
"strings"
"time"
)
-const tagKeyMultiline = "multiline"
+const (
+ tagFieldName = "toml"
+ tagFieldComment = "comment"
+ tagCommented = "commented"
+ tagMultiline = "multiline"
+ tagDefault = "default"
+)
type tomlOpts struct {
- name string
- comment string
- commented bool
- multiline bool
- include bool
- omitempty bool
+ name string
+ comment string
+ commented bool
+ multiline bool
+ include bool
+ omitempty bool
+ defaultValue string
}
type encOpts struct {
@@ -31,10 +39,40 @@ var encOptsDefaults = encOpts{
quoteMapKeys: false,
}
+type annotation struct {
+ tag string
+ comment string
+ commented string
+ multiline string
+ defaultValue string
+}
+
+var annotationDefault = annotation{
+ tag: tagFieldName,
+ comment: tagFieldComment,
+ commented: tagCommented,
+ multiline: tagMultiline,
+ defaultValue: tagDefault,
+}
+
+type marshalOrder int
+
+// Orders the Encoder can write the fields to the output stream.
+const (
+ // Sort fields alphabetically.
+ OrderAlphabetical marshalOrder = iota + 1
+ // Preserve the order the fields are encountered. For example, the order of fields in
+ // a struct.
+ OrderPreserve
+)
+
var timeType = reflect.TypeOf(time.Time{})
var marshalerType = reflect.TypeOf(new(Marshaler)).Elem()
+var localDateType = reflect.TypeOf(LocalDate{})
+var localTimeType = reflect.TypeOf(LocalTime{})
+var localDateTimeType = reflect.TypeOf(LocalDateTime{})
-// Check if the given marshall type maps to a Tree primitive
+// Check if the given marshal type maps to a Tree primitive
func isPrimitive(mtype reflect.Type) bool {
switch mtype.Kind() {
case reflect.Ptr:
@@ -50,37 +88,41 @@ func isPrimitive(mtype reflect.Type) bool {
case reflect.String:
return true
case reflect.Struct:
- return mtype == timeType || isCustomMarshaler(mtype)
+ return mtype == timeType || mtype == localDateType || mtype == localDateTimeType || mtype == localTimeType || isCustomMarshaler(mtype)
default:
return false
}
}
-// Check if the given marshall type maps to a Tree slice
-func isTreeSlice(mtype reflect.Type) bool {
+// Check if the given marshal type maps to a Tree slice or array
+func isTreeSequence(mtype reflect.Type) bool {
switch mtype.Kind() {
- case reflect.Slice:
- return !isOtherSlice(mtype)
+ case reflect.Ptr:
+ return isTreeSequence(mtype.Elem())
+ case reflect.Slice, reflect.Array:
+ return isTree(mtype.Elem())
default:
return false
}
}
-// Check if the given marshall type maps to a non-Tree slice
-func isOtherSlice(mtype reflect.Type) bool {
+// Check if the given marshal type maps to a non-Tree slice or array
+func isOtherSequence(mtype reflect.Type) bool {
switch mtype.Kind() {
case reflect.Ptr:
- return isOtherSlice(mtype.Elem())
- case reflect.Slice:
- return isPrimitive(mtype.Elem()) || isOtherSlice(mtype.Elem())
+ return isOtherSequence(mtype.Elem())
+ case reflect.Slice, reflect.Array:
+ return !isTreeSequence(mtype)
default:
return false
}
}
-// Check if the given marshall type maps to a Tree
+// Check if the given marshal type maps to a Tree
func isTree(mtype reflect.Type) bool {
switch mtype.Kind() {
+ case reflect.Ptr:
+ return isTree(mtype.Elem())
case reflect.Map:
return true
case reflect.Struct:
@@ -135,7 +177,9 @@ Tree primitive types and corresponding marshal types:
float64 float32, float64, pointers to same
string string, pointers to same
bool bool, pointers to same
- time.Time time.Time{}, pointers to same
+ time.LocalTime time.LocalTime{}, pointers to same
+
+For additional flexibility, use the Encoder API.
*/
func Marshal(v interface{}) ([]byte, error) {
return NewEncoder(nil).marshal(v)
@@ -145,13 +189,21 @@ func Marshal(v interface{}) ([]byte, error) {
type Encoder struct {
w io.Writer
encOpts
+ annotation
+ line int
+ col int
+ order marshalOrder
}
// NewEncoder returns a new encoder that writes to w.
func NewEncoder(w io.Writer) *Encoder {
return &Encoder{
- w: w,
- encOpts: encOptsDefaults,
+ w: w,
+ encOpts: encOptsDefaults,
+ annotation: annotationDefault,
+ line: 0,
+ col: 1,
+ order: OrderAlphabetical,
}
}
@@ -197,11 +249,49 @@ func (e *Encoder) ArraysWithOneElementPerLine(v bool) *Encoder {
return e
}
+// Order allows to change in which order fields will be written to the output stream.
+func (e *Encoder) Order(ord marshalOrder) *Encoder {
+ e.order = ord
+ return e
+}
+
+// SetTagName allows changing default tag "toml"
+func (e *Encoder) SetTagName(v string) *Encoder {
+ e.tag = v
+ return e
+}
+
+// SetTagComment allows changing default tag "comment"
+func (e *Encoder) SetTagComment(v string) *Encoder {
+ e.comment = v
+ return e
+}
+
+// SetTagCommented allows changing default tag "commented"
+func (e *Encoder) SetTagCommented(v string) *Encoder {
+ e.commented = v
+ return e
+}
+
+// SetTagMultiline allows changing default tag "multiline"
+func (e *Encoder) SetTagMultiline(v string) *Encoder {
+ e.multiline = v
+ return e
+}
+
func (e *Encoder) marshal(v interface{}) ([]byte, error) {
mtype := reflect.TypeOf(v)
- if mtype.Kind() != reflect.Struct {
- return []byte{}, errors.New("Only a struct can be marshaled to TOML")
+
+ switch mtype.Kind() {
+ case reflect.Struct, reflect.Map:
+ case reflect.Ptr:
+ if mtype.Elem().Kind() != reflect.Struct {
+ return []byte{}, errors.New("Only pointer to struct can be marshaled to TOML")
+ }
+ default:
+ return []byte{}, errors.New("Only a struct or map can be marshaled to TOML")
}
+
sval := reflect.ValueOf(v)
if isCustomMarshaler(mtype) {
return callCustomMarshaler(sval)
@@ -212,44 +302,76 @@ func (e *Encoder) marshal(v interface{}) ([]byte, error) {
}
var buf bytes.Buffer
- _, err = t.writeTo(&buf, "", "", 0, e.arraysOneElementPerLine)
+ _, err = t.writeToOrdered(&buf, "", "", 0, e.arraysOneElementPerLine, e.order, false)
return buf.Bytes(), err
}
+// Create next tree with a position based on Encoder.line
+func (e *Encoder) nextTree() *Tree {
+ return newTreeWithPosition(Position{Line: e.line, Col: 1})
+}
+
// Convert given marshal struct or map value to toml tree
func (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, error) {
if mtype.Kind() == reflect.Ptr {
return e.valueToTree(mtype.Elem(), mval.Elem())
}
- tval := newTree()
+ tval := e.nextTree()
switch mtype.Kind() {
case reflect.Struct:
- for i := 0; i < mtype.NumField(); i++ {
- mtypef, mvalf := mtype.Field(i), mval.Field(i)
- opts := tomlOptions(mtypef)
- if opts.include && (!opts.omitempty || !isZero(mvalf)) {
- val, err := e.valueToToml(mtypef.Type, mvalf)
- if err != nil {
- return nil, err
- }
+ switch mval.Interface().(type) {
+ case Tree:
+ reflect.ValueOf(tval).Elem().Set(mval)
+ default:
+ for i := 0; i < mtype.NumField(); i++ {
+ mtypef, mvalf := mtype.Field(i), mval.Field(i)
+ opts := tomlOptions(mtypef, e.annotation)
+ if opts.include && ((mtypef.Type.Kind() != reflect.Interface && !opts.omitempty) || !isZero(mvalf)) {
+ val, err := e.valueToToml(mtypef.Type, mvalf)
+ if err != nil {
+ return nil, err
+ }
- tval.SetWithOptions(opts.name, SetOptions{
- Comment: opts.comment,
- Commented: opts.commented,
- Multiline: opts.multiline,
- }, val)
+ tval.SetWithOptions(opts.name, SetOptions{
+ Comment: opts.comment,
+ Commented: opts.commented,
+ Multiline: opts.multiline,
+ }, val)
+ }
}
}
case reflect.Map:
- for _, key := range mval.MapKeys() {
+ keys := mval.MapKeys()
+ if e.order == OrderPreserve && len(keys) > 0 {
+ // Sorting []reflect.Value is not straight forward.
+ //
+ // OrderPreserve will support deterministic results when string is used
+ // as the key to maps.
+ typ := keys[0].Type()
+ kind := keys[0].Kind()
+ if kind == reflect.String {
+ ikeys := make([]string, len(keys))
+ for i := range keys {
+ ikeys[i] = keys[i].Interface().(string)
+ }
+ sort.Strings(ikeys)
+ for i := range ikeys {
+ keys[i] = reflect.ValueOf(ikeys[i]).Convert(typ)
+ }
+ }
+ }
+ for _, key := range keys {
mvalf := mval.MapIndex(key)
+ if (mtype.Elem().Kind() == reflect.Ptr || mtype.Elem().Kind() == reflect.Interface) && mvalf.IsNil() {
+ continue
+ }
val, err := e.valueToToml(mtype.Elem(), mvalf)
if err != nil {
return nil, err
}
if e.quoteMapKeys {
- keyStr, err := tomlValueStringRepresentation(key.String(), "", e.arraysOneElementPerLine)
+ keyStr, err := tomlValueStringRepresentation(key.String(), "", "", e.arraysOneElementPerLine)
if err != nil {
return nil, err
}
@@ -277,6 +399,9 @@ func (e *Encoder) valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*T
// Convert given marshal slice to slice of toml values
func (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) {
+ if mtype.Elem().Kind() == reflect.Interface {
+ return nil, fmt.Errorf("marshal can't handle []interface{}")
+ }
tval := make([]interface{}, mval.Len(), mval.Len())
for i := 0; i < mval.Len(); i++ {
val, err := e.valueToToml(mtype.Elem(), mval.Index(i))
@@ -290,23 +415,30 @@ func (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (int
// Convert given marshal value to toml value
func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) {
+ e.line++
if mtype.Kind() == reflect.Ptr {
return e.valueToToml(mtype.Elem(), mval.Elem())
}
+ if mtype.Kind() == reflect.Interface {
+ return e.valueToToml(mval.Elem().Type(), mval.Elem())
+ }
switch {
case isCustomMarshaler(mtype):
return callCustomMarshaler(mval)
case isTree(mtype):
return e.valueToTree(mtype, mval)
- case isTreeSlice(mtype):
+ case isTreeSequence(mtype):
return e.valueToTreeSlice(mtype, mval)
- case isOtherSlice(mtype):
+ case isOtherSequence(mtype):
return e.valueToOtherSlice(mtype, mval)
default:
switch mtype.Kind() {
case reflect.Bool:
return mval.Bool(), nil
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ if mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) {
+ return fmt.Sprint(mval), nil
+ }
return mval.Int(), nil
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
return mval.Uint(), nil
@@ -315,7 +447,7 @@ func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface
case reflect.String:
return mval.String(), nil
case reflect.Struct:
- return mval.Interface().(time.Time), nil
+ return mval.Interface(), nil
default:
return nil, fmt.Errorf("Marshal can't handle %v(%v)", mtype, mtype.Kind())
}
@@ -326,7 +458,7 @@ func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface
// Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for
// sub-structs, and only definite types can be unmarshaled.
func (t *Tree) Unmarshal(v interface{}) error {
- d := Decoder{tval: t}
+ d := Decoder{tval: t, tagName: tagFieldName}
return d.unmarshal(v)
}
@@ -334,8 +466,11 @@ func (t *Tree) Unmarshal(v interface{}) error {
// See Marshal() documentation for types mapping table.
func (t *Tree) Marshal() ([]byte, error) {
var buf bytes.Buffer
- err := NewEncoder(&buf).Encode(t)
- return buf.Bytes(), err
+ _, err := t.WriteTo(&buf)
+ if err != nil {
+ return nil, err
+ }
+ return buf.Bytes(), nil
}
// Unmarshal parses the TOML-encoded data and stores the result in the value
@@ -347,6 +482,14 @@ func (t *Tree) Marshal() ([]byte, error) {
// The following struct annotations are supported:
//
// toml:"Field" Overrides the field's name to map to.
+// default:"foo" Provides a default value.
+//
+// For default values, only fields of the following types are supported:
+// * string
+// * bool
+// * int
+// * int64
+// * float64
//
// See Marshal() documentation for types mapping table.
func Unmarshal(data []byte, v interface{}) error {
@@ -362,6 +505,7 @@ type Decoder struct {
r io.Reader
tval *Tree
encOpts
+ tagName string
}
// NewDecoder returns a new decoder that reads from r.
@@ -369,6 +513,7 @@ func NewDecoder(r io.Reader) *Decoder {
return &Decoder{
r: r,
encOpts: encOptsDefaults,
+ tagName: tagFieldName,
}
}
@@ -385,13 +530,29 @@ func (d *Decoder) Decode(v interface{}) error {
return d.unmarshal(v)
}
+// SetTagName allows changing default tag "toml"
+func (d *Decoder) SetTagName(v string) *Decoder {
+ d.tagName = v
+ return d
+}
+
func (d *Decoder) unmarshal(v interface{}) error {
mtype := reflect.TypeOf(v)
- if mtype.Kind() != reflect.Ptr || mtype.Elem().Kind() != reflect.Struct {
- return errors.New("Only a pointer to struct can be unmarshaled from TOML")
+ if mtype.Kind() != reflect.Ptr {
+ return errors.New("only a pointer to struct or map can be unmarshaled from TOML")
}
- sval, err := d.valueFromTree(mtype.Elem(), d.tval)
+ elem := mtype.Elem()
+
+ switch elem.Kind() {
+ case reflect.Struct, reflect.Map:
+ default:
+ return errors.New("only a pointer to struct or map can be unmarshaled from TOML")
+ }
+
+ vv := reflect.ValueOf(v).Elem()
+
+ sval, err := d.valueFromTree(elem, d.tval, &vv)
if err != nil {
return err
}
@@ -399,33 +560,103 @@ func (d *Decoder) unmarshal(v interface{}) error {
return nil
}
-// Convert toml tree to marshal struct or map, using marshal type
-func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree) (reflect.Value, error) {
+// Convert toml tree to marshal struct or map, using marshal type. When mval1
+// is non-nil, merge fields into the given value instead of allocating a new one.
+func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.Value) (reflect.Value, error) {
if mtype.Kind() == reflect.Ptr {
- return d.unwrapPointer(mtype, tval)
+ return d.unwrapPointer(mtype, tval, mval1)
}
var mval reflect.Value
switch mtype.Kind() {
case reflect.Struct:
- mval = reflect.New(mtype).Elem()
- for i := 0; i < mtype.NumField(); i++ {
- mtypef := mtype.Field(i)
- opts := tomlOptions(mtypef)
- if opts.include {
+ if mval1 != nil {
+ mval = *mval1
+ } else {
+ mval = reflect.New(mtype).Elem()
+ }
+
+ switch mval.Interface().(type) {
+ case Tree:
+ mval.Set(reflect.ValueOf(tval).Elem())
+ default:
+ for i := 0; i < mtype.NumField(); i++ {
+ mtypef := mtype.Field(i)
+ an := annotation{tag: d.tagName}
+ opts := tomlOptions(mtypef, an)
+ if !opts.include {
+ continue
+ }
baseKey := opts.name
- keysToTry := []string{baseKey, strings.ToLower(baseKey), strings.ToTitle(baseKey)}
- for _, key := range keysToTry {
- exists := tval.Has(key)
- if !exists {
- continue
+ keysToTry := []string{
+ baseKey,
+ strings.ToLower(baseKey),
+ strings.ToTitle(baseKey),
+ strings.ToLower(string(baseKey[0])) + baseKey[1:],
+ }
+
+ found := false
+ if tval != nil {
+ for _, key := range keysToTry {
+ exists := tval.Has(key)
+ if !exists {
+ continue
+ }
+ val := tval.Get(key)
+ fval := mval.Field(i)
+ mvalf, err := d.valueFromToml(mtypef.Type, val, &fval)
+ if err != nil {
+ return mval, formatError(err, tval.GetPosition(key))
+ }
+ mval.Field(i).Set(mvalf)
+ found = true
+ break
}
- val := tval.Get(key)
- mvalf, err := d.valueFromToml(mtypef.Type, val)
+ }
+
+ if !found && opts.defaultValue != "" {
+ mvalf := mval.Field(i)
+ var val interface{}
+ var err error
+ switch mvalf.Kind() {
+ case reflect.Bool:
+ val, err = strconv.ParseBool(opts.defaultValue)
+ if err != nil {
+ return mval.Field(i), err
+ }
+ case reflect.Int:
+ val, err = strconv.Atoi(opts.defaultValue)
+ if err != nil {
+ return mval.Field(i), err
+ }
+ case reflect.String:
+ val = opts.defaultValue
+ case reflect.Int64:
+ val, err = strconv.ParseInt(opts.defaultValue, 10, 64)
+ if err != nil {
+ return mval.Field(i), err
+ }
+ case reflect.Float64:
+ val, err = strconv.ParseFloat(opts.defaultValue, 64)
+ if err != nil {
+ return mval.Field(i), err
+ }
+ default:
+ return mval.Field(i), fmt.Errorf("unsuported field type for default option")
+ }
+ mval.Field(i).Set(reflect.ValueOf(val))
+ }
+
+ // save the old behavior above and try to check structs
+ if !found && opts.defaultValue == "" && mtypef.Type.Kind() == reflect.Struct {
+ tmpTval := tval
+ if !mtypef.Anonymous {
+ tmpTval = nil
+ }
+ v, err := d.valueFromTree(mtypef.Type, tmpTval, nil)
if err != nil {
- return mval, formatError(err, tval.GetPosition(key))
+ return v, err
}
- mval.Field(i).Set(mvalf)
- break
+ mval.Field(i).Set(v)
}
}
}
@@ -434,11 +665,11 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree) (reflect.Value,
for _, key := range tval.Keys() {
// TODO: path splits key
val := tval.GetPath([]string{key})
- mvalf, err := d.valueFromToml(mtype.Elem(), val)
+ mvalf, err := d.valueFromToml(mtype.Elem(), val, nil)
if err != nil {
return mval, formatError(err, tval.GetPosition(key))
}
- mval.SetMapIndex(reflect.ValueOf(key), mvalf)
+ mval.SetMapIndex(reflect.ValueOf(key).Convert(mtype.Key()), mvalf)
}
}
return mval, nil
@@ -448,7 +679,7 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree) (reflect.Value,
func (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) {
mval := reflect.MakeSlice(mtype, len(tval), len(tval))
for i := 0; i < len(tval); i++ {
- val, err := d.valueFromTree(mtype.Elem(), tval[i])
+ val, err := d.valueFromTree(mtype.Elem(), tval[i], nil)
if err != nil {
return mval, err
}
@@ -461,7 +692,7 @@ func (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.
func (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) {
mval := reflect.MakeSlice(mtype, len(tval), len(tval))
for i := 0; i < len(tval); i++ {
- val, err := d.valueFromToml(mtype.Elem(), tval[i])
+ val, err := d.valueFromToml(mtype.Elem(), tval[i], nil)
if err != nil {
return mval, err
}
@@ -470,33 +701,88 @@ func (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (r
return mval, nil
}
-// Convert toml value to marshal value, using marshal type
-func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}) (reflect.Value, error) {
+// Convert toml value to marshal value, using marshal type. When mval1 is non-nil
+// and the given type is a struct value, merge fields into it.
+func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) {
if mtype.Kind() == reflect.Ptr {
- return d.unwrapPointer(mtype, tval)
+ return d.unwrapPointer(mtype, tval, mval1)
}
- switch tval.(type) {
+ switch t := tval.(type) {
case *Tree:
+ var mval11 *reflect.Value
+ if mtype.Kind() == reflect.Struct {
+ mval11 = mval1
+ }
+
if isTree(mtype) {
- return d.valueFromTree(mtype, tval.(*Tree))
+ return d.valueFromTree(mtype, t, mval11)
}
+
+ if mtype.Kind() == reflect.Interface {
+ if mval1 == nil || mval1.IsNil() {
+ return d.valueFromTree(reflect.TypeOf(map[string]interface{}{}), t, nil)
+ } else {
+ return d.valueFromToml(mval1.Elem().Type(), t, nil)
+ }
+ }
+
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to a tree", tval, tval)
case []*Tree:
- if isTreeSlice(mtype) {
- return d.valueFromTreeSlice(mtype, tval.([]*Tree))
+ if isTreeSequence(mtype) {
+ return d.valueFromTreeSlice(mtype, t)
+ }
+ if mtype.Kind() == reflect.Interface {
+ if mval1 == nil || mval1.IsNil() {
+ return d.valueFromTreeSlice(reflect.TypeOf([]map[string]interface{}{}), t)
+ } else {
+ ival := mval1.Elem()
+ return d.valueFromToml(mval1.Elem().Type(), t, &ival)
+ }
}
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to trees", tval, tval)
case []interface{}:
- if isOtherSlice(mtype) {
- return d.valueFromOtherSlice(mtype, tval.([]interface{}))
+ if isOtherSequence(mtype) {
+ return d.valueFromOtherSlice(mtype, t)
+ }
+ if mtype.Kind() == reflect.Interface {
+ if mval1 == nil || mval1.IsNil() {
+ return d.valueFromOtherSlice(reflect.TypeOf([]interface{}{}), t)
+ } else {
+ ival := mval1.Elem()
+ return d.valueFromToml(mval1.Elem().Type(), t, &ival)
+ }
}
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to a slice", tval, tval)
default:
switch mtype.Kind() {
case reflect.Bool, reflect.Struct:
val := reflect.ValueOf(tval)
- // if this passes for when mtype is reflect.Struct, tval is a time.Time
+
+ switch val.Type() {
+ case localDateType:
+ localDate := val.Interface().(LocalDate)
+ switch mtype {
+ case timeType:
+ return reflect.ValueOf(time.Date(localDate.Year, localDate.Month, localDate.Day, 0, 0, 0, 0, time.Local)), nil
+ }
+ case localDateTimeType:
+ localDateTime := val.Interface().(LocalDateTime)
+ switch mtype {
+ case timeType:
+ return reflect.ValueOf(time.Date(
+ localDateTime.Date.Year,
+ localDateTime.Date.Month,
+ localDateTime.Date.Day,
+ localDateTime.Time.Hour,
+ localDateTime.Time.Minute,
+ localDateTime.Time.Second,
+ localDateTime.Time.Nanosecond,
+ time.Local)), nil
+ }
+ }
+
+ // if this passes for when mtype is reflect.Struct, tval is a time.LocalTime
if !val.Type().ConvertibleTo(mtype) {
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String())
}
@@ -512,10 +798,17 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}) (reflect.V
return val.Convert(mtype), nil
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
val := reflect.ValueOf(tval)
+ if mtype.Kind() == reflect.Int64 && mtype == reflect.TypeOf(time.Duration(1)) && val.Kind() == reflect.String {
+ d, err := time.ParseDuration(val.String())
+ if err != nil {
+ return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v. %s", tval, tval, mtype.String(), err)
+ }
+ return reflect.ValueOf(d), nil
+ }
if !val.Type().ConvertibleTo(mtype) {
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String())
}
- if reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Int()) {
+ if reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Convert(mtype).Int()) {
return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String())
}
@@ -525,10 +818,11 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}) (reflect.V
if !val.Type().ConvertibleTo(mtype) {
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String())
}
- if val.Int() < 0 {
+
+ if val.Convert(reflect.TypeOf(int(1))).Int() < 0 {
return reflect.ValueOf(nil), fmt.Errorf("%v(%T) is negative so does not fit in %v", tval, tval, mtype.String())
}
- if reflect.Indirect(reflect.New(mtype)).OverflowUint(uint64(val.Int())) {
+ if reflect.Indirect(reflect.New(mtype)).OverflowUint(uint64(val.Convert(mtype).Uint())) {
return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String())
}
@@ -538,19 +832,33 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}) (reflect.V
if !val.Type().ConvertibleTo(mtype) {
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String())
}
- if reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Float()) {
+ if reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Convert(mtype).Float()) {
return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String())
}
return val.Convert(mtype), nil
+ case reflect.Interface:
+ if mval1 == nil || mval1.IsNil() {
+ return reflect.ValueOf(tval), nil
+ } else {
+ ival := mval1.Elem()
+ return d.valueFromToml(mval1.Elem().Type(), t, &ival)
+ }
default:
return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v(%v)", tval, tval, mtype, mtype.Kind())
}
}
}
-func (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}) (reflect.Value, error) {
- val, err := d.valueFromToml(mtype.Elem(), tval)
+func (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) {
+ var melem *reflect.Value
+
+ if mval1 != nil && !mval1.IsNil() && (mtype.Elem().Kind() == reflect.Struct || mtype.Elem().Kind() == reflect.Interface) {
+ elem := mval1.Elem()
+ melem = &elem
+ }
+
+ val, err := d.valueFromToml(mtype.Elem(), tval, melem)
if err != nil {
return reflect.ValueOf(nil), err
}
@@ -559,16 +867,25 @@ func (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}) (reflect.V
return mval, nil
}
-func tomlOptions(vf reflect.StructField) tomlOpts {
- tag := vf.Tag.Get("toml")
+func tomlOptions(vf reflect.StructField, an annotation) tomlOpts {
+ tag := vf.Tag.Get(an.tag)
parse := strings.Split(tag, ",")
var comment string
- if c := vf.Tag.Get("comment"); c != "" {
+ if c := vf.Tag.Get(an.comment); c != "" {
comment = c
}
- commented, _ := strconv.ParseBool(vf.Tag.Get("commented"))
- multiline, _ := strconv.ParseBool(vf.Tag.Get(tagKeyMultiline))
- result := tomlOpts{name: vf.Name, comment: comment, commented: commented, multiline: multiline, include: true, omitempty: false}
+ commented, _ := strconv.ParseBool(vf.Tag.Get(an.commented))
+ multiline, _ := strconv.ParseBool(vf.Tag.Get(an.multiline))
+ defaultValue := vf.Tag.Get(tagDefault)
+ result := tomlOpts{
+ name: vf.Name,
+ comment: comment,
+ commented: commented,
+ multiline: multiline,
+ include: true,
+ omitempty: false,
+ defaultValue: defaultValue,
+ }
if parse[0] != "" {
if parse[0] == "-" && len(parse) == 1 {
result.include = false
diff --git a/vendor/github.com/pelletier/go-toml/marshal_OrderPreserve_test.toml b/vendor/github.com/pelletier/go-toml/marshal_OrderPreserve_test.toml
new file mode 100644
index 00000000000..792b72ed721
--- /dev/null
+++ b/vendor/github.com/pelletier/go-toml/marshal_OrderPreserve_test.toml
@@ -0,0 +1,39 @@
+title = "TOML Marshal Testing"
+
+[basic_lists]
+ floats = [12.3,45.6,78.9]
+ bools = [true,false,true]
+ dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z]
+ ints = [8001,8001,8002]
+ uints = [5002,5003]
+ strings = ["One","Two","Three"]
+
+[[subdocptrs]]
+ name = "Second"
+
+[basic_map]
+ one = "one"
+ two = "two"
+
+[subdoc]
+
+ [subdoc.second]
+ name = "Second"
+
+ [subdoc.first]
+ name = "First"
+
+[basic]
+ uint = 5001
+ bool = true
+ float = 123.4
+ float64 = 123.456782132399
+ int = 5000
+ string = "Bite me"
+ date = 1979-05-27T07:32:00Z
+
+[[subdoclist]]
+ name = "List.First"
+
+[[subdoclist]]
+ name = "List.Second"
diff --git a/vendor/github.com/pelletier/go-toml/marshal_test.toml b/vendor/github.com/pelletier/go-toml/marshal_test.toml
index 1c5f98e7a84..ba5e110bf04 100644
--- a/vendor/github.com/pelletier/go-toml/marshal_test.toml
+++ b/vendor/github.com/pelletier/go-toml/marshal_test.toml
@@ -4,6 +4,7 @@ title = "TOML Marshal Testing"
bool = true
date = 1979-05-27T07:32:00Z
float = 123.4
+ float64 = 123.456782132399
int = 5000
string = "Bite me"
uint = 5001
diff --git a/vendor/github.com/pelletier/go-toml/parser.go b/vendor/github.com/pelletier/go-toml/parser.go
index 2d27599a999..1b344fee6c5 100644
--- a/vendor/github.com/pelletier/go-toml/parser.go
+++ b/vendor/github.com/pelletier/go-toml/parser.go
@@ -77,8 +77,10 @@ func (p *tomlParser) parseStart() tomlParserStateFn {
return p.parseAssign
case tokenEOF:
return nil
+ case tokenError:
+ p.raiseError(tok, "parsing error: %s", tok.String())
default:
- p.raiseError(tok, "unexpected token")
+ p.raiseError(tok, "unexpected token %s", tok.typ)
}
return nil
}
@@ -165,6 +167,11 @@ func (p *tomlParser) parseAssign() tomlParserStateFn {
key := p.getToken()
p.assume(tokenEqual)
+ parsedKey, err := parseKey(key.val)
+ if err != nil {
+ p.raiseError(key, "invalid key: %s", err.Error())
+ }
+
value := p.parseRvalue()
var tableKey []string
if len(p.currentTable) > 0 {
@@ -173,6 +180,9 @@ func (p *tomlParser) parseAssign() tomlParserStateFn {
tableKey = []string{}
}
+ prefixKey := parsedKey[0 : len(parsedKey)-1]
+ tableKey = append(tableKey, prefixKey...)
+
// find the table to assign, looking out for arrays of tables
var targetNode *Tree
switch node := p.tree.GetPath(tableKey).(type) {
@@ -180,17 +190,19 @@ func (p *tomlParser) parseAssign() tomlParserStateFn {
targetNode = node[len(node)-1]
case *Tree:
targetNode = node
+ case nil:
+ // create intermediate
+ if err := p.tree.createSubTree(tableKey, key.Position); err != nil {
+ p.raiseError(key, "could not create intermediate group: %s", err)
+ }
+ targetNode = p.tree.GetPath(tableKey).(*Tree)
default:
p.raiseError(key, "Unknown table type for path: %s",
strings.Join(tableKey, "."))
}
// assign value to the found table
- keyVals := []string{key.val}
- if len(keyVals) != 1 {
- p.raiseError(key, "Invalid key")
- }
- keyVal := keyVals[0]
+ keyVal := parsedKey[len(parsedKey)-1]
localKey := []string{keyVal}
finalKey := append(tableKey, keyVal)
if targetNode.GetPath(localKey) != nil {
@@ -301,7 +313,41 @@ func (p *tomlParser) parseRvalue() interface{} {
}
return val
case tokenDate:
- val, err := time.ParseInLocation(time.RFC3339Nano, tok.val, time.UTC)
+ layout := time.RFC3339Nano
+ if !strings.Contains(tok.val, "T") {
+ layout = strings.Replace(layout, "T", " ", 1)
+ }
+ val, err := time.ParseInLocation(layout, tok.val, time.UTC)
+ if err != nil {
+ p.raiseError(tok, "%s", err)
+ }
+ return val
+ case tokenLocalDate:
+ v := strings.Replace(tok.val, " ", "T", -1)
+ isDateTime := false
+ isTime := false
+ for _, c := range v {
+ if c == 'T' || c == 't' {
+ isDateTime = true
+ break
+ }
+ if c == ':' {
+ isTime = true
+ break
+ }
+ }
+
+ var val interface{}
+ var err error
+
+ if isDateTime {
+ val, err = ParseLocalDateTime(v)
+ } else if isTime {
+ val, err = ParseLocalTime(v)
+ } else {
+ val, err = ParseLocalDate(v)
+ }
+
if err != nil {
p.raiseError(tok, "%s", err)
}
@@ -338,18 +384,21 @@ Loop:
case tokenRightCurlyBrace:
p.getToken()
break Loop
- case tokenKey:
+ case tokenKey, tokenInteger, tokenString:
if !tokenIsComma(previous) && previous != nil {
p.raiseError(follow, "comma expected between fields in inline table")
}
key := p.getToken()
p.assume(tokenEqual)
+
+ parsedKey, err := parseKey(key.val)
+ if err != nil {
+ p.raiseError(key, "invalid key: %s", err)
+ }
+
value := p.parseRvalue()
- tree.Set(key.val, value)
+ tree.SetPath(parsedKey, value)
case tokenComma:
- if previous == nil {
- p.raiseError(follow, "inline table cannot start with a comma")
- }
if tokenIsComma(previous) {
p.raiseError(follow, "need field between two commas in inline table")
}
diff --git a/vendor/github.com/pelletier/go-toml/test.sh b/vendor/github.com/pelletier/go-toml/test.sh
deleted file mode 100644
index ba6adf3fc7c..00000000000
--- a/vendor/github.com/pelletier/go-toml/test.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-# fail out of the script if anything here fails
-set -e
-set -o pipefail
-
-# set the path to the present working directory
-export GOPATH=`pwd`
-
-function git_clone() {
- path=$1
- branch=$2
- version=$3
- if [ ! -d "src/$path" ]; then
- mkdir -p src/$path
- git clone https://$path.git src/$path
- fi
- pushd src/$path
- git checkout "$branch"
- git reset --hard "$version"
- popd
-}
-
-# Remove potential previous runs
-rm -rf src test_program_bin toml-test
-
-go get github.com/pelletier/go-buffruneio
-go get github.com/davecgh/go-spew/spew
-go get gopkg.in/yaml.v2
-go get github.com/BurntSushi/toml
-
-# get code for BurntSushi TOML validation
-# pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize)
-git_clone github.com/BurntSushi/toml master HEAD
-git_clone github.com/BurntSushi/toml-test master HEAD #was: 0.2.0 HEAD
-
-# build the BurntSushi test application
-go build -o toml-test github.com/BurntSushi/toml-test
-
-# vendorize the current lib for testing
-# NOTE: this basically mocks an install without having to go back out to github for code
-mkdir -p src/github.com/pelletier/go-toml/cmd
-mkdir -p src/github.com/pelletier/go-toml/query
-cp *.go *.toml src/github.com/pelletier/go-toml
-cp -R cmd/* src/github.com/pelletier/go-toml/cmd
-cp -R query/* src/github.com/pelletier/go-toml/query
-go build -o test_program_bin src/github.com/pelletier/go-toml/cmd/test_program.go
-
-# Run basic unit tests
-go test github.com/pelletier/go-toml -covermode=count -coverprofile=coverage.out
-go test github.com/pelletier/go-toml/cmd/tomljson
-go test github.com/pelletier/go-toml/query
-
-# run the entire BurntSushi test suite
-if [[ $# -eq 0 ]] ; then
- echo "Running all BurntSushi tests"
- ./toml-test ./test_program_bin | tee test_out
-else
- # run a specific test
- test=$1
- test_path='src/github.com/BurntSushi/toml-test/tests'
- valid_test="$test_path/valid/$test"
- invalid_test="$test_path/invalid/$test"
-
- if [ -e "$valid_test.toml" ]; then
- echo "Valid Test TOML for $test:"
- echo "===="
- cat "$valid_test.toml"
-
- echo "Valid Test JSON for $test:"
- echo "===="
- cat "$valid_test.json"
-
- echo "Go-TOML Output for $test:"
- echo "===="
- cat "$valid_test.toml" | ./test_program_bin
- fi
-
- if [ -e "$invalid_test.toml" ]; then
- echo "Invalid Test TOML for $test:"
- echo "===="
- cat "$invalid_test.toml"
-
- echo "Go-TOML Output for $test:"
- echo "===="
- echo "go-toml Output:"
- cat "$invalid_test.toml" | ./test_program_bin
- fi
-fi
diff --git a/vendor/github.com/pelletier/go-toml/token.go b/vendor/github.com/pelletier/go-toml/token.go
index 1a908134667..36a3fc88f2f 100644
--- a/vendor/github.com/pelletier/go-toml/token.go
+++ b/vendor/github.com/pelletier/go-toml/token.go
@@ -2,7 +2,6 @@ package toml
import (
"fmt"
- "strconv"
"unicode"
)
@@ -35,6 +34,7 @@ const (
tokenDoubleLeftBracket
tokenDoubleRightBracket
tokenDate
+ tokenLocalDate
tokenKeyGroup
tokenKeyGroupArray
tokenComma
@@ -68,7 +68,8 @@ var tokenTypeNames = []string{
")",
"]]",
"[[",
- "Date",
+ "LocalDate",
+ "LocalDate",
"KeyGroup",
"KeyGroupArray",
",",
@@ -95,14 +96,6 @@ func (tt tokenType) String() string {
return "Unknown"
}
-func (t token) Int() int {
- if result, err := strconv.Atoi(t.val); err != nil {
- panic(err)
- } else {
- return result
- }
-}
-
func (t token) String() string {
switch t.typ {
case tokenEOF:
diff --git a/vendor/github.com/pelletier/go-toml/toml.go b/vendor/github.com/pelletier/go-toml/toml.go
index 98c185ad0b8..f4d56870b8d 100644
--- a/vendor/github.com/pelletier/go-toml/toml.go
+++ b/vendor/github.com/pelletier/go-toml/toml.go
@@ -27,9 +27,13 @@ type Tree struct {
}
func newTree() *Tree {
+ return newTreeWithPosition(Position{})
+}
+
+func newTreeWithPosition(pos Position) *Tree {
return &Tree{
values: make(map[string]interface{}),
- position: Position{},
+ position: pos,
}
}
@@ -194,10 +198,10 @@ func (t *Tree) SetWithOptions(key string, opts SetOptions, value interface{}) {
// formatting instructions to the key, that will be reused by Marshal().
func (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interface{}) {
subtree := t
- for _, intermediateKey := range keys[:len(keys)-1] {
+ for i, intermediateKey := range keys[:len(keys)-1] {
nextTree, exists := subtree.values[intermediateKey]
if !exists {
- nextTree = newTree()
+ nextTree = newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})
subtree.values[intermediateKey] = nextTree // add new element here
}
switch node := nextTree.(type) {
@@ -207,7 +211,7 @@ func (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interfac
// go to most recent element
if len(node) == 0 {
// create element if it does not exist
- subtree.values[intermediateKey] = append(node, newTree())
+ subtree.values[intermediateKey] = append(node, newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col}))
}
subtree = node[len(node)-1]
}
@@ -215,19 +219,25 @@ func (t *Tree) SetPathWithOptions(keys []string, opts SetOptions, value interfac
var toInsert interface{}
- switch value.(type) {
+ switch v := value.(type) {
case *Tree:
- tt := value.(*Tree)
- tt.comment = opts.Comment
+ v.comment = opts.Comment
+ v.commented = opts.Commented
toInsert = value
case []*Tree:
+ for i := range v {
+ v[i].commented = opts.Commented
+ }
toInsert = value
case *tomlValue:
- tt := value.(*tomlValue)
- tt.comment = opts.Comment
- toInsert = tt
+ v.comment = opts.Comment
+ toInsert = v
default:
- toInsert = &tomlValue{value: value, comment: opts.Comment, commented: opts.Commented, multiline: opts.Multiline}
+ toInsert = &tomlValue{value: value,
+ comment: opts.Comment,
+ commented: opts.Commented,
+ multiline: opts.Multiline,
+ position: Position{Line: subtree.position.Line + len(subtree.values) + 1, Col: subtree.position.Col}}
}
subtree.values[keys[len(keys)-1]] = toInsert
@@ -256,44 +266,35 @@ func (t *Tree) SetPath(keys []string, value interface{}) {
// SetPathWithComment is the same as SetPath, but allows you to provide comment
// information to the key, that will be reused by Marshal().
func (t *Tree) SetPathWithComment(keys []string, comment string, commented bool, value interface{}) {
- subtree := t
- for _, intermediateKey := range keys[:len(keys)-1] {
- nextTree, exists := subtree.values[intermediateKey]
- if !exists {
- nextTree = newTree()
- subtree.values[intermediateKey] = nextTree // add new element here
- }
- switch node := nextTree.(type) {
- case *Tree:
- subtree = node
- case []*Tree:
- // go to most recent element
- if len(node) == 0 {
- // create element if it does not exist
- subtree.values[intermediateKey] = append(node, newTree())
- }
- subtree = node[len(node)-1]
- }
- }
+ t.SetPathWithOptions(keys, SetOptions{Comment: comment, Commented: commented}, value)
+}
- var toInsert interface{}
+// Delete removes a key from the tree.
+// Key is a dot-separated path (e.g. a.b.c).
+func (t *Tree) Delete(key string) error {
+ keys, err := parseKey(key)
+ if err != nil {
+ return err
+ }
+ return t.DeletePath(keys)
+}
- switch value.(type) {
+// DeletePath removes a key from the tree.
+// Keys is an array of path elements (e.g. {"a","b","c"}).
+func (t *Tree) DeletePath(keys []string) error {
+ keyLen := len(keys)
+ if keyLen == 1 {
+ delete(t.values, keys[0])
+ return nil
+ }
+ tree := t.GetPath(keys[:keyLen-1])
+ item := keys[keyLen-1]
+ switch node := tree.(type) {
case *Tree:
- tt := value.(*Tree)
- tt.comment = comment
- toInsert = value
- case []*Tree:
- toInsert = value
- case *tomlValue:
- tt := value.(*tomlValue)
- tt.comment = comment
- toInsert = tt
- default:
- toInsert = &tomlValue{value: value, comment: comment, commented: commented}
+ delete(node.values, item)
+ return nil
}
-
- subtree.values[keys[len(keys)-1]] = toInsert
+ return errors.New("no such key to delete")
}
// createSubTree takes a tree and a key and create the necessary intermediate
@@ -305,10 +306,10 @@ func (t *Tree) SetPathWithComment(keys []string, comment string, commented bool,
// Returns nil on success, error object on failure
func (t *Tree) createSubTree(keys []string, pos Position) error {
subtree := t
- for _, intermediateKey := range keys {
+ for i, intermediateKey := range keys {
nextTree, exists := subtree.values[intermediateKey]
if !exists {
- tree := newTree()
+ tree := newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col})
tree.position = pos
subtree.values[intermediateKey] = tree
nextTree = tree
@@ -337,10 +338,39 @@ func LoadBytes(b []byte) (tree *Tree, err error) {
err = errors.New(r.(string))
}
}()
+
+ if len(b) >= 4 && (hasUTF32BigEndianBOM4(b) || hasUTF32LittleEndianBOM4(b)) {
+ b = b[4:]
+ } else if len(b) >= 3 && hasUTF8BOM3(b) {
+ b = b[3:]
+ } else if len(b) >= 2 && (hasUTF16BigEndianBOM2(b) || hasUTF16LittleEndianBOM2(b)) {
+ b = b[2:]
+ }
+
tree = parseToml(lexToml(b))
return
}
+func hasUTF16BigEndianBOM2(b []byte) bool {
+ return b[0] == 0xFE && b[1] == 0xFF
+}
+
+func hasUTF16LittleEndianBOM2(b []byte) bool {
+ return b[0] == 0xFF && b[1] == 0xFE
+}
+
+func hasUTF8BOM3(b []byte) bool {
+ return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF
+}
+
+func hasUTF32BigEndianBOM4(b []byte) bool {
+ return b[0] == 0x00 && b[1] == 0x00 && b[2] == 0xFE && b[3] == 0xFF
+}
+
+func hasUTF32LittleEndianBOM4(b []byte) bool {
+ return b[0] == 0xFF && b[1] == 0xFE && b[2] == 0x00 && b[3] == 0x00
+}
+
// LoadReader creates a Tree from any io.Reader.
func LoadReader(reader io.Reader) (tree *Tree, err error) {
inputBytes, err := ioutil.ReadAll(reader)
diff --git a/vendor/github.com/pelletier/go-toml/tomltree_write.go b/vendor/github.com/pelletier/go-toml/tomltree_write.go
index e4049e29f2a..16c198670fc 100644
--- a/vendor/github.com/pelletier/go-toml/tomltree_write.go
+++ b/vendor/github.com/pelletier/go-toml/tomltree_write.go
@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"math"
+ "math/big"
"reflect"
"sort"
"strconv"
@@ -12,12 +13,25 @@ import (
"time"
)
+type valueComplexity int
+
+const (
+ valueSimple valueComplexity = iota + 1
+ valueComplex
+)
+
+type sortNode struct {
+ key string
+ complexity valueComplexity
+}
+
// Encodes a string to a TOML-compliant multi-line string value
// This function is a clone of the existing encodeTomlString function, except that whitespace characters
// are preserved. Quotation marks and backslashes are also not escaped.
-func encodeMultilineTomlString(value string) string {
+func encodeMultilineTomlString(value string, commented string) string {
var b bytes.Buffer
+ b.WriteString(commented)
for _, rr := range value {
switch rr {
case '\b':
@@ -25,7 +39,7 @@ func encodeMultilineTomlString(value string) string {
case '\t':
b.WriteString("\t")
case '\n':
- b.WriteString("\n")
+ b.WriteString("\n" + commented)
case '\f':
b.WriteString(`\f`)
case '\r':
@@ -78,7 +92,7 @@ func encodeTomlString(value string) string {
return b.String()
}
-func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElementPerLine bool) (string, error) {
+func tomlValueStringRepresentation(v interface{}, commented string, indent string, arraysOneElementPerLine bool) (string, error) {
// this interface check is added to dereference the change made in the writeTo function.
// That change was made to allow this function to see formatting options.
tv, ok := v.(*tomlValue)
@@ -94,20 +108,28 @@ func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElemen
case int64:
return strconv.FormatInt(value, 10), nil
case float64:
- // Ensure a round float does contain a decimal point. Otherwise feeding
- // the output back to the parser would convert to an integer.
+ // Default bit length is full 64
+ bits := 64
+ // Float panics if nan is used
+ if !math.IsNaN(value) {
+ // if 32 bit accuracy is enough to exactly show, use 32
+ _, acc := big.NewFloat(value).Float32()
+ if acc == big.Exact {
+ bits = 32
+ }
+ }
if math.Trunc(value) == value {
- return strings.ToLower(strconv.FormatFloat(value, 'f', 1, 32)), nil
+ return strings.ToLower(strconv.FormatFloat(value, 'f', 1, bits)), nil
}
- return strings.ToLower(strconv.FormatFloat(value, 'f', -1, 32)), nil
+ return strings.ToLower(strconv.FormatFloat(value, 'f', -1, bits)), nil
case string:
if tv.multiline {
- return "\"\"\"\n" + encodeMultilineTomlString(value) + "\"\"\"", nil
+ return "\"\"\"\n" + encodeMultilineTomlString(value, commented) + "\"\"\"", nil
}
return "\"" + encodeTomlString(value) + "\"", nil
case []byte:
b, _ := v.([]byte)
- return tomlValueStringRepresentation(string(b), indent, arraysOneElementPerLine)
+ return tomlValueStringRepresentation(string(b), commented, indent, arraysOneElementPerLine)
case bool:
if value {
return "true", nil
@@ -115,6 +137,12 @@ func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElemen
return "false", nil
case time.Time:
return value.Format(time.RFC3339), nil
+ case LocalDate:
+ return value.String(), nil
+ case LocalDateTime:
+ return value.String(), nil
+ case LocalTime:
+ return value.String(), nil
case nil:
return "", nil
}
@@ -125,7 +153,7 @@ func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElemen
var values []string
for i := 0; i < rv.Len(); i++ {
item := rv.Index(i).Interface()
- itemRepr, err := tomlValueStringRepresentation(item, indent, arraysOneElementPerLine)
+ itemRepr, err := tomlValueStringRepresentation(item, commented, indent, arraysOneElementPerLine)
if err != nil {
return "", err
}
@@ -139,12 +167,12 @@ func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElemen
for _, value := range values {
stringBuffer.WriteString(valueIndent)
- stringBuffer.WriteString(value)
+ stringBuffer.WriteString(commented + value)
stringBuffer.WriteString(`,`)
stringBuffer.WriteString("\n")
}
- stringBuffer.WriteString(indent + "]")
+ stringBuffer.WriteString(indent + commented + "]")
return stringBuffer.String(), nil
}
@@ -153,117 +181,238 @@ func tomlValueStringRepresentation(v interface{}, indent string, arraysOneElemen
return "", fmt.Errorf("unsupported value type %T: %v", v, v)
}
-func (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) {
- simpleValuesKeys := make([]string, 0)
- complexValuesKeys := make([]string, 0)
+func getTreeArrayLine(trees []*Tree) (line int) {
+ // get lowest line number that is not 0
+ for _, tv := range trees {
+ if tv.position.Line < line || line == 0 {
+ line = tv.position.Line
+ }
+ }
+ return
+}
+
+func sortByLines(t *Tree) (vals []sortNode) {
+ var (
+ line int
+ lines []int
+ tv *Tree
+ tom *tomlValue
+ node sortNode
+ )
+ vals = make([]sortNode, 0)
+ m := make(map[int]sortNode)
for k := range t.values {
v := t.values[k]
switch v.(type) {
- case *Tree, []*Tree:
- complexValuesKeys = append(complexValuesKeys, k)
+ case *Tree:
+ tv = v.(*Tree)
+ line = tv.position.Line
+ node = sortNode{key: k, complexity: valueComplex}
+ case []*Tree:
+ line = getTreeArrayLine(v.([]*Tree))
+ node = sortNode{key: k, complexity: valueComplex}
default:
- simpleValuesKeys = append(simpleValuesKeys, k)
+ tom = v.(*tomlValue)
+ line = tom.position.Line
+ node = sortNode{key: k, complexity: valueSimple}
}
+ lines = append(lines, line)
+ vals = append(vals, node)
+ m[line] = node
}
+ sort.Ints(lines)
- sort.Strings(simpleValuesKeys)
- sort.Strings(complexValuesKeys)
+ for i, line := range lines {
+ vals[i] = m[line]
+ }
- for _, k := range simpleValuesKeys {
- v, ok := t.values[k].(*tomlValue)
- if !ok {
- return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k])
- }
+ return vals
+}
- repr, err := tomlValueStringRepresentation(v, indent, arraysOneElementPerLine)
- if err != nil {
- return bytesCount, err
- }
+func sortAlphabetical(t *Tree) (vals []sortNode) {
+ var (
+ node sortNode
+ simpVals []string
+ compVals []string
+ )
+ vals = make([]sortNode, 0)
+ m := make(map[string]sortNode)
- if v.comment != "" {
- comment := strings.Replace(v.comment, "\n", "\n"+indent+"#", -1)
- start := "# "
- if strings.HasPrefix(comment, "#") {
- start = ""
- }
- writtenBytesCountComment, errc := writeStrings(w, "\n", indent, start, comment, "\n")
- bytesCount += int64(writtenBytesCountComment)
- if errc != nil {
- return bytesCount, errc
- }
+ for k := range t.values {
+ v := t.values[k]
+ switch v.(type) {
+ case *Tree, []*Tree:
+ node = sortNode{key: k, complexity: valueComplex}
+ compVals = append(compVals, node.key)
+ default:
+ node = sortNode{key: k, complexity: valueSimple}
+ simpVals = append(simpVals, node.key)
}
+ vals = append(vals, node)
+ m[node.key] = node
+ }
- var commented string
- if v.commented {
- commented = "# "
- }
- writtenBytesCount, err := writeStrings(w, indent, commented, k, " = ", repr, "\n")
- bytesCount += int64(writtenBytesCount)
- if err != nil {
- return bytesCount, err
- }
+ // Simples first to match previous implementation
+ sort.Strings(simpVals)
+ i := 0
+ for _, key := range simpVals {
+ vals[i] = m[key]
+ i++
}
- for _, k := range complexValuesKeys {
- v := t.values[k]
+ sort.Strings(compVals)
+ for _, key := range compVals {
+ vals[i] = m[key]
+ i++
+ }
- combinedKey := k
- if keyspace != "" {
- combinedKey = keyspace + "." + combinedKey
- }
- var commented string
- if t.commented {
- commented = "# "
- }
+ return vals
+}
- switch node := v.(type) {
- // node has to be of those two types given how keys are sorted above
- case *Tree:
- tv, ok := t.values[k].(*Tree)
+func (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) {
+ return t.writeToOrdered(w, indent, keyspace, bytesCount, arraysOneElementPerLine, OrderAlphabetical, false)
+}
+
+func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool, ord marshalOrder, parentCommented bool) (int64, error) {
+ var orderedVals []sortNode
+
+ switch ord {
+ case OrderPreserve:
+ orderedVals = sortByLines(t)
+ default:
+ orderedVals = sortAlphabetical(t)
+ }
+
+ for _, node := range orderedVals {
+ switch node.complexity {
+ case valueComplex:
+ k := node.key
+ v := t.values[k]
+
+ combinedKey := k
+ if keyspace != "" {
+ combinedKey = keyspace + "." + combinedKey
+ }
+
+ switch node := v.(type) {
+ // node has to be of those two types given how keys are sorted above
+ case *Tree:
+ tv, ok := t.values[k].(*Tree)
+ if !ok {
+ return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k])
+ }
+ if tv.comment != "" {
+ comment := strings.Replace(tv.comment, "\n", "\n"+indent+"#", -1)
+ start := "# "
+ if strings.HasPrefix(comment, "#") {
+ start = ""
+ }
+ writtenBytesCountComment, errc := writeStrings(w, "\n", indent, start, comment)
+ bytesCount += int64(writtenBytesCountComment)
+ if errc != nil {
+ return bytesCount, errc
+ }
+ }
+
+ var commented string
+ if parentCommented || t.commented || tv.commented {
+ commented = "# "
+ }
+ writtenBytesCount, err := writeStrings(w, "\n", indent, commented, "[", combinedKey, "]\n")
+ bytesCount += int64(writtenBytesCount)
+ if err != nil {
+ return bytesCount, err
+ }
+ bytesCount, err = node.writeToOrdered(w, indent+" ", combinedKey, bytesCount, arraysOneElementPerLine, ord, parentCommented || t.commented || tv.commented)
+ if err != nil {
+ return bytesCount, err
+ }
+ case []*Tree:
+ for _, subTree := range node {
+ var commented string
+ if parentCommented || t.commented || subTree.commented {
+ commented = "# "
+ }
+ writtenBytesCount, err := writeStrings(w, "\n", indent, commented, "[[", combinedKey, "]]\n")
+ bytesCount += int64(writtenBytesCount)
+ if err != nil {
+ return bytesCount, err
+ }
+
+ bytesCount, err = subTree.writeToOrdered(w, indent+" ", combinedKey, bytesCount, arraysOneElementPerLine, ord, parentCommented || t.commented || subTree.commented)
+ if err != nil {
+ return bytesCount, err
+ }
+ }
+ }
+ default: // Simple
+ k := node.key
+ v, ok := t.values[k].(*tomlValue)
if !ok {
return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k])
}
- if tv.comment != "" {
- comment := strings.Replace(tv.comment, "\n", "\n"+indent+"#", -1)
+
+ var commented string
+ if parentCommented || t.commented || v.commented {
+ commented = "# "
+ }
+ repr, err := tomlValueStringRepresentation(v, commented, indent, arraysOneElementPerLine)
+ if err != nil {
+ return bytesCount, err
+ }
+
+ if v.comment != "" {
+ comment := strings.Replace(v.comment, "\n", "\n"+indent+"#", -1)
start := "# "
if strings.HasPrefix(comment, "#") {
start = ""
}
- writtenBytesCountComment, errc := writeStrings(w, "\n", indent, start, comment)
+ writtenBytesCountComment, errc := writeStrings(w, "\n", indent, start, comment, "\n")
bytesCount += int64(writtenBytesCountComment)
if errc != nil {
return bytesCount, errc
}
}
- writtenBytesCount, err := writeStrings(w, "\n", indent, commented, "[", combinedKey, "]\n")
+
+ quotedKey := quoteKeyIfNeeded(k)
+ writtenBytesCount, err := writeStrings(w, indent, commented, quotedKey, " = ", repr, "\n")
bytesCount += int64(writtenBytesCount)
if err != nil {
return bytesCount, err
}
- bytesCount, err = node.writeTo(w, indent+" ", combinedKey, bytesCount, arraysOneElementPerLine)
- if err != nil {
- return bytesCount, err
- }
- case []*Tree:
- for _, subTree := range node {
- writtenBytesCount, err := writeStrings(w, "\n", indent, commented, "[[", combinedKey, "]]\n")
- bytesCount += int64(writtenBytesCount)
- if err != nil {
- return bytesCount, err
- }
-
- bytesCount, err = subTree.writeTo(w, indent+" ", combinedKey, bytesCount, arraysOneElementPerLine)
- if err != nil {
- return bytesCount, err
- }
- }
}
}
return bytesCount, nil
}
+// quote a key if it does not fit the bare key format (A-Za-z0-9_-)
+// quoted keys use the same rules as strings
+func quoteKeyIfNeeded(k string) string {
+ // when encoding a map with the 'quoteMapKeys' option enabled, the tree will contain
+ // keys that have already been quoted.
+ // not an ideal situation, but good enough of a stop gap.
+ if len(k) >= 2 && k[0] == '"' && k[len(k)-1] == '"' {
+ return k
+ }
+ isBare := true
+ for _, r := range k {
+ if !isValidBareChar(r) {
+ isBare = false
+ break
+ }
+ }
+ if isBare {
+ return k
+ }
+ return quoteKey(k)
+}
+
+func quoteKey(k string) string {
+ return "\"" + encodeTomlString(k) + "\""
+}
+
func writeStrings(w io.Writer, s ...string) (int, error) {
var n int
for i := range s {
@@ -286,12 +435,11 @@ func (t *Tree) WriteTo(w io.Writer) (int64, error) {
// Output spans multiple lines, and is suitable for ingest by a TOML parser.
// If the conversion cannot be performed, ToString returns a non-nil error.
func (t *Tree) ToTomlString() (string, error) {
- var buf bytes.Buffer
- _, err := t.WriteTo(&buf)
+ b, err := t.Marshal()
if err != nil {
return "", err
}
- return buf.String(), nil
+ return string(b), nil
}
// String generates a human-readable representation of the current tree.
diff --git a/vendor/github.com/stretchr/objx/.codeclimate.yml b/vendor/github.com/stretchr/objx/.codeclimate.yml
index 010d4ccd582..559fa399c13 100644
--- a/vendor/github.com/stretchr/objx/.codeclimate.yml
+++ b/vendor/github.com/stretchr/objx/.codeclimate.yml
@@ -10,4 +10,12 @@ exclude_patterns:
- ".github/"
- "vendor/"
- "codegen/"
+- "*.yml"
+- ".*.yml"
+- "*.md"
+- "Gopkg.*"
- "doc.go"
+- "type_specific_codegen_test.go"
+- "type_specific_codegen.go"
+- ".gitignore"
+- "LICENSE"
diff --git a/vendor/github.com/stretchr/objx/.travis.yml b/vendor/github.com/stretchr/objx/.travis.yml
index a63efa59d1d..cde6eb2affd 100644
--- a/vendor/github.com/stretchr/objx/.travis.yml
+++ b/vendor/github.com/stretchr/objx/.travis.yml
@@ -1,8 +1,14 @@
language: go
go:
- - 1.8
- - 1.9
- - tip
+ - "1.10.x"
+ - "1.11.x"
+ - "1.12.x"
+ - master
+
+matrix:
+ allow_failures:
+ - go: master
+fast_finish: true
env:
global:
@@ -14,12 +20,11 @@ before_script:
- ./cc-test-reporter before-build
install:
-- go get github.com/go-task/task/cmd/task
+ - curl -sL https://taskfile.dev/install.sh | sh
script:
-- task dl-deps
-- task lint
-- task test-coverage
+ - diff -u <(echo -n) <(./bin/task lint)
+ - ./bin/task test-coverage
after_script:
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
diff --git a/vendor/github.com/stretchr/objx/Gopkg.lock b/vendor/github.com/stretchr/objx/Gopkg.lock
deleted file mode 100644
index eebe342a960..00000000000
--- a/vendor/github.com/stretchr/objx/Gopkg.lock
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
-
-
-[[projects]]
- name = "github.com/davecgh/go-spew"
- packages = ["spew"]
- revision = "346938d642f2ec3594ed81d874461961cd0faa76"
- version = "v1.1.0"
-
-[[projects]]
- name = "github.com/pmezard/go-difflib"
- packages = ["difflib"]
- revision = "792786c7400a136282c1664665ae0a8db921c6c2"
- version = "v1.0.0"
-
-[[projects]]
- name = "github.com/stretchr/testify"
- packages = [
- "assert",
- "require"
- ]
- revision = "b91bfb9ebec76498946beb6af7c0230c7cc7ba6c"
- version = "v1.2.0"
-
-[solve-meta]
- analyzer-name = "dep"
- analyzer-version = 1
- inputs-digest = "2d160a7dea4ffd13c6c31dab40373822f9d78c73beba016d662bef8f7a998876"
- solver-name = "gps-cdcl"
- solver-version = 1
diff --git a/vendor/github.com/stretchr/objx/Gopkg.toml b/vendor/github.com/stretchr/objx/Gopkg.toml
deleted file mode 100644
index d70f1570b95..00000000000
--- a/vendor/github.com/stretchr/objx/Gopkg.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-[prune]
- unused-packages = true
- non-go = true
- go-tests = true
-
-[[constraint]]
- name = "github.com/stretchr/testify"
- version = "~1.2.0"
diff --git a/vendor/github.com/stretchr/objx/README.md b/vendor/github.com/stretchr/objx/README.md
index be5750c94c8..246660b21a9 100644
--- a/vendor/github.com/stretchr/objx/README.md
+++ b/vendor/github.com/stretchr/objx/README.md
@@ -74,7 +74,7 @@ To update Objx to the latest version, run:
go get -u github.com/stretchr/objx
### Supported go versions
-We support the lastest two major Go versions, which are 1.8 and 1.9 at the moment.
+We support the lastest three major Go versions, which are 1.10, 1.11 and 1.12 at the moment.
## Contributing
Please feel free to submit issues, fork the repository and send pull requests!
diff --git a/vendor/github.com/stretchr/objx/Taskfile.yml b/vendor/github.com/stretchr/objx/Taskfile.yml
index f8035641f2d..a749ac5492e 100644
--- a/vendor/github.com/stretchr/objx/Taskfile.yml
+++ b/vendor/github.com/stretchr/objx/Taskfile.yml
@@ -1,32 +1,30 @@
-default:
- deps: [test]
+version: '2'
-dl-deps:
- desc: Downloads cli dependencies
- cmds:
- - go get -u github.com/golang/lint/golint
- - go get -u github.com/golang/dep/cmd/dep
+env:
+ GOFLAGS: -mod=vendor
-update-deps:
- desc: Updates dependencies
- cmds:
- - dep ensure
- - dep ensure -update
+tasks:
+ default:
+ deps: [test]
-lint:
- desc: Runs golint
- cmds:
- - go fmt $(go list ./... | grep -v /vendor/)
- - go vet $(go list ./... | grep -v /vendor/)
- - golint $(ls *.go | grep -v "doc.go")
- silent: true
+ lint:
+ desc: Checks code style
+ cmds:
+ - gofmt -d -s *.go
+ - go vet ./...
+ silent: true
-test:
- desc: Runs go tests
- cmds:
- - go test -race .
+ lint-fix:
+ desc: Fixes code style
+ cmds:
+ - gofmt -w -s *.go
-test-coverage:
- desc: Runs go tests and calucates test coverage
- cmds:
- - go test -coverprofile=c.out .
+ test:
+ desc: Runs go tests
+ cmds:
+ - go test -race ./...
+
+ test-coverage:
+ desc: Runs go tests and calucates test coverage
+ cmds:
+ - go test -race -coverprofile=c.out ./...
diff --git a/vendor/github.com/stretchr/objx/accessors.go b/vendor/github.com/stretchr/objx/accessors.go
index 204356a2285..67631628115 100644
--- a/vendor/github.com/stretchr/objx/accessors.go
+++ b/vendor/github.com/stretchr/objx/accessors.go
@@ -6,9 +6,17 @@ import (
"strings"
)
-// arrayAccesRegexString is the regex used to extract the array number
-// from the access path
-const arrayAccesRegexString = `^(.+)\[([0-9]+)\]$`
+const (
+ // PathSeparator is the character used to separate the elements
+ // of the keypath.
+ //
+ // For example, `location.address.city`
+ PathSeparator string = "."
+
+ // arrayAccesRegexString is the regex used to extract the array number
+ // from the access path
+ arrayAccesRegexString = `^(.+)\[([0-9]+)\]$`
+)
// arrayAccesRegex is the compiled arrayAccesRegexString
var arrayAccesRegex = regexp.MustCompile(arrayAccesRegexString)
@@ -46,103 +54,66 @@ func (m Map) Set(selector string, value interface{}) Map {
return m
}
+// getIndex returns the index, which is hold in s by two braches.
+// It also returns s withour the index part, e.g. name[1] will return (1, name).
+// If no index is found, -1 is returned
+func getIndex(s string) (int, string) {
+ arrayMatches := arrayAccesRegex.FindStringSubmatch(s)
+ if len(arrayMatches) > 0 {
+ // Get the key into the map
+ selector := arrayMatches[1]
+ // Get the index into the array at the key
+ // We know this cannt fail because arrayMatches[2] is an int for sure
+ index, _ := strconv.Atoi(arrayMatches[2])
+ return index, selector
+ }
+ return -1, s
+}
+
// access accesses the object using the selector and performs the
// appropriate action.
-func access(current, selector, value interface{}, isSet bool) interface{} {
- switch selector.(type) {
- case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:
- if array, ok := current.([]interface{}); ok {
- index := intFromInterface(selector)
- if index >= len(array) {
- return nil
- }
- return array[index]
- }
- return nil
-
- case string:
- selStr := selector.(string)
- selSegs := strings.SplitN(selStr, PathSeparator, 2)
- thisSel := selSegs[0]
- index := -1
- var err error
-
- if strings.Contains(thisSel, "[") {
- arrayMatches := arrayAccesRegex.FindStringSubmatch(thisSel)
- if len(arrayMatches) > 0 {
- // Get the key into the map
- thisSel = arrayMatches[1]
+func access(current interface{}, selector string, value interface{}, isSet bool) interface{} {
+ selSegs := strings.SplitN(selector, PathSeparator, 2)
+ thisSel := selSegs[0]
+ index := -1
- // Get the index into the array at the key
- index, err = strconv.Atoi(arrayMatches[2])
+ if strings.Contains(thisSel, "[") {
+ index, thisSel = getIndex(thisSel)
+ }
- if err != nil {
- // This should never happen. If it does, something has gone
- // seriously wrong. Panic.
- panic("objx: Array index is not an integer. Must use array[int].")
- }
- }
- }
- if curMap, ok := current.(Map); ok {
- current = map[string]interface{}(curMap)
+ if curMap, ok := current.(Map); ok {
+ current = map[string]interface{}(curMap)
+ }
+ // get the object in question
+ switch current.(type) {
+ case map[string]interface{}:
+ curMSI := current.(map[string]interface{})
+ if len(selSegs) <= 1 && isSet {
+ curMSI[thisSel] = value
+ return nil
}
- // get the object in question
- switch current.(type) {
- case map[string]interface{}:
- curMSI := current.(map[string]interface{})
- if len(selSegs) <= 1 && isSet {
- curMSI[thisSel] = value
- return nil
- }
- current = curMSI[thisSel]
- default:
- current = nil
+
+ _, ok := curMSI[thisSel].(map[string]interface{})
+ if (curMSI[thisSel] == nil || !ok) && index == -1 && isSet {
+ curMSI[thisSel] = map[string]interface{}{}
}
- // do we need to access the item of an array?
- if index > -1 {
- if array, ok := current.([]interface{}); ok {
- if index < len(array) {
- current = array[index]
- } else {
- current = nil
- }
+
+ current = curMSI[thisSel]
+ default:
+ current = nil
+ }
+ // do we need to access the item of an array?
+ if index > -1 {
+ if array, ok := current.([]interface{}); ok {
+ if index < len(array) {
+ current = array[index]
+ } else {
+ current = nil
}
}
- if len(selSegs) > 1 {
- current = access(current, selSegs[1], value, isSet)
- }
}
- return current
-}
-
-// intFromInterface converts an interface object to the largest
-// representation of an unsigned integer using a type switch and
-// assertions
-func intFromInterface(selector interface{}) int {
- var value int
- switch selector.(type) {
- case int:
- value = selector.(int)
- case int8:
- value = int(selector.(int8))
- case int16:
- value = int(selector.(int16))
- case int32:
- value = int(selector.(int32))
- case int64:
- value = int(selector.(int64))
- case uint:
- value = int(selector.(uint))
- case uint8:
- value = int(selector.(uint8))
- case uint16:
- value = int(selector.(uint16))
- case uint32:
- value = int(selector.(uint32))
- case uint64:
- value = int(selector.(uint64))
- default:
- return 0
+ if len(selSegs) > 1 {
+ current = access(current, selSegs[1], value, isSet)
}
- return value
+ return current
}
diff --git a/vendor/github.com/stretchr/objx/constants.go b/vendor/github.com/stretchr/objx/constants.go
deleted file mode 100644
index f9eb42a25e0..00000000000
--- a/vendor/github.com/stretchr/objx/constants.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package objx
-
-const (
- // PathSeparator is the character used to separate the elements
- // of the keypath.
- //
- // For example, `location.address.city`
- PathSeparator string = "."
-
- // SignatureSeparator is the character that is used to
- // separate the Base64 string from the security signature.
- SignatureSeparator = "_"
-)
diff --git a/vendor/github.com/stretchr/objx/conversions.go b/vendor/github.com/stretchr/objx/conversions.go
index 5e020f310ad..080aa46e472 100644
--- a/vendor/github.com/stretchr/objx/conversions.go
+++ b/vendor/github.com/stretchr/objx/conversions.go
@@ -7,11 +7,51 @@ import (
"errors"
"fmt"
"net/url"
+ "strconv"
)
+// SignatureSeparator is the character that is used to
+// separate the Base64 string from the security signature.
+const SignatureSeparator = "_"
+
+// URLValuesSliceKeySuffix is the character that is used to
+// specify a suffic for slices parsed by URLValues.
+// If the suffix is set to "[i]", then the index of the slice
+// is used in place of i
+// Ex: Suffix "[]" would have the form a[]=b&a[]=c
+// OR Suffix "[i]" would have the form a[0]=b&a[1]=c
+// OR Suffix "" would have the form a=b&a=c
+var urlValuesSliceKeySuffix = "[]"
+
+const (
+ URLValuesSliceKeySuffixEmpty = ""
+ URLValuesSliceKeySuffixArray = "[]"
+ URLValuesSliceKeySuffixIndex = "[i]"
+)
+
+// SetURLValuesSliceKeySuffix sets the character that is used to
+// specify a suffic for slices parsed by URLValues.
+// If the suffix is set to "[i]", then the index of the slice
+// is used in place of i
+// Ex: Suffix "[]" would have the form a[]=b&a[]=c
+// OR Suffix "[i]" would have the form a[0]=b&a[1]=c
+// OR Suffix "" would have the form a=b&a=c
+func SetURLValuesSliceKeySuffix(s string) error {
+ if s == URLValuesSliceKeySuffixEmpty || s == URLValuesSliceKeySuffixArray || s == URLValuesSliceKeySuffixIndex {
+ urlValuesSliceKeySuffix = s
+ return nil
+ }
+
+ return errors.New("objx: Invalid URLValuesSliceKeySuffix provided.")
+}
+
// JSON converts the contained object to a JSON string
// representation
func (m Map) JSON() (string, error) {
+ for k, v := range m {
+ m[k] = cleanUp(v)
+ }
+
result, err := json.Marshal(m)
if err != nil {
err = errors.New("objx: JSON encode failed with: " + err.Error())
@@ -19,6 +59,63 @@ func (m Map) JSON() (string, error) {
return string(result), err
}
+func cleanUpInterfaceArray(in []interface{}) []interface{} {
+ result := make([]interface{}, len(in))
+ for i, v := range in {
+ result[i] = cleanUp(v)
+ }
+ return result
+}
+
+func cleanUpInterfaceMap(in map[interface{}]interface{}) Map {
+ result := Map{}
+ for k, v := range in {
+ result[fmt.Sprintf("%v", k)] = cleanUp(v)
+ }
+ return result
+}
+
+func cleanUpStringMap(in map[string]interface{}) Map {
+ result := Map{}
+ for k, v := range in {
+ result[k] = cleanUp(v)
+ }
+ return result
+}
+
+func cleanUpMSIArray(in []map[string]interface{}) []Map {
+ result := make([]Map, len(in))
+ for i, v := range in {
+ result[i] = cleanUpStringMap(v)
+ }
+ return result
+}
+
+func cleanUpMapArray(in []Map) []Map {
+ result := make([]Map, len(in))
+ for i, v := range in {
+ result[i] = cleanUpStringMap(v)
+ }
+ return result
+}
+
+func cleanUp(v interface{}) interface{} {
+ switch v := v.(type) {
+ case []interface{}:
+ return cleanUpInterfaceArray(v)
+ case []map[string]interface{}:
+ return cleanUpMSIArray(v)
+ case map[interface{}]interface{}:
+ return cleanUpInterfaceMap(v)
+ case Map:
+ return cleanUpStringMap(v)
+ case []Map:
+ return cleanUpMapArray(v)
+ default:
+ return v
+ }
+}
+
// MustJSON converts the contained object to a JSON string
// representation and panics if there is an error
func (m Map) MustJSON() string {
@@ -40,10 +137,7 @@ func (m Map) Base64() (string, error) {
}
encoder := base64.NewEncoder(base64.StdEncoding, &buf)
- _, err = encoder.Write([]byte(jsonData))
- if err != nil {
- return "", err
- }
+ _, _ = encoder.Write([]byte(jsonData))
_ = encoder.Close()
return buf.String(), nil
@@ -93,13 +187,91 @@ func (m Map) MustSignedBase64(key string) string {
// function requires that the wrapped object be a map[string]interface{}
func (m Map) URLValues() url.Values {
vals := make(url.Values)
- for k, v := range m {
- //TODO: can this be done without sprintf?
- vals.Set(k, fmt.Sprintf("%v", v))
- }
+
+ m.parseURLValues(m, vals, "")
+
return vals
}
+func (m Map) parseURLValues(queryMap Map, vals url.Values, key string) {
+ useSliceIndex := false
+ if urlValuesSliceKeySuffix == "[i]" {
+ useSliceIndex = true
+ }
+
+ for k, v := range queryMap {
+ val := &Value{data: v}
+ switch {
+ case val.IsObjxMap():
+ if key == "" {
+ m.parseURLValues(val.ObjxMap(), vals, k)
+ } else {
+ m.parseURLValues(val.ObjxMap(), vals, key+"["+k+"]")
+ }
+ case val.IsObjxMapSlice():
+ sliceKey := k
+ if key != "" {
+ sliceKey = key + "[" + k + "]"
+ }
+
+ if useSliceIndex {
+ for i, sv := range val.MustObjxMapSlice() {
+ sk := sliceKey + "[" + strconv.FormatInt(int64(i), 10) + "]"
+ m.parseURLValues(sv, vals, sk)
+ }
+ } else {
+ sliceKey = sliceKey + urlValuesSliceKeySuffix
+ for _, sv := range val.MustObjxMapSlice() {
+ m.parseURLValues(sv, vals, sliceKey)
+ }
+ }
+ case val.IsMSISlice():
+ sliceKey := k
+ if key != "" {
+ sliceKey = key + "[" + k + "]"
+ }
+
+ if useSliceIndex {
+ for i, sv := range val.MustMSISlice() {
+ sk := sliceKey + "[" + strconv.FormatInt(int64(i), 10) + "]"
+ m.parseURLValues(New(sv), vals, sk)
+ }
+ } else {
+ sliceKey = sliceKey + urlValuesSliceKeySuffix
+ for _, sv := range val.MustMSISlice() {
+ m.parseURLValues(New(sv), vals, sliceKey)
+ }
+ }
+ case val.IsStrSlice(), val.IsBoolSlice(),
+ val.IsFloat32Slice(), val.IsFloat64Slice(),
+ val.IsIntSlice(), val.IsInt8Slice(), val.IsInt16Slice(), val.IsInt32Slice(), val.IsInt64Slice(),
+ val.IsUintSlice(), val.IsUint8Slice(), val.IsUint16Slice(), val.IsUint32Slice(), val.IsUint64Slice():
+
+ sliceKey := k
+ if key != "" {
+ sliceKey = key + "[" + k + "]"
+ }
+
+ if useSliceIndex {
+ for i, sv := range val.StringSlice() {
+ sk := sliceKey + "[" + strconv.FormatInt(int64(i), 10) + "]"
+ vals.Set(sk, sv)
+ }
+ } else {
+ sliceKey = sliceKey + urlValuesSliceKeySuffix
+ vals[sliceKey] = val.StringSlice()
+ }
+
+ default:
+ if key == "" {
+ vals.Set(k, val.String())
+ } else {
+ vals.Set(key+"["+k+"]", val.String())
+ }
+ }
+ }
+}
+
// URLQuery gets an encoded URL query representing the given
// Obj. This function requires that the wrapped object be a
// map[string]interface{}
diff --git a/vendor/github.com/stretchr/objx/map.go b/vendor/github.com/stretchr/objx/map.go
index 406bc892635..95149c06a6d 100644
--- a/vendor/github.com/stretchr/objx/map.go
+++ b/vendor/github.com/stretchr/objx/map.go
@@ -97,12 +97,50 @@ func MustFromJSON(jsonString string) Map {
//
// Returns an error if the JSON is invalid.
func FromJSON(jsonString string) (Map, error) {
- var data interface{}
- err := json.Unmarshal([]byte(jsonString), &data)
+ var m Map
+ err := json.Unmarshal([]byte(jsonString), &m)
if err != nil {
return Nil, err
}
- return New(data), nil
+ m.tryConvertFloat64()
+ return m, nil
+}
+
+func (m Map) tryConvertFloat64() {
+ for k, v := range m {
+ switch v.(type) {
+ case float64:
+ f := v.(float64)
+ if float64(int(f)) == f {
+ m[k] = int(f)
+ }
+ case map[string]interface{}:
+ t := New(v)
+ t.tryConvertFloat64()
+ m[k] = t
+ case []interface{}:
+ m[k] = tryConvertFloat64InSlice(v.([]interface{}))
+ }
+ }
+}
+
+func tryConvertFloat64InSlice(s []interface{}) []interface{} {
+ for k, v := range s {
+ switch v.(type) {
+ case float64:
+ f := v.(float64)
+ if float64(int(f)) == f {
+ s[k] = int(f)
+ }
+ case map[string]interface{}:
+ t := New(v)
+ t.tryConvertFloat64()
+ s[k] = t
+ case []interface{}:
+ s[k] = tryConvertFloat64InSlice(v.([]interface{}))
+ }
+ }
+ return s
}
// FromBase64 creates a new Obj containing the data specified
diff --git a/vendor/github.com/stretchr/objx/type_specific.go b/vendor/github.com/stretchr/objx/type_specific.go
new file mode 100644
index 00000000000..80f88d9fa29
--- /dev/null
+++ b/vendor/github.com/stretchr/objx/type_specific.go
@@ -0,0 +1,346 @@
+package objx
+
+/*
+ MSI (map[string]interface{} and []map[string]interface{})
+*/
+
+// MSI gets the value as a map[string]interface{}, returns the optionalDefault
+// value or a system default object if the value is the wrong type.
+func (v *Value) MSI(optionalDefault ...map[string]interface{}) map[string]interface{} {
+ if s, ok := v.data.(map[string]interface{}); ok {
+ return s
+ }
+ if s, ok := v.data.(Map); ok {
+ return map[string]interface{}(s)
+ }
+ if len(optionalDefault) == 1 {
+ return optionalDefault[0]
+ }
+ return nil
+}
+
+// MustMSI gets the value as a map[string]interface{}.
+//
+// Panics if the object is not a map[string]interface{}.
+func (v *Value) MustMSI() map[string]interface{} {
+ if s, ok := v.data.(Map); ok {
+ return map[string]interface{}(s)
+ }
+ return v.data.(map[string]interface{})
+}
+
+// MSISlice gets the value as a []map[string]interface{}, returns the optionalDefault
+// value or nil if the value is not a []map[string]interface{}.
+func (v *Value) MSISlice(optionalDefault ...[]map[string]interface{}) []map[string]interface{} {
+ if s, ok := v.data.([]map[string]interface{}); ok {
+ return s
+ }
+
+ s := v.ObjxMapSlice()
+ if s == nil {
+ if len(optionalDefault) == 1 {
+ return optionalDefault[0]
+ }
+ return nil
+ }
+
+ result := make([]map[string]interface{}, len(s))
+ for i := range s {
+ result[i] = s[i].Value().MSI()
+ }
+ return result
+}
+
+// MustMSISlice gets the value as a []map[string]interface{}.
+//
+// Panics if the object is not a []map[string]interface{}.
+func (v *Value) MustMSISlice() []map[string]interface{} {
+ if s := v.MSISlice(); s != nil {
+ return s
+ }
+
+ return v.data.([]map[string]interface{})
+}
+
+// IsMSI gets whether the object contained is a map[string]interface{} or not.
+func (v *Value) IsMSI() bool {
+ _, ok := v.data.(map[string]interface{})
+ if !ok {
+ _, ok = v.data.(Map)
+ }
+ return ok
+}
+
+// IsMSISlice gets whether the object contained is a []map[string]interface{} or not.
+func (v *Value) IsMSISlice() bool {
+ _, ok := v.data.([]map[string]interface{})
+ if !ok {
+ _, ok = v.data.([]Map)
+ if !ok {
+ s, ok := v.data.([]interface{})
+ if ok {
+ for i := range s {
+ switch s[i].(type) {
+ case Map:
+ case map[string]interface{}:
+ default:
+ return false
+ }
+ }
+ return true
+ }
+ }
+ }
+ return ok
+}
+
+// EachMSI calls the specified callback for each object
+// in the []map[string]interface{}.
+//
+// Panics if the object is the wrong type.
+func (v *Value) EachMSI(callback func(int, map[string]interface{}) bool) *Value {
+ for index, val := range v.MustMSISlice() {
+ carryon := callback(index, val)
+ if !carryon {
+ break
+ }
+ }
+ return v
+}
+
+// WhereMSI uses the specified decider function to select items
+// from the []map[string]interface{}. The object contained in the result will contain
+// only the selected items.
+func (v *Value) WhereMSI(decider func(int, map[string]interface{}) bool) *Value {
+ var selected []map[string]interface{}
+ v.EachMSI(func(index int, val map[string]interface{}) bool {
+ shouldSelect := decider(index, val)
+ if !shouldSelect {
+ selected = append(selected, val)
+ }
+ return true
+ })
+ return &Value{data: selected}
+}
+
+// GroupMSI uses the specified grouper function to group the items
+// keyed by the return of the grouper. The object contained in the
+// result will contain a map[string][]map[string]interface{}.
+func (v *Value) GroupMSI(grouper func(int, map[string]interface{}) string) *Value {
+ groups := make(map[string][]map[string]interface{})
+ v.EachMSI(func(index int, val map[string]interface{}) bool {
+ group := grouper(index, val)
+ if _, ok := groups[group]; !ok {
+ groups[group] = make([]map[string]interface{}, 0)
+ }
+ groups[group] = append(groups[group], val)
+ return true
+ })
+ return &Value{data: groups}
+}
+
+// ReplaceMSI uses the specified function to replace each map[string]interface{}s
+// by iterating each item. The data in the returned result will be a
+// []map[string]interface{} containing the replaced items.
+func (v *Value) ReplaceMSI(replacer func(int, map[string]interface{}) map[string]interface{}) *Value {
+ arr := v.MustMSISlice()
+ replaced := make([]map[string]interface{}, len(arr))
+ v.EachMSI(func(index int, val map[string]interface{}) bool {
+ replaced[index] = replacer(index, val)
+ return true
+ })
+ return &Value{data: replaced}
+}
+
+// CollectMSI uses the specified collector function to collect a value
+// for each of the map[string]interface{}s in the slice. The data returned will be a
+// []interface{}.
+func (v *Value) CollectMSI(collector func(int, map[string]interface{}) interface{}) *Value {
+ arr := v.MustMSISlice()
+ collected := make([]interface{}, len(arr))
+ v.EachMSI(func(index int, val map[string]interface{}) bool {
+ collected[index] = collector(index, val)
+ return true
+ })
+ return &Value{data: collected}
+}
+
+/*
+ ObjxMap ((Map) and [](Map))
+*/
+
+// ObjxMap gets the value as a (Map), returns the optionalDefault
+// value or a system default object if the value is the wrong type.
+func (v *Value) ObjxMap(optionalDefault ...(Map)) Map {
+ if s, ok := v.data.((Map)); ok {
+ return s
+ }
+ if s, ok := v.data.(map[string]interface{}); ok {
+ return s
+ }
+ if len(optionalDefault) == 1 {
+ return optionalDefault[0]
+ }
+ return New(nil)
+}
+
+// MustObjxMap gets the value as a (Map).
+//
+// Panics if the object is not a (Map).
+func (v *Value) MustObjxMap() Map {
+ if s, ok := v.data.(map[string]interface{}); ok {
+ return s
+ }
+ return v.data.((Map))
+}
+
+// ObjxMapSlice gets the value as a [](Map), returns the optionalDefault
+// value or nil if the value is not a [](Map).
+func (v *Value) ObjxMapSlice(optionalDefault ...[](Map)) [](Map) {
+ if s, ok := v.data.([]Map); ok {
+ return s
+ }
+
+ if s, ok := v.data.([]map[string]interface{}); ok {
+ result := make([]Map, len(s))
+ for i := range s {
+ result[i] = s[i]
+ }
+ return result
+ }
+
+ s, ok := v.data.([]interface{})
+ if !ok {
+ if len(optionalDefault) == 1 {
+ return optionalDefault[0]
+ }
+ return nil
+ }
+
+ result := make([]Map, len(s))
+ for i := range s {
+ switch s[i].(type) {
+ case Map:
+ result[i] = s[i].(Map)
+ case map[string]interface{}:
+ result[i] = New(s[i])
+ default:
+ return nil
+ }
+ }
+ return result
+}
+
+// MustObjxMapSlice gets the value as a [](Map).
+//
+// Panics if the object is not a [](Map).
+func (v *Value) MustObjxMapSlice() [](Map) {
+ if s := v.ObjxMapSlice(); s != nil {
+ return s
+ }
+ return v.data.([](Map))
+}
+
+// IsObjxMap gets whether the object contained is a (Map) or not.
+func (v *Value) IsObjxMap() bool {
+ _, ok := v.data.((Map))
+ if !ok {
+ _, ok = v.data.(map[string]interface{})
+ }
+ return ok
+}
+
+// IsObjxMapSlice gets whether the object contained is a [](Map) or not.
+func (v *Value) IsObjxMapSlice() bool {
+ _, ok := v.data.([](Map))
+ if !ok {
+ _, ok = v.data.([]map[string]interface{})
+ if !ok {
+ s, ok := v.data.([]interface{})
+ if ok {
+ for i := range s {
+ switch s[i].(type) {
+ case Map:
+ case map[string]interface{}:
+ default:
+ return false
+ }
+ }
+ return true
+ }
+ }
+ }
+
+ return ok
+}
+
+// EachObjxMap calls the specified callback for each object
+// in the [](Map).
+//
+// Panics if the object is the wrong type.
+func (v *Value) EachObjxMap(callback func(int, Map) bool) *Value {
+ for index, val := range v.MustObjxMapSlice() {
+ carryon := callback(index, val)
+ if !carryon {
+ break
+ }
+ }
+ return v
+}
+
+// WhereObjxMap uses the specified decider function to select items
+// from the [](Map). The object contained in the result will contain
+// only the selected items.
+func (v *Value) WhereObjxMap(decider func(int, Map) bool) *Value {
+ var selected [](Map)
+ v.EachObjxMap(func(index int, val Map) bool {
+ shouldSelect := decider(index, val)
+ if !shouldSelect {
+ selected = append(selected, val)
+ }
+ return true
+ })
+ return &Value{data: selected}
+}
+
+// GroupObjxMap uses the specified grouper function to group the items
+// keyed by the return of the grouper. The object contained in the
+// result will contain a map[string][](Map).
+func (v *Value) GroupObjxMap(grouper func(int, Map) string) *Value {
+ groups := make(map[string][](Map))
+ v.EachObjxMap(func(index int, val Map) bool {
+ group := grouper(index, val)
+ if _, ok := groups[group]; !ok {
+ groups[group] = make([](Map), 0)
+ }
+ groups[group] = append(groups[group], val)
+ return true
+ })
+ return &Value{data: groups}
+}
+
+// ReplaceObjxMap uses the specified function to replace each (Map)s
+// by iterating each item. The data in the returned result will be a
+// [](Map) containing the replaced items.
+func (v *Value) ReplaceObjxMap(replacer func(int, Map) Map) *Value {
+ arr := v.MustObjxMapSlice()
+ replaced := make([](Map), len(arr))
+ v.EachObjxMap(func(index int, val Map) bool {
+ replaced[index] = replacer(index, val)
+ return true
+ })
+ return &Value{data: replaced}
+}
+
+// CollectObjxMap uses the specified collector function to collect a value
+// for each of the (Map)s in the slice. The data returned will be a
+// []interface{}.
+func (v *Value) CollectObjxMap(collector func(int, Map) interface{}) *Value {
+ arr := v.MustObjxMapSlice()
+ collected := make([]interface{}, len(arr))
+ v.EachObjxMap(func(index int, val Map) bool {
+ collected[index] = collector(index, val)
+ return true
+ })
+ return &Value{data: collected}
+}
diff --git a/vendor/github.com/stretchr/objx/type_specific_codegen.go b/vendor/github.com/stretchr/objx/type_specific_codegen.go
index 202a91f8c19..9859b407f02 100644
--- a/vendor/github.com/stretchr/objx/type_specific_codegen.go
+++ b/vendor/github.com/stretchr/objx/type_specific_codegen.go
@@ -1,7 +1,7 @@
package objx
/*
- Inter (interface{} and []interface{})
+ Inter (interface{} and []interface{})
*/
// Inter gets the value as a interface{}, returns the optionalDefault
@@ -126,257 +126,7 @@ func (v *Value) CollectInter(collector func(int, interface{}) interface{}) *Valu
}
/*
- MSI (map[string]interface{} and []map[string]interface{})
-*/
-
-// MSI gets the value as a map[string]interface{}, returns the optionalDefault
-// value or a system default object if the value is the wrong type.
-func (v *Value) MSI(optionalDefault ...map[string]interface{}) map[string]interface{} {
- if s, ok := v.data.(map[string]interface{}); ok {
- return s
- }
- if len(optionalDefault) == 1 {
- return optionalDefault[0]
- }
- return nil
-}
-
-// MustMSI gets the value as a map[string]interface{}.
-//
-// Panics if the object is not a map[string]interface{}.
-func (v *Value) MustMSI() map[string]interface{} {
- return v.data.(map[string]interface{})
-}
-
-// MSISlice gets the value as a []map[string]interface{}, returns the optionalDefault
-// value or nil if the value is not a []map[string]interface{}.
-func (v *Value) MSISlice(optionalDefault ...[]map[string]interface{}) []map[string]interface{} {
- if s, ok := v.data.([]map[string]interface{}); ok {
- return s
- }
- if len(optionalDefault) == 1 {
- return optionalDefault[0]
- }
- return nil
-}
-
-// MustMSISlice gets the value as a []map[string]interface{}.
-//
-// Panics if the object is not a []map[string]interface{}.
-func (v *Value) MustMSISlice() []map[string]interface{} {
- return v.data.([]map[string]interface{})
-}
-
-// IsMSI gets whether the object contained is a map[string]interface{} or not.
-func (v *Value) IsMSI() bool {
- _, ok := v.data.(map[string]interface{})
- return ok
-}
-
-// IsMSISlice gets whether the object contained is a []map[string]interface{} or not.
-func (v *Value) IsMSISlice() bool {
- _, ok := v.data.([]map[string]interface{})
- return ok
-}
-
-// EachMSI calls the specified callback for each object
-// in the []map[string]interface{}.
-//
-// Panics if the object is the wrong type.
-func (v *Value) EachMSI(callback func(int, map[string]interface{}) bool) *Value {
- for index, val := range v.MustMSISlice() {
- carryon := callback(index, val)
- if !carryon {
- break
- }
- }
- return v
-}
-
-// WhereMSI uses the specified decider function to select items
-// from the []map[string]interface{}. The object contained in the result will contain
-// only the selected items.
-func (v *Value) WhereMSI(decider func(int, map[string]interface{}) bool) *Value {
- var selected []map[string]interface{}
- v.EachMSI(func(index int, val map[string]interface{}) bool {
- shouldSelect := decider(index, val)
- if !shouldSelect {
- selected = append(selected, val)
- }
- return true
- })
- return &Value{data: selected}
-}
-
-// GroupMSI uses the specified grouper function to group the items
-// keyed by the return of the grouper. The object contained in the
-// result will contain a map[string][]map[string]interface{}.
-func (v *Value) GroupMSI(grouper func(int, map[string]interface{}) string) *Value {
- groups := make(map[string][]map[string]interface{})
- v.EachMSI(func(index int, val map[string]interface{}) bool {
- group := grouper(index, val)
- if _, ok := groups[group]; !ok {
- groups[group] = make([]map[string]interface{}, 0)
- }
- groups[group] = append(groups[group], val)
- return true
- })
- return &Value{data: groups}
-}
-
-// ReplaceMSI uses the specified function to replace each map[string]interface{}s
-// by iterating each item. The data in the returned result will be a
-// []map[string]interface{} containing the replaced items.
-func (v *Value) ReplaceMSI(replacer func(int, map[string]interface{}) map[string]interface{}) *Value {
- arr := v.MustMSISlice()
- replaced := make([]map[string]interface{}, len(arr))
- v.EachMSI(func(index int, val map[string]interface{}) bool {
- replaced[index] = replacer(index, val)
- return true
- })
- return &Value{data: replaced}
-}
-
-// CollectMSI uses the specified collector function to collect a value
-// for each of the map[string]interface{}s in the slice. The data returned will be a
-// []interface{}.
-func (v *Value) CollectMSI(collector func(int, map[string]interface{}) interface{}) *Value {
- arr := v.MustMSISlice()
- collected := make([]interface{}, len(arr))
- v.EachMSI(func(index int, val map[string]interface{}) bool {
- collected[index] = collector(index, val)
- return true
- })
- return &Value{data: collected}
-}
-
-/*
- ObjxMap ((Map) and [](Map))
-*/
-
-// ObjxMap gets the value as a (Map), returns the optionalDefault
-// value or a system default object if the value is the wrong type.
-func (v *Value) ObjxMap(optionalDefault ...(Map)) Map {
- if s, ok := v.data.((Map)); ok {
- return s
- }
- if len(optionalDefault) == 1 {
- return optionalDefault[0]
- }
- return New(nil)
-}
-
-// MustObjxMap gets the value as a (Map).
-//
-// Panics if the object is not a (Map).
-func (v *Value) MustObjxMap() Map {
- return v.data.((Map))
-}
-
-// ObjxMapSlice gets the value as a [](Map), returns the optionalDefault
-// value or nil if the value is not a [](Map).
-func (v *Value) ObjxMapSlice(optionalDefault ...[](Map)) [](Map) {
- if s, ok := v.data.([](Map)); ok {
- return s
- }
- if len(optionalDefault) == 1 {
- return optionalDefault[0]
- }
- return nil
-}
-
-// MustObjxMapSlice gets the value as a [](Map).
-//
-// Panics if the object is not a [](Map).
-func (v *Value) MustObjxMapSlice() [](Map) {
- return v.data.([](Map))
-}
-
-// IsObjxMap gets whether the object contained is a (Map) or not.
-func (v *Value) IsObjxMap() bool {
- _, ok := v.data.((Map))
- return ok
-}
-
-// IsObjxMapSlice gets whether the object contained is a [](Map) or not.
-func (v *Value) IsObjxMapSlice() bool {
- _, ok := v.data.([](Map))
- return ok
-}
-
-// EachObjxMap calls the specified callback for each object
-// in the [](Map).
-//
-// Panics if the object is the wrong type.
-func (v *Value) EachObjxMap(callback func(int, Map) bool) *Value {
- for index, val := range v.MustObjxMapSlice() {
- carryon := callback(index, val)
- if !carryon {
- break
- }
- }
- return v
-}
-
-// WhereObjxMap uses the specified decider function to select items
-// from the [](Map). The object contained in the result will contain
-// only the selected items.
-func (v *Value) WhereObjxMap(decider func(int, Map) bool) *Value {
- var selected [](Map)
- v.EachObjxMap(func(index int, val Map) bool {
- shouldSelect := decider(index, val)
- if !shouldSelect {
- selected = append(selected, val)
- }
- return true
- })
- return &Value{data: selected}
-}
-
-// GroupObjxMap uses the specified grouper function to group the items
-// keyed by the return of the grouper. The object contained in the
-// result will contain a map[string][](Map).
-func (v *Value) GroupObjxMap(grouper func(int, Map) string) *Value {
- groups := make(map[string][](Map))
- v.EachObjxMap(func(index int, val Map) bool {
- group := grouper(index, val)
- if _, ok := groups[group]; !ok {
- groups[group] = make([](Map), 0)
- }
- groups[group] = append(groups[group], val)
- return true
- })
- return &Value{data: groups}
-}
-
-// ReplaceObjxMap uses the specified function to replace each (Map)s
-// by iterating each item. The data in the returned result will be a
-// [](Map) containing the replaced items.
-func (v *Value) ReplaceObjxMap(replacer func(int, Map) Map) *Value {
- arr := v.MustObjxMapSlice()
- replaced := make([](Map), len(arr))
- v.EachObjxMap(func(index int, val Map) bool {
- replaced[index] = replacer(index, val)
- return true
- })
- return &Value{data: replaced}
-}
-
-// CollectObjxMap uses the specified collector function to collect a value
-// for each of the (Map)s in the slice. The data returned will be a
-// []interface{}.
-func (v *Value) CollectObjxMap(collector func(int, Map) interface{}) *Value {
- arr := v.MustObjxMapSlice()
- collected := make([]interface{}, len(arr))
- v.EachObjxMap(func(index int, val Map) bool {
- collected[index] = collector(index, val)
- return true
- })
- return &Value{data: collected}
-}
-
-/*
- Bool (bool and []bool)
+ Bool (bool and []bool)
*/
// Bool gets the value as a bool, returns the optionalDefault
@@ -501,7 +251,7 @@ func (v *Value) CollectBool(collector func(int, bool) interface{}) *Value {
}
/*
- Str (string and []string)
+ Str (string and []string)
*/
// Str gets the value as a string, returns the optionalDefault
@@ -626,7 +376,7 @@ func (v *Value) CollectStr(collector func(int, string) interface{}) *Value {
}
/*
- Int (int and []int)
+ Int (int and []int)
*/
// Int gets the value as a int, returns the optionalDefault
@@ -751,7 +501,7 @@ func (v *Value) CollectInt(collector func(int, int) interface{}) *Value {
}
/*
- Int8 (int8 and []int8)
+ Int8 (int8 and []int8)
*/
// Int8 gets the value as a int8, returns the optionalDefault
@@ -876,7 +626,7 @@ func (v *Value) CollectInt8(collector func(int, int8) interface{}) *Value {
}
/*
- Int16 (int16 and []int16)
+ Int16 (int16 and []int16)
*/
// Int16 gets the value as a int16, returns the optionalDefault
@@ -1001,7 +751,7 @@ func (v *Value) CollectInt16(collector func(int, int16) interface{}) *Value {
}
/*
- Int32 (int32 and []int32)
+ Int32 (int32 and []int32)
*/
// Int32 gets the value as a int32, returns the optionalDefault
@@ -1126,7 +876,7 @@ func (v *Value) CollectInt32(collector func(int, int32) interface{}) *Value {
}
/*
- Int64 (int64 and []int64)
+ Int64 (int64 and []int64)
*/
// Int64 gets the value as a int64, returns the optionalDefault
@@ -1251,7 +1001,7 @@ func (v *Value) CollectInt64(collector func(int, int64) interface{}) *Value {
}
/*
- Uint (uint and []uint)
+ Uint (uint and []uint)
*/
// Uint gets the value as a uint, returns the optionalDefault
@@ -1376,7 +1126,7 @@ func (v *Value) CollectUint(collector func(int, uint) interface{}) *Value {
}
/*
- Uint8 (uint8 and []uint8)
+ Uint8 (uint8 and []uint8)
*/
// Uint8 gets the value as a uint8, returns the optionalDefault
@@ -1501,7 +1251,7 @@ func (v *Value) CollectUint8(collector func(int, uint8) interface{}) *Value {
}
/*
- Uint16 (uint16 and []uint16)
+ Uint16 (uint16 and []uint16)
*/
// Uint16 gets the value as a uint16, returns the optionalDefault
@@ -1626,7 +1376,7 @@ func (v *Value) CollectUint16(collector func(int, uint16) interface{}) *Value {
}
/*
- Uint32 (uint32 and []uint32)
+ Uint32 (uint32 and []uint32)
*/
// Uint32 gets the value as a uint32, returns the optionalDefault
@@ -1751,7 +1501,7 @@ func (v *Value) CollectUint32(collector func(int, uint32) interface{}) *Value {
}
/*
- Uint64 (uint64 and []uint64)
+ Uint64 (uint64 and []uint64)
*/
// Uint64 gets the value as a uint64, returns the optionalDefault
@@ -1876,7 +1626,7 @@ func (v *Value) CollectUint64(collector func(int, uint64) interface{}) *Value {
}
/*
- Uintptr (uintptr and []uintptr)
+ Uintptr (uintptr and []uintptr)
*/
// Uintptr gets the value as a uintptr, returns the optionalDefault
@@ -2001,7 +1751,7 @@ func (v *Value) CollectUintptr(collector func(int, uintptr) interface{}) *Value
}
/*
- Float32 (float32 and []float32)
+ Float32 (float32 and []float32)
*/
// Float32 gets the value as a float32, returns the optionalDefault
@@ -2126,7 +1876,7 @@ func (v *Value) CollectFloat32(collector func(int, float32) interface{}) *Value
}
/*
- Float64 (float64 and []float64)
+ Float64 (float64 and []float64)
*/
// Float64 gets the value as a float64, returns the optionalDefault
@@ -2251,7 +2001,7 @@ func (v *Value) CollectFloat64(collector func(int, float64) interface{}) *Value
}
/*
- Complex64 (complex64 and []complex64)
+ Complex64 (complex64 and []complex64)
*/
// Complex64 gets the value as a complex64, returns the optionalDefault
@@ -2376,7 +2126,7 @@ func (v *Value) CollectComplex64(collector func(int, complex64) interface{}) *Va
}
/*
- Complex128 (complex128 and []complex128)
+ Complex128 (complex128 and []complex128)
*/
// Complex128 gets the value as a complex128, returns the optionalDefault
diff --git a/vendor/github.com/stretchr/objx/value.go b/vendor/github.com/stretchr/objx/value.go
index e4b4a14335d..4e5f9b77e69 100644
--- a/vendor/github.com/stretchr/objx/value.go
+++ b/vendor/github.com/stretchr/objx/value.go
@@ -20,6 +20,8 @@ func (v *Value) Data() interface{} {
// String returns the value always as a string
func (v *Value) String() string {
switch {
+ case v.IsNil():
+ return ""
case v.IsStr():
return v.Str()
case v.IsBool():
@@ -51,3 +53,107 @@ func (v *Value) String() string {
}
return fmt.Sprintf("%#v", v.Data())
}
+
+// StringSlice returns the value always as a []string
+func (v *Value) StringSlice(optionalDefault ...[]string) []string {
+ switch {
+ case v.IsStrSlice():
+ return v.MustStrSlice()
+ case v.IsBoolSlice():
+ slice := v.MustBoolSlice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatBool(iv)
+ }
+ return vals
+ case v.IsFloat32Slice():
+ slice := v.MustFloat32Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatFloat(float64(iv), 'f', -1, 32)
+ }
+ return vals
+ case v.IsFloat64Slice():
+ slice := v.MustFloat64Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatFloat(iv, 'f', -1, 64)
+ }
+ return vals
+ case v.IsIntSlice():
+ slice := v.MustIntSlice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatInt(int64(iv), 10)
+ }
+ return vals
+ case v.IsInt8Slice():
+ slice := v.MustInt8Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatInt(int64(iv), 10)
+ }
+ return vals
+ case v.IsInt16Slice():
+ slice := v.MustInt16Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatInt(int64(iv), 10)
+ }
+ return vals
+ case v.IsInt32Slice():
+ slice := v.MustInt32Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatInt(int64(iv), 10)
+ }
+ return vals
+ case v.IsInt64Slice():
+ slice := v.MustInt64Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatInt(iv, 10)
+ }
+ return vals
+ case v.IsUintSlice():
+ slice := v.MustUintSlice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatUint(uint64(iv), 10)
+ }
+ return vals
+ case v.IsUint8Slice():
+ slice := v.MustUint8Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatUint(uint64(iv), 10)
+ }
+ return vals
+ case v.IsUint16Slice():
+ slice := v.MustUint16Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatUint(uint64(iv), 10)
+ }
+ return vals
+ case v.IsUint32Slice():
+ slice := v.MustUint32Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatUint(uint64(iv), 10)
+ }
+ return vals
+ case v.IsUint64Slice():
+ slice := v.MustUint64Slice()
+ vals := make([]string, len(slice))
+ for i, iv := range slice {
+ vals[i] = strconv.FormatUint(iv, 10)
+ }
+ return vals
+ }
+ if len(optionalDefault) == 1 {
+ return optionalDefault[0]
+ }
+
+ return []string{}
+}
diff --git a/vendor/github.com/stretchr/testify/LICENSE b/vendor/github.com/stretchr/testify/LICENSE
index f38ec5956b6..4b0421cf9ee 100644
--- a/vendor/github.com/stretchr/testify/LICENSE
+++ b/vendor/github.com/stretchr/testify/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2012-2018 Mat Ryer and Tyler Bunnell
+Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go
similarity index 62%
rename from vendor/github.com/stretchr/testify/assert/assertion_order.go
rename to vendor/github.com/stretchr/testify/assert/assertion_compare.go
index 15a486ca6e2..dc200395ceb 100644
--- a/vendor/github.com/stretchr/testify/assert/assertion_order.go
+++ b/vendor/github.com/stretchr/testify/assert/assertion_compare.go
@@ -5,20 +5,28 @@ import (
"reflect"
)
-func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
+type CompareType int
+
+const (
+ compareLess CompareType = iota - 1
+ compareEqual
+ compareGreater
+)
+
+func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
switch kind {
case reflect.Int:
{
intobj1 := obj1.(int)
intobj2 := obj2.(int)
if intobj1 > intobj2 {
- return -1, true
+ return compareGreater, true
}
if intobj1 == intobj2 {
- return 0, true
+ return compareEqual, true
}
if intobj1 < intobj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Int8:
@@ -26,13 +34,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
int8obj1 := obj1.(int8)
int8obj2 := obj2.(int8)
if int8obj1 > int8obj2 {
- return -1, true
+ return compareGreater, true
}
if int8obj1 == int8obj2 {
- return 0, true
+ return compareEqual, true
}
if int8obj1 < int8obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Int16:
@@ -40,13 +48,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
int16obj1 := obj1.(int16)
int16obj2 := obj2.(int16)
if int16obj1 > int16obj2 {
- return -1, true
+ return compareGreater, true
}
if int16obj1 == int16obj2 {
- return 0, true
+ return compareEqual, true
}
if int16obj1 < int16obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Int32:
@@ -54,13 +62,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
int32obj1 := obj1.(int32)
int32obj2 := obj2.(int32)
if int32obj1 > int32obj2 {
- return -1, true
+ return compareGreater, true
}
if int32obj1 == int32obj2 {
- return 0, true
+ return compareEqual, true
}
if int32obj1 < int32obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Int64:
@@ -68,13 +76,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
int64obj1 := obj1.(int64)
int64obj2 := obj2.(int64)
if int64obj1 > int64obj2 {
- return -1, true
+ return compareGreater, true
}
if int64obj1 == int64obj2 {
- return 0, true
+ return compareEqual, true
}
if int64obj1 < int64obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Uint:
@@ -82,13 +90,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
uintobj1 := obj1.(uint)
uintobj2 := obj2.(uint)
if uintobj1 > uintobj2 {
- return -1, true
+ return compareGreater, true
}
if uintobj1 == uintobj2 {
- return 0, true
+ return compareEqual, true
}
if uintobj1 < uintobj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Uint8:
@@ -96,13 +104,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
uint8obj1 := obj1.(uint8)
uint8obj2 := obj2.(uint8)
if uint8obj1 > uint8obj2 {
- return -1, true
+ return compareGreater, true
}
if uint8obj1 == uint8obj2 {
- return 0, true
+ return compareEqual, true
}
if uint8obj1 < uint8obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Uint16:
@@ -110,13 +118,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
uint16obj1 := obj1.(uint16)
uint16obj2 := obj2.(uint16)
if uint16obj1 > uint16obj2 {
- return -1, true
+ return compareGreater, true
}
if uint16obj1 == uint16obj2 {
- return 0, true
+ return compareEqual, true
}
if uint16obj1 < uint16obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Uint32:
@@ -124,13 +132,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
uint32obj1 := obj1.(uint32)
uint32obj2 := obj2.(uint32)
if uint32obj1 > uint32obj2 {
- return -1, true
+ return compareGreater, true
}
if uint32obj1 == uint32obj2 {
- return 0, true
+ return compareEqual, true
}
if uint32obj1 < uint32obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Uint64:
@@ -138,13 +146,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
uint64obj1 := obj1.(uint64)
uint64obj2 := obj2.(uint64)
if uint64obj1 > uint64obj2 {
- return -1, true
+ return compareGreater, true
}
if uint64obj1 == uint64obj2 {
- return 0, true
+ return compareEqual, true
}
if uint64obj1 < uint64obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Float32:
@@ -152,13 +160,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
float32obj1 := obj1.(float32)
float32obj2 := obj2.(float32)
if float32obj1 > float32obj2 {
- return -1, true
+ return compareGreater, true
}
if float32obj1 == float32obj2 {
- return 0, true
+ return compareEqual, true
}
if float32obj1 < float32obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.Float64:
@@ -166,13 +174,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
float64obj1 := obj1.(float64)
float64obj2 := obj2.(float64)
if float64obj1 > float64obj2 {
- return -1, true
+ return compareGreater, true
}
if float64obj1 == float64obj2 {
- return 0, true
+ return compareEqual, true
}
if float64obj1 < float64obj2 {
- return 1, true
+ return compareLess, true
}
}
case reflect.String:
@@ -180,18 +188,18 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
stringobj1 := obj1.(string)
stringobj2 := obj2.(string)
if stringobj1 > stringobj2 {
- return -1, true
+ return compareGreater, true
}
if stringobj1 == stringobj2 {
- return 0, true
+ return compareEqual, true
}
if stringobj1 < stringobj2 {
- return 1, true
+ return compareLess, true
}
}
}
- return 0, false
+ return compareEqual, false
}
// Greater asserts that the first element is greater than the second
@@ -200,26 +208,7 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (int, bool) {
// assert.Greater(t, float64(2), float64(1))
// assert.Greater(t, "b", "a")
func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
- e1Kind := reflect.ValueOf(e1).Kind()
- e2Kind := reflect.ValueOf(e2).Kind()
- if e1Kind != e2Kind {
- return Fail(t, "Elements should be the same type", msgAndArgs...)
- }
-
- res, isComparable := compare(e1, e2, e1Kind)
- if !isComparable {
- return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...)
- }
-
- if res != -1 {
- return Fail(t, fmt.Sprintf("\"%v\" is not greater than \"%v\"", e1, e2), msgAndArgs...)
- }
-
- return true
+ return compareTwoValues(t, e1, e2, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs)
}
// GreaterOrEqual asserts that the first element is greater than or equal to the second
@@ -229,26 +218,7 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface
// assert.GreaterOrEqual(t, "b", "a")
// assert.GreaterOrEqual(t, "b", "b")
func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
- e1Kind := reflect.ValueOf(e1).Kind()
- e2Kind := reflect.ValueOf(e2).Kind()
- if e1Kind != e2Kind {
- return Fail(t, "Elements should be the same type", msgAndArgs...)
- }
-
- res, isComparable := compare(e1, e2, e1Kind)
- if !isComparable {
- return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...)
- }
-
- if res != -1 && res != 0 {
- return Fail(t, fmt.Sprintf("\"%v\" is not greater than or equal to \"%v\"", e1, e2), msgAndArgs...)
- }
-
- return true
+ return compareTwoValues(t, e1, e2, []CompareType{compareGreater, compareEqual}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs)
}
// Less asserts that the first element is less than the second
@@ -257,26 +227,7 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in
// assert.Less(t, float64(1), float64(2))
// assert.Less(t, "a", "b")
func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
- e1Kind := reflect.ValueOf(e1).Kind()
- e2Kind := reflect.ValueOf(e2).Kind()
- if e1Kind != e2Kind {
- return Fail(t, "Elements should be the same type", msgAndArgs...)
- }
-
- res, isComparable := compare(e1, e2, e1Kind)
- if !isComparable {
- return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...)
- }
-
- if res != 1 {
- return Fail(t, fmt.Sprintf("\"%v\" is not less than \"%v\"", e1, e2), msgAndArgs...)
- }
-
- return true
+ return compareTwoValues(t, e1, e2, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs)
}
// LessOrEqual asserts that the first element is less than or equal to the second
@@ -286,6 +237,10 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
// assert.LessOrEqual(t, "a", "b")
// assert.LessOrEqual(t, "b", "b")
func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) bool {
+ return compareTwoValues(t, e1, e2, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs)
+}
+
+func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
}
@@ -296,14 +251,24 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter
return Fail(t, "Elements should be the same type", msgAndArgs...)
}
- res, isComparable := compare(e1, e2, e1Kind)
+ compareResult, isComparable := compare(e1, e2, e1Kind)
if !isComparable {
return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...)
}
- if res != 1 && res != 0 {
- return Fail(t, fmt.Sprintf("\"%v\" is not less than or equal to \"%v\"", e1, e2), msgAndArgs...)
+ if !containsValue(allowedComparesResults, compareResult) {
+ return Fail(t, fmt.Sprintf(failMessage, e1, e2), msgAndArgs...)
}
return true
}
+
+func containsValue(values []CompareType, value CompareType) bool {
+ for _, v := range values {
+ if v == value {
+ return true
+ }
+ }
+
+ return false
+}
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go
index bf89ecd21f7..49370eb1674 100644
--- a/vendor/github.com/stretchr/testify/assert/assertion_format.go
+++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go
@@ -93,7 +93,7 @@ func EqualErrorf(t TestingT, theError error, errString string, msg string, args
// EqualValuesf asserts that two objects are equal or convertable to the same types
// and equal.
//
-// assert.EqualValuesf(t, uint32(123, "error message %s", "formatted"), int32(123))
+// assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")
func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
@@ -127,7 +127,7 @@ func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick
// Exactlyf asserts that two objects are equal in value and type.
//
-// assert.Exactlyf(t, int32(123, "error message %s", "formatted"), int64(123))
+// assert.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted")
func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
@@ -173,7 +173,7 @@ func FileExistsf(t TestingT, path string, msg string, args ...interface{}) bool
// Greaterf asserts that the first element is greater than the second
//
// assert.Greaterf(t, 2, 1, "error message %s", "formatted")
-// assert.Greaterf(t, float64(2, "error message %s", "formatted"), float64(1))
+// assert.Greaterf(t, float64(2), float64(1), "error message %s", "formatted")
// assert.Greaterf(t, "b", "a", "error message %s", "formatted")
func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
@@ -225,7 +225,7 @@ func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, u
//
// assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}
//
-// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false).
+// Returns whether the assertion was successful (true) or not (false).
func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
@@ -237,7 +237,7 @@ func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string,
//
// assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}
//
-// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false).
+// Returns whether the assertion was successful (true) or not (false).
func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
@@ -245,6 +245,18 @@ func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url stri
return HTTPRedirect(t, handler, method, url, values, append([]interface{}{msg}, args...)...)
}
+// HTTPStatusCodef asserts that a specified handler returns a specified status code.
+//
+// assert.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")
+//
+// Returns whether the assertion was successful (true) or not (false).
+func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
+ return HTTPStatusCode(t, handler, method, url, values, statuscode, append([]interface{}{msg}, args...)...)
+}
+
// HTTPSuccessf asserts that a specified handler returns a success status code.
//
// assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")
@@ -259,7 +271,7 @@ func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url strin
// Implementsf asserts that an object is implemented by the specified interface.
//
-// assert.Implementsf(t, (*MyInterface, "error message %s", "formatted")(nil), new(MyObject))
+// assert.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
@@ -341,7 +353,7 @@ func Lenf(t TestingT, object interface{}, length int, msg string, args ...interf
// Lessf asserts that the first element is less than the second
//
// assert.Lessf(t, 1, 2, "error message %s", "formatted")
-// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2))
+// assert.Lessf(t, float64(1), float64(2), "error message %s", "formatted")
// assert.Lessf(t, "a", "b", "error message %s", "formatted")
func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
@@ -454,6 +466,16 @@ func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string,
return NotEqual(t, expected, actual, append([]interface{}{msg}, args...)...)
}
+// NotEqualValuesf asserts that two objects are not equal even when converted to the same type
+//
+// assert.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted")
+func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
+ return NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...)
+}
+
// NotNilf asserts that the specified object is not nil.
//
// assert.NotNilf(t, err, "error message %s", "formatted")
@@ -476,7 +498,7 @@ func NotPanicsf(t TestingT, f PanicTestFunc, msg string, args ...interface{}) bo
// NotRegexpf asserts that a specified regexp does not match a string.
//
-// assert.NotRegexpf(t, regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting")
+// assert.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted")
// assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted")
func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
@@ -552,7 +574,7 @@ func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg str
// Regexpf asserts that a specified regexp matches a string.
//
-// assert.Regexpf(t, regexp.MustCompile("start", "error message %s", "formatted"), "it's starting")
+// assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted")
// assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted")
func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) bool {
if h, ok := t.(tHelper); ok {
diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go
index 75ecdcaa2f3..9db889427a7 100644
--- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go
+++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go
@@ -169,7 +169,7 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
// EqualValuesf asserts that two objects are equal or convertable to the same types
// and equal.
//
-// a.EqualValuesf(uint32(123, "error message %s", "formatted"), int32(123))
+// a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
h.Helper()
@@ -251,7 +251,7 @@ func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArg
// Exactlyf asserts that two objects are equal in value and type.
//
-// a.Exactlyf(int32(123, "error message %s", "formatted"), int64(123))
+// a.Exactlyf(int32(123), int64(123), "error message %s", "formatted")
func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
h.Helper()
@@ -370,7 +370,7 @@ func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string,
// Greaterf asserts that the first element is greater than the second
//
// a.Greaterf(2, 1, "error message %s", "formatted")
-// a.Greaterf(float64(2, "error message %s", "formatted"), float64(1))
+// a.Greaterf(float64(2), float64(1), "error message %s", "formatted")
// a.Greaterf("b", "a", "error message %s", "formatted")
func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
@@ -447,7 +447,7 @@ func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url stri
//
// a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}
//
-// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false).
+// Returns whether the assertion was successful (true) or not (false).
func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
h.Helper()
@@ -471,7 +471,7 @@ func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url s
//
// a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}
//
-// Returns whether the assertion was successful (true, "error message %s", "formatted") or not (false).
+// Returns whether the assertion was successful (true) or not (false).
func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
h.Helper()
@@ -479,6 +479,30 @@ func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url
return HTTPRedirectf(a.t, handler, method, url, values, msg, args...)
}
+// HTTPStatusCode asserts that a specified handler returns a specified status code.
+//
+// a.HTTPStatusCode(myHandler, "GET", "/notImplemented", nil, 501)
+//
+// Returns whether the assertion was successful (true) or not (false).
+func (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool {
+ if h, ok := a.t.(tHelper); ok {
+ h.Helper()
+ }
+ return HTTPStatusCode(a.t, handler, method, url, values, statuscode, msgAndArgs...)
+}
+
+// HTTPStatusCodef asserts that a specified handler returns a specified status code.
+//
+// a.HTTPStatusCodef(myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")
+//
+// Returns whether the assertion was successful (true) or not (false).
+func (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) bool {
+ if h, ok := a.t.(tHelper); ok {
+ h.Helper()
+ }
+ return HTTPStatusCodef(a.t, handler, method, url, values, statuscode, msg, args...)
+}
+
// HTTPSuccess asserts that a specified handler returns a success status code.
//
// a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil)
@@ -515,7 +539,7 @@ func (a *Assertions) Implements(interfaceObject interface{}, object interface{},
// Implementsf asserts that an object is implemented by the specified interface.
//
-// a.Implementsf((*MyInterface, "error message %s", "formatted")(nil), new(MyObject))
+// a.Implementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")
func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
h.Helper()
@@ -706,7 +730,7 @@ func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, ar
// Lessf asserts that the first element is less than the second
//
// a.Lessf(1, 2, "error message %s", "formatted")
-// a.Lessf(float64(1, "error message %s", "formatted"), float64(2))
+// a.Lessf(float64(1), float64(2), "error message %s", "formatted")
// a.Lessf("a", "b", "error message %s", "formatted")
func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
@@ -884,6 +908,26 @@ func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndAr
return NotEqual(a.t, expected, actual, msgAndArgs...)
}
+// NotEqualValues asserts that two objects are not equal even when converted to the same type
+//
+// a.NotEqualValues(obj1, obj2)
+func (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {
+ if h, ok := a.t.(tHelper); ok {
+ h.Helper()
+ }
+ return NotEqualValues(a.t, expected, actual, msgAndArgs...)
+}
+
+// NotEqualValuesf asserts that two objects are not equal even when converted to the same type
+//
+// a.NotEqualValuesf(obj1, obj2, "error message %s", "formatted")
+func (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
+ if h, ok := a.t.(tHelper); ok {
+ h.Helper()
+ }
+ return NotEqualValuesf(a.t, expected, actual, msg, args...)
+}
+
// NotEqualf asserts that the specified values are NOT equal.
//
// a.NotEqualf(obj1, obj2, "error message %s", "formatted")
@@ -950,7 +994,7 @@ func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...in
// NotRegexpf asserts that a specified regexp does not match a string.
//
-// a.NotRegexpf(regexp.MustCompile("starts", "error message %s", "formatted"), "it's starting")
+// a.NotRegexpf(regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted")
// a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted")
func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
@@ -1102,7 +1146,7 @@ func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...inter
// Regexpf asserts that a specified regexp matches a string.
//
-// a.Regexpf(regexp.MustCompile("start", "error message %s", "formatted"), "it's starting")
+// a.Regexpf(regexp.MustCompile("start"), "it's starting", "error message %s", "formatted")
// a.Regexpf("start...$", "it's not starting", "error message %s", "formatted")
func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{}) bool {
if h, ok := a.t.(tHelper); ok {
diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go
index bdd81389a97..914a10d83af 100644
--- a/vendor/github.com/stretchr/testify/assert/assertions.go
+++ b/vendor/github.com/stretchr/testify/assert/assertions.go
@@ -19,7 +19,7 @@ import (
"github.com/davecgh/go-spew/spew"
"github.com/pmezard/go-difflib/difflib"
- yaml "gopkg.in/yaml.v2"
+ yaml "gopkg.in/yaml.v3"
)
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
@@ -45,7 +45,7 @@ type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool
// for table driven tests.
type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool
-// Comparison a custom function that returns true on success and false on failure
+// Comparison is a custom function that returns true on success and false on failure
type Comparison func() (success bool)
/*
@@ -104,11 +104,11 @@ the problem actually occurred in calling code.*/
// failed.
func CallerInfo() []string {
- pc := uintptr(0)
- file := ""
- line := 0
- ok := false
- name := ""
+ var pc uintptr
+ var ok bool
+ var file string
+ var line int
+ var name string
callers := []string{}
for i := 0; ; i++ {
@@ -429,14 +429,27 @@ func samePointers(first, second interface{}) bool {
// to a type conversion in the Go grammar.
func formatUnequalValues(expected, actual interface{}) (e string, a string) {
if reflect.TypeOf(expected) != reflect.TypeOf(actual) {
- return fmt.Sprintf("%T(%#v)", expected, expected),
- fmt.Sprintf("%T(%#v)", actual, actual)
+ return fmt.Sprintf("%T(%s)", expected, truncatingFormat(expected)),
+ fmt.Sprintf("%T(%s)", actual, truncatingFormat(actual))
}
switch expected.(type) {
case time.Duration:
return fmt.Sprintf("%v", expected), fmt.Sprintf("%v", actual)
}
- return fmt.Sprintf("%#v", expected), fmt.Sprintf("%#v", actual)
+ return truncatingFormat(expected), truncatingFormat(actual)
+}
+
+// truncatingFormat formats the data and truncates it if it's too long.
+//
+// This helps keep formatted error messages lines from exceeding the
+// bufio.MaxScanTokenSize max line length that the go testing framework imposes.
+func truncatingFormat(data interface{}) string {
+ value := fmt.Sprintf("%#v", data)
+ max := bufio.MaxScanTokenSize - 100 // Give us some space the type info too if needed.
+ if len(value) > max {
+ value = value[0:max] + "<... truncated>"
+ }
+ return value
}
// EqualValues asserts that two objects are equal or convertable to the same types
@@ -483,12 +496,12 @@ func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}
//
// assert.NotNil(t, err)
func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
if !isNil(object) {
return true
}
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
return Fail(t, "Expected value not to be nil.", msgAndArgs...)
}
@@ -529,12 +542,12 @@ func isNil(object interface{}) bool {
//
// assert.Nil(t, err)
func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
if isNil(object) {
return true
}
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
return Fail(t, fmt.Sprintf("Expected nil, but got: %#v", object), msgAndArgs...)
}
@@ -571,12 +584,11 @@ func isEmpty(object interface{}) bool {
//
// assert.Empty(t, obj)
func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
pass := isEmpty(object)
if !pass {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
Fail(t, fmt.Sprintf("Should be empty, but was %v", object), msgAndArgs...)
}
@@ -591,12 +603,11 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
// assert.Equal(t, "two", obj[1])
// }
func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
pass := !isEmpty(object)
if !pass {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
Fail(t, fmt.Sprintf("Should NOT be empty, but was %v", object), msgAndArgs...)
}
@@ -639,16 +650,10 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{})
//
// assert.True(t, myBool)
func True(t TestingT, value bool, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
- if h, ok := t.(interface {
- Helper()
- }); ok {
- h.Helper()
- }
-
- if value != true {
+ if !value {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
return Fail(t, "Should be true", msgAndArgs...)
}
@@ -660,11 +665,10 @@ func True(t TestingT, value bool, msgAndArgs ...interface{}) bool {
//
// assert.False(t, myBool)
func False(t TestingT, value bool, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
- if value != false {
+ if value {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
return Fail(t, "Should be false", msgAndArgs...)
}
@@ -695,6 +699,21 @@ func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{
}
+// NotEqualValues asserts that two objects are not equal even when converted to the same type
+//
+// assert.NotEqualValues(t, obj1, obj2)
+func NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
+
+ if ObjectsAreEqualValues(expected, actual) {
+ return Fail(t, fmt.Sprintf("Should not be: %#v\n", actual), msgAndArgs...)
+ }
+
+ return true
+}
+
// containsElement try loop over the list check if the list includes the element.
// return (false, false) if impossible.
// return (true, false) if element was not found.
@@ -747,10 +766,10 @@ func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bo
ok, found := includeElement(s, contains)
if !ok {
- return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...)
+ return Fail(t, fmt.Sprintf("%#v could not be applied builtin len()", s), msgAndArgs...)
}
if !found {
- return Fail(t, fmt.Sprintf("\"%s\" does not contain \"%s\"", s, contains), msgAndArgs...)
+ return Fail(t, fmt.Sprintf("%#v does not contain %#v", s, contains), msgAndArgs...)
}
return true
@@ -881,27 +900,39 @@ func ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface
return true
}
- aKind := reflect.TypeOf(listA).Kind()
- bKind := reflect.TypeOf(listB).Kind()
+ if !isList(t, listA, msgAndArgs...) || !isList(t, listB, msgAndArgs...) {
+ return false
+ }
- if aKind != reflect.Array && aKind != reflect.Slice {
- return Fail(t, fmt.Sprintf("%q has an unsupported type %s", listA, aKind), msgAndArgs...)
+ extraA, extraB := diffLists(listA, listB)
+
+ if len(extraA) == 0 && len(extraB) == 0 {
+ return true
}
- if bKind != reflect.Array && bKind != reflect.Slice {
- return Fail(t, fmt.Sprintf("%q has an unsupported type %s", listB, bKind), msgAndArgs...)
+ return Fail(t, formatListDiff(listA, listB, extraA, extraB), msgAndArgs...)
+}
+
+// isList checks that the provided value is array or slice.
+func isList(t TestingT, list interface{}, msgAndArgs ...interface{}) (ok bool) {
+ kind := reflect.TypeOf(list).Kind()
+ if kind != reflect.Array && kind != reflect.Slice {
+ return Fail(t, fmt.Sprintf("%q has an unsupported type %s, expecting array or slice", list, kind),
+ msgAndArgs...)
}
+ return true
+}
+// diffLists diffs two arrays/slices and returns slices of elements that are only in A and only in B.
+// If some element is present multiple times, each instance is counted separately (e.g. if something is 2x in A and
+// 5x in B, it will be 0x in extraA and 3x in extraB). The order of items in both lists is ignored.
+func diffLists(listA, listB interface{}) (extraA, extraB []interface{}) {
aValue := reflect.ValueOf(listA)
bValue := reflect.ValueOf(listB)
aLen := aValue.Len()
bLen := bValue.Len()
- if aLen != bLen {
- return Fail(t, fmt.Sprintf("lengths don't match: %d != %d", aLen, bLen), msgAndArgs...)
- }
-
// Mark indexes in bValue that we already used
visited := make([]bool, bLen)
for i := 0; i < aLen; i++ {
@@ -918,11 +949,38 @@ func ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface
}
}
if !found {
- return Fail(t, fmt.Sprintf("element %s appears more times in %s than in %s", element, aValue, bValue), msgAndArgs...)
+ extraA = append(extraA, element)
}
}
- return true
+ for j := 0; j < bLen; j++ {
+ if visited[j] {
+ continue
+ }
+ extraB = append(extraB, bValue.Index(j).Interface())
+ }
+
+ return
+}
+
+func formatListDiff(listA, listB interface{}, extraA, extraB []interface{}) string {
+ var msg bytes.Buffer
+
+ msg.WriteString("elements differ")
+ if len(extraA) > 0 {
+ msg.WriteString("\n\nextra elements in list A:\n")
+ msg.WriteString(spewConfig.Sdump(extraA))
+ }
+ if len(extraB) > 0 {
+ msg.WriteString("\n\nextra elements in list B:\n")
+ msg.WriteString(spewConfig.Sdump(extraB))
+ }
+ msg.WriteString("\n\nlistA:\n")
+ msg.WriteString(spewConfig.Sdump(listA))
+ msg.WriteString("\n\nlistB:\n")
+ msg.WriteString(spewConfig.Sdump(listB))
+
+ return msg.String()
}
// Condition uses a Comparison to assert a complex condition.
@@ -1058,6 +1116,8 @@ func toFloat(x interface{}) (float64, bool) {
xok := true
switch xn := x.(type) {
+ case uint:
+ xf = float64(xn)
case uint8:
xf = float64(xn)
case uint16:
@@ -1079,7 +1139,7 @@ func toFloat(x interface{}) (float64, bool) {
case float32:
xf = float64(xn)
case float64:
- xf = float64(xn)
+ xf = xn
case time.Duration:
xf = float64(xn)
default:
@@ -1193,6 +1253,9 @@ func calcRelativeError(expected, actual interface{}) (float64, error) {
if !aok {
return 0, fmt.Errorf("expected value %q cannot be converted to float", expected)
}
+ if math.IsNaN(af) {
+ return 0, errors.New("expected value must not be NaN")
+ }
if af == 0 {
return 0, fmt.Errorf("expected value must have a value other than zero to calculate the relative error")
}
@@ -1200,6 +1263,9 @@ func calcRelativeError(expected, actual interface{}) (float64, error) {
if !bok {
return 0, fmt.Errorf("actual value %q cannot be converted to float", actual)
}
+ if math.IsNaN(bf) {
+ return 0, errors.New("actual value must not be NaN")
+ }
return math.Abs(af-bf) / math.Abs(af), nil
}
@@ -1209,6 +1275,9 @@ func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAnd
if h, ok := t.(tHelper); ok {
h.Helper()
}
+ if math.IsNaN(epsilon) {
+ return Fail(t, "epsilon must not be NaN")
+ }
actualEpsilon, err := calcRelativeError(expected, actual)
if err != nil {
return Fail(t, err.Error(), msgAndArgs...)
@@ -1256,10 +1325,10 @@ func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, m
// assert.Equal(t, expectedObj, actualObj)
// }
func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
if err != nil {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
return Fail(t, fmt.Sprintf("Received unexpected error:\n%+v", err), msgAndArgs...)
}
@@ -1273,11 +1342,10 @@ func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {
// assert.Equal(t, expectedError, err)
// }
func Error(t TestingT, err error, msgAndArgs ...interface{}) bool {
- if h, ok := t.(tHelper); ok {
- h.Helper()
- }
-
if err == nil {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
return Fail(t, "An error is expected but got nil.", msgAndArgs...)
}
@@ -1553,6 +1621,7 @@ var spewConfig = spew.ConfigState{
DisablePointerAddresses: true,
DisableCapacities: true,
SortKeys: true,
+ DisableMethods: true,
}
type tHelper interface {
diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go
index df46fa777ac..4ed341dd289 100644
--- a/vendor/github.com/stretchr/testify/assert/http_assertions.go
+++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go
@@ -33,7 +33,6 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, value
code, err := httpCode(handler, method, url, values)
if err != nil {
Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
- return false
}
isSuccessCode := code >= http.StatusOK && code <= http.StatusPartialContent
@@ -56,7 +55,6 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, valu
code, err := httpCode(handler, method, url, values)
if err != nil {
Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
- return false
}
isRedirectCode := code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect
@@ -79,7 +77,6 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values
code, err := httpCode(handler, method, url, values)
if err != nil {
Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
- return false
}
isErrorCode := code >= http.StatusBadRequest
@@ -90,6 +87,28 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values
return isErrorCode
}
+// HTTPStatusCode asserts that a specified handler returns a specified status code.
+//
+// assert.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501)
+//
+// Returns whether the assertion was successful (true) or not (false).
+func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) bool {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
+ code, err := httpCode(handler, method, url, values)
+ if err != nil {
+ Fail(t, fmt.Sprintf("Failed to build test request, got error: %s", err))
+ }
+
+ successful := code == statuscode
+ if !successful {
+ Fail(t, fmt.Sprintf("Expected HTTP status code %d for %q but received %d", statuscode, url+"?"+values.Encode(), code))
+ }
+
+ return successful
+}
+
// HTTPBody is a helper that returns HTTP body of the response. It returns
// empty string if building a new request fails.
func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string {
diff --git a/vendor/github.com/stretchr/testify/mock/mock.go b/vendor/github.com/stretchr/testify/mock/mock.go
index 58e0798da43..c6df4485abc 100644
--- a/vendor/github.com/stretchr/testify/mock/mock.go
+++ b/vendor/github.com/stretchr/testify/mock/mock.go
@@ -65,6 +65,11 @@ type Call struct {
// reference. It's useful when mocking methods such as unmarshalers or
// decoders.
RunFn func(Arguments)
+
+ // PanicMsg holds msg to be used to mock panic on the function call
+ // if the PanicMsg is set to a non nil string the function call will panic
+ // irrespective of other settings
+ PanicMsg *string
}
func newCall(parent *Mock, methodName string, callerInfo []string, methodArguments ...interface{}) *Call {
@@ -77,6 +82,7 @@ func newCall(parent *Mock, methodName string, callerInfo []string, methodArgumen
Repeatability: 0,
WaitFor: nil,
RunFn: nil,
+ PanicMsg: nil,
}
}
@@ -100,6 +106,18 @@ func (c *Call) Return(returnArguments ...interface{}) *Call {
return c
}
+// Panic specifies if the functon call should fail and the panic message
+//
+// Mock.On("DoSomething").Panic("test panic")
+func (c *Call) Panic(msg string) *Call {
+ c.lock()
+ defer c.unlock()
+
+ c.PanicMsg = &msg
+
+ return c
+}
+
// Once indicates that that the mock should only return the value once.
//
// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Once()
@@ -150,7 +168,7 @@ func (c *Call) After(d time.Duration) *Call {
// mocking a method (such as an unmarshaler) that takes a pointer to a struct and
// sets properties in such struct
//
-// Mock.On("Unmarshal", AnythingOfType("*map[string]interface{}").Return().Run(func(args Arguments) {
+// Mock.On("Unmarshal", AnythingOfType("*map[string]interface{}")).Return().Run(func(args Arguments) {
// arg := args.Get(0).(*map[string]interface{})
// arg["foo"] = "bar"
// })
@@ -392,6 +410,13 @@ func (m *Mock) MethodCalled(methodName string, arguments ...interface{}) Argumen
time.Sleep(call.waitTime)
}
+ m.mutex.Lock()
+ panicMsg := call.PanicMsg
+ m.mutex.Unlock()
+ if panicMsg != nil {
+ panic(*panicMsg)
+ }
+
m.mutex.Lock()
runFn := call.RunFn
m.mutex.Unlock()
@@ -527,6 +552,45 @@ func (m *Mock) AssertNotCalled(t TestingT, methodName string, arguments ...inter
return true
}
+// IsMethodCallable checking that the method can be called
+// If the method was called more than `Repeatability` return false
+func (m *Mock) IsMethodCallable(t TestingT, methodName string, arguments ...interface{}) bool {
+ if h, ok := t.(tHelper); ok {
+ h.Helper()
+ }
+ m.mutex.Lock()
+ defer m.mutex.Unlock()
+
+ for _, v := range m.ExpectedCalls {
+ if v.Method != methodName {
+ continue
+ }
+ if len(arguments) != len(v.Arguments) {
+ continue
+ }
+ if v.Repeatability < v.totalCalls {
+ continue
+ }
+ if isArgsEqual(v.Arguments, arguments) {
+ return true
+ }
+ }
+ return false
+}
+
+// isArgsEqual compares arguments
+func isArgsEqual(expected Arguments, args []interface{}) bool {
+ if len(expected) != len(args) {
+ return false
+ }
+ for i, v := range args {
+ if !reflect.DeepEqual(expected[i], v) {
+ return false
+ }
+ }
+ return true
+}
+
func (m *Mock) methodWasCalled(methodName string, expected []interface{}) bool {
for _, call := range m.calls() {
if call.Method == methodName {
@@ -791,7 +855,7 @@ func (args Arguments) String(indexOrNil ...int) string {
// normal String() method - return a string representation of the args
var argsStr []string
for _, arg := range args {
- argsStr = append(argsStr, fmt.Sprintf("%s", reflect.TypeOf(arg)))
+ argsStr = append(argsStr, fmt.Sprintf("%T", arg)) // handles nil nicely
}
return strings.Join(argsStr, ",")
} else if len(indexOrNil) == 1 {
diff --git a/vendor/go.uber.org/atomic/.codecov.yml b/vendor/go.uber.org/atomic/.codecov.yml
new file mode 100644
index 00000000000..6d4d1be7b57
--- /dev/null
+++ b/vendor/go.uber.org/atomic/.codecov.yml
@@ -0,0 +1,15 @@
+coverage:
+ range: 80..100
+ round: down
+ precision: 2
+
+ status:
+ project: # measuring the overall project coverage
+ default: # context, you can create multiple ones with custom titles
+ enabled: yes # must be yes|true to enable this status
+ target: 100 # specify the target coverage for each commit status
+ # option: "auto" (must increase from parent commit or pull request base)
+ # option: "X%" a static target percentage to hit
+ if_not_found: success # if parent is not found report status as success, error, or failure
+ if_ci_failed: error # if ci fails report status as success, error, or failure
+
diff --git a/vendor/go.uber.org/atomic/.gitignore b/vendor/go.uber.org/atomic/.gitignore
new file mode 100644
index 00000000000..c3fa253893f
--- /dev/null
+++ b/vendor/go.uber.org/atomic/.gitignore
@@ -0,0 +1,12 @@
+/bin
+.DS_Store
+/vendor
+cover.html
+cover.out
+lint.log
+
+# Binaries
+*.test
+
+# Profiling output
+*.prof
diff --git a/vendor/go.uber.org/atomic/.travis.yml b/vendor/go.uber.org/atomic/.travis.yml
new file mode 100644
index 00000000000..4e73268b602
--- /dev/null
+++ b/vendor/go.uber.org/atomic/.travis.yml
@@ -0,0 +1,27 @@
+sudo: false
+language: go
+go_import_path: go.uber.org/atomic
+
+env:
+ global:
+ - GO111MODULE=on
+
+matrix:
+ include:
+ - go: 1.12.x
+ - go: 1.13.x
+ env: LINT=1
+
+cache:
+ directories:
+ - vendor
+
+before_install:
+ - go version
+
+script:
+ - test -z "$LINT" || make lint
+ - make cover
+
+after_success:
+ - bash <(curl -s https://codecov.io/bash)
diff --git a/vendor/go.uber.org/atomic/CHANGELOG.md b/vendor/go.uber.org/atomic/CHANGELOG.md
new file mode 100644
index 00000000000..aef8b6ebc41
--- /dev/null
+++ b/vendor/go.uber.org/atomic/CHANGELOG.md
@@ -0,0 +1,64 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [1.6.0] - 2020-02-24
+### Changed
+- Drop library dependency on `golang.org/x/{lint, tools}`.
+
+## [1.5.1] - 2019-11-19
+- Fix bug where `Bool.CAS` and `Bool.Toggle` do work correctly together
+ causing `CAS` to fail even though the old value matches.
+
+## [1.5.0] - 2019-10-29
+### Changed
+- With Go modules, only the `go.uber.org/atomic` import path is supported now.
+ If you need to use the old import path, please add a `replace` directive to
+ your `go.mod`.
+
+## [1.4.0] - 2019-05-01
+### Added
+ - Add `atomic.Error` type for atomic operations on `error` values.
+
+## [1.3.2] - 2018-05-02
+### Added
+- Add `atomic.Duration` type for atomic operations on `time.Duration` values.
+
+## [1.3.1] - 2017-11-14
+### Fixed
+- Revert optimization for `atomic.String.Store("")` which caused data races.
+
+## [1.3.0] - 2017-11-13
+### Added
+- Add `atomic.Bool.CAS` for compare-and-swap semantics on bools.
+
+### Changed
+- Optimize `atomic.String.Store("")` by avoiding an allocation.
+
+## [1.2.0] - 2017-04-12
+### Added
+- Shadow `atomic.Value` from `sync/atomic`.
+
+## [1.1.0] - 2017-03-10
+### Added
+- Add atomic `Float64` type.
+
+### Changed
+- Support new `go.uber.org/atomic` import path.
+
+## [1.0.0] - 2016-07-18
+
+- Initial release.
+
+[1.6.0]: https://github.com/uber-go/atomic/compare/v1.5.1...v1.6.0
+[1.5.1]: https://github.com/uber-go/atomic/compare/v1.5.0...v1.5.1
+[1.5.0]: https://github.com/uber-go/atomic/compare/v1.4.0...v1.5.0
+[1.4.0]: https://github.com/uber-go/atomic/compare/v1.3.2...v1.4.0
+[1.3.2]: https://github.com/uber-go/atomic/compare/v1.3.1...v1.3.2
+[1.3.1]: https://github.com/uber-go/atomic/compare/v1.3.0...v1.3.1
+[1.3.0]: https://github.com/uber-go/atomic/compare/v1.2.0...v1.3.0
+[1.2.0]: https://github.com/uber-go/atomic/compare/v1.1.0...v1.2.0
+[1.1.0]: https://github.com/uber-go/atomic/compare/v1.0.0...v1.1.0
+[1.0.0]: https://github.com/uber-go/atomic/releases/tag/v1.0.0
diff --git a/vendor/github.com/gobuffalo/packd/LICENSE b/vendor/go.uber.org/atomic/LICENSE.txt
similarity index 87%
rename from vendor/github.com/gobuffalo/packd/LICENSE
rename to vendor/go.uber.org/atomic/LICENSE.txt
index 649efd43722..8765c9fbc61 100644
--- a/vendor/github.com/gobuffalo/packd/LICENSE
+++ b/vendor/go.uber.org/atomic/LICENSE.txt
@@ -1,6 +1,4 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 Mark Bates
+Copyright (c) 2016 Uber Technologies, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +7,13 @@ 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 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.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/go.uber.org/atomic/Makefile b/vendor/go.uber.org/atomic/Makefile
new file mode 100644
index 00000000000..39af0fb63f2
--- /dev/null
+++ b/vendor/go.uber.org/atomic/Makefile
@@ -0,0 +1,35 @@
+# Directory to place `go install`ed binaries into.
+export GOBIN ?= $(shell pwd)/bin
+
+GOLINT = $(GOBIN)/golint
+
+GO_FILES ?= *.go
+
+.PHONY: build
+build:
+ go build ./...
+
+.PHONY: test
+test:
+ go test -race ./...
+
+.PHONY: gofmt
+gofmt:
+ $(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
+ gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
+ @[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" && cat $(FMT_LOG) && false)
+
+$(GOLINT):
+ go install golang.org/x/lint/golint
+
+.PHONY: golint
+golint: $(GOLINT)
+ $(GOLINT) ./...
+
+.PHONY: lint
+lint: gofmt golint
+
+.PHONY: cover
+cover:
+ go test -coverprofile=cover.out -coverpkg ./... -v ./...
+ go tool cover -html=cover.out -o cover.html
diff --git a/vendor/go.uber.org/atomic/README.md b/vendor/go.uber.org/atomic/README.md
new file mode 100644
index 00000000000..ade0c20f16b
--- /dev/null
+++ b/vendor/go.uber.org/atomic/README.md
@@ -0,0 +1,63 @@
+# atomic [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![Go Report Card][reportcard-img]][reportcard]
+
+Simple wrappers for primitive types to enforce atomic access.
+
+## Installation
+
+```shell
+$ go get -u go.uber.org/atomic@v1
+```
+
+### Legacy Import Path
+
+As of v1.5.0, the import path `go.uber.org/atomic` is the only supported way
+of using this package. If you are using Go modules, this package will fail to
+compile with the legacy import path path `github.com/uber-go/atomic`.
+
+We recommend migrating your code to the new import path but if you're unable
+to do so, or if your dependencies are still using the old import path, you
+will have to add a `replace` directive to your `go.mod` file downgrading the
+legacy import path to an older version.
+
+```
+replace github.com/uber-go/atomic => github.com/uber-go/atomic v1.4.0
+```
+
+You can do so automatically by running the following command.
+
+```shell
+$ go mod edit -replace github.com/uber-go/atomic=github.com/uber-go/atomic@v1.4.0
+```
+
+## Usage
+
+The standard library's `sync/atomic` is powerful, but it's easy to forget which
+variables must be accessed atomically. `go.uber.org/atomic` preserves all the
+functionality of the standard library, but wraps the primitive types to
+provide a safer, more convenient API.
+
+```go
+var atom atomic.Uint32
+atom.Store(42)
+atom.Sub(2)
+atom.CAS(40, 11)
+```
+
+See the [documentation][doc] for a complete API specification.
+
+## Development Status
+
+Stable.
+
+---
+
+Released under the [MIT License](LICENSE.txt).
+
+[doc-img]: https://godoc.org/github.com/uber-go/atomic?status.svg
+[doc]: https://godoc.org/go.uber.org/atomic
+[ci-img]: https://travis-ci.com/uber-go/atomic.svg?branch=master
+[ci]: https://travis-ci.com/uber-go/atomic
+[cov-img]: https://codecov.io/gh/uber-go/atomic/branch/master/graph/badge.svg
+[cov]: https://codecov.io/gh/uber-go/atomic
+[reportcard-img]: https://goreportcard.com/badge/go.uber.org/atomic
+[reportcard]: https://goreportcard.com/report/go.uber.org/atomic
diff --git a/vendor/go.uber.org/atomic/atomic.go b/vendor/go.uber.org/atomic/atomic.go
new file mode 100644
index 00000000000..ad5fa0980a7
--- /dev/null
+++ b/vendor/go.uber.org/atomic/atomic.go
@@ -0,0 +1,356 @@
+// Copyright (c) 2016 Uber Technologies, Inc.
+//
+// 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.
+
+// Package atomic provides simple wrappers around numerics to enforce atomic
+// access.
+package atomic
+
+import (
+ "math"
+ "sync/atomic"
+ "time"
+)
+
+// Int32 is an atomic wrapper around an int32.
+type Int32 struct{ v int32 }
+
+// NewInt32 creates an Int32.
+func NewInt32(i int32) *Int32 {
+ return &Int32{i}
+}
+
+// Load atomically loads the wrapped value.
+func (i *Int32) Load() int32 {
+ return atomic.LoadInt32(&i.v)
+}
+
+// Add atomically adds to the wrapped int32 and returns the new value.
+func (i *Int32) Add(n int32) int32 {
+ return atomic.AddInt32(&i.v, n)
+}
+
+// Sub atomically subtracts from the wrapped int32 and returns the new value.
+func (i *Int32) Sub(n int32) int32 {
+ return atomic.AddInt32(&i.v, -n)
+}
+
+// Inc atomically increments the wrapped int32 and returns the new value.
+func (i *Int32) Inc() int32 {
+ return i.Add(1)
+}
+
+// Dec atomically decrements the wrapped int32 and returns the new value.
+func (i *Int32) Dec() int32 {
+ return i.Sub(1)
+}
+
+// CAS is an atomic compare-and-swap.
+func (i *Int32) CAS(old, new int32) bool {
+ return atomic.CompareAndSwapInt32(&i.v, old, new)
+}
+
+// Store atomically stores the passed value.
+func (i *Int32) Store(n int32) {
+ atomic.StoreInt32(&i.v, n)
+}
+
+// Swap atomically swaps the wrapped int32 and returns the old value.
+func (i *Int32) Swap(n int32) int32 {
+ return atomic.SwapInt32(&i.v, n)
+}
+
+// Int64 is an atomic wrapper around an int64.
+type Int64 struct{ v int64 }
+
+// NewInt64 creates an Int64.
+func NewInt64(i int64) *Int64 {
+ return &Int64{i}
+}
+
+// Load atomically loads the wrapped value.
+func (i *Int64) Load() int64 {
+ return atomic.LoadInt64(&i.v)
+}
+
+// Add atomically adds to the wrapped int64 and returns the new value.
+func (i *Int64) Add(n int64) int64 {
+ return atomic.AddInt64(&i.v, n)
+}
+
+// Sub atomically subtracts from the wrapped int64 and returns the new value.
+func (i *Int64) Sub(n int64) int64 {
+ return atomic.AddInt64(&i.v, -n)
+}
+
+// Inc atomically increments the wrapped int64 and returns the new value.
+func (i *Int64) Inc() int64 {
+ return i.Add(1)
+}
+
+// Dec atomically decrements the wrapped int64 and returns the new value.
+func (i *Int64) Dec() int64 {
+ return i.Sub(1)
+}
+
+// CAS is an atomic compare-and-swap.
+func (i *Int64) CAS(old, new int64) bool {
+ return atomic.CompareAndSwapInt64(&i.v, old, new)
+}
+
+// Store atomically stores the passed value.
+func (i *Int64) Store(n int64) {
+ atomic.StoreInt64(&i.v, n)
+}
+
+// Swap atomically swaps the wrapped int64 and returns the old value.
+func (i *Int64) Swap(n int64) int64 {
+ return atomic.SwapInt64(&i.v, n)
+}
+
+// Uint32 is an atomic wrapper around an uint32.
+type Uint32 struct{ v uint32 }
+
+// NewUint32 creates a Uint32.
+func NewUint32(i uint32) *Uint32 {
+ return &Uint32{i}
+}
+
+// Load atomically loads the wrapped value.
+func (i *Uint32) Load() uint32 {
+ return atomic.LoadUint32(&i.v)
+}
+
+// Add atomically adds to the wrapped uint32 and returns the new value.
+func (i *Uint32) Add(n uint32) uint32 {
+ return atomic.AddUint32(&i.v, n)
+}
+
+// Sub atomically subtracts from the wrapped uint32 and returns the new value.
+func (i *Uint32) Sub(n uint32) uint32 {
+ return atomic.AddUint32(&i.v, ^(n - 1))
+}
+
+// Inc atomically increments the wrapped uint32 and returns the new value.
+func (i *Uint32) Inc() uint32 {
+ return i.Add(1)
+}
+
+// Dec atomically decrements the wrapped int32 and returns the new value.
+func (i *Uint32) Dec() uint32 {
+ return i.Sub(1)
+}
+
+// CAS is an atomic compare-and-swap.
+func (i *Uint32) CAS(old, new uint32) bool {
+ return atomic.CompareAndSwapUint32(&i.v, old, new)
+}
+
+// Store atomically stores the passed value.
+func (i *Uint32) Store(n uint32) {
+ atomic.StoreUint32(&i.v, n)
+}
+
+// Swap atomically swaps the wrapped uint32 and returns the old value.
+func (i *Uint32) Swap(n uint32) uint32 {
+ return atomic.SwapUint32(&i.v, n)
+}
+
+// Uint64 is an atomic wrapper around a uint64.
+type Uint64 struct{ v uint64 }
+
+// NewUint64 creates a Uint64.
+func NewUint64(i uint64) *Uint64 {
+ return &Uint64{i}
+}
+
+// Load atomically loads the wrapped value.
+func (i *Uint64) Load() uint64 {
+ return atomic.LoadUint64(&i.v)
+}
+
+// Add atomically adds to the wrapped uint64 and returns the new value.
+func (i *Uint64) Add(n uint64) uint64 {
+ return atomic.AddUint64(&i.v, n)
+}
+
+// Sub atomically subtracts from the wrapped uint64 and returns the new value.
+func (i *Uint64) Sub(n uint64) uint64 {
+ return atomic.AddUint64(&i.v, ^(n - 1))
+}
+
+// Inc atomically increments the wrapped uint64 and returns the new value.
+func (i *Uint64) Inc() uint64 {
+ return i.Add(1)
+}
+
+// Dec atomically decrements the wrapped uint64 and returns the new value.
+func (i *Uint64) Dec() uint64 {
+ return i.Sub(1)
+}
+
+// CAS is an atomic compare-and-swap.
+func (i *Uint64) CAS(old, new uint64) bool {
+ return atomic.CompareAndSwapUint64(&i.v, old, new)
+}
+
+// Store atomically stores the passed value.
+func (i *Uint64) Store(n uint64) {
+ atomic.StoreUint64(&i.v, n)
+}
+
+// Swap atomically swaps the wrapped uint64 and returns the old value.
+func (i *Uint64) Swap(n uint64) uint64 {
+ return atomic.SwapUint64(&i.v, n)
+}
+
+// Bool is an atomic Boolean.
+type Bool struct{ v uint32 }
+
+// NewBool creates a Bool.
+func NewBool(initial bool) *Bool {
+ return &Bool{boolToInt(initial)}
+}
+
+// Load atomically loads the Boolean.
+func (b *Bool) Load() bool {
+ return truthy(atomic.LoadUint32(&b.v))
+}
+
+// CAS is an atomic compare-and-swap.
+func (b *Bool) CAS(old, new bool) bool {
+ return atomic.CompareAndSwapUint32(&b.v, boolToInt(old), boolToInt(new))
+}
+
+// Store atomically stores the passed value.
+func (b *Bool) Store(new bool) {
+ atomic.StoreUint32(&b.v, boolToInt(new))
+}
+
+// Swap sets the given value and returns the previous value.
+func (b *Bool) Swap(new bool) bool {
+ return truthy(atomic.SwapUint32(&b.v, boolToInt(new)))
+}
+
+// Toggle atomically negates the Boolean and returns the previous value.
+func (b *Bool) Toggle() bool {
+ for {
+ old := b.Load()
+ if b.CAS(old, !old) {
+ return old
+ }
+ }
+}
+
+func truthy(n uint32) bool {
+ return n == 1
+}
+
+func boolToInt(b bool) uint32 {
+ if b {
+ return 1
+ }
+ return 0
+}
+
+// Float64 is an atomic wrapper around float64.
+type Float64 struct {
+ v uint64
+}
+
+// NewFloat64 creates a Float64.
+func NewFloat64(f float64) *Float64 {
+ return &Float64{math.Float64bits(f)}
+}
+
+// Load atomically loads the wrapped value.
+func (f *Float64) Load() float64 {
+ return math.Float64frombits(atomic.LoadUint64(&f.v))
+}
+
+// Store atomically stores the passed value.
+func (f *Float64) Store(s float64) {
+ atomic.StoreUint64(&f.v, math.Float64bits(s))
+}
+
+// Add atomically adds to the wrapped float64 and returns the new value.
+func (f *Float64) Add(s float64) float64 {
+ for {
+ old := f.Load()
+ new := old + s
+ if f.CAS(old, new) {
+ return new
+ }
+ }
+}
+
+// Sub atomically subtracts from the wrapped float64 and returns the new value.
+func (f *Float64) Sub(s float64) float64 {
+ return f.Add(-s)
+}
+
+// CAS is an atomic compare-and-swap.
+func (f *Float64) CAS(old, new float64) bool {
+ return atomic.CompareAndSwapUint64(&f.v, math.Float64bits(old), math.Float64bits(new))
+}
+
+// Duration is an atomic wrapper around time.Duration
+// https://godoc.org/time#Duration
+type Duration struct {
+ v Int64
+}
+
+// NewDuration creates a Duration.
+func NewDuration(d time.Duration) *Duration {
+ return &Duration{v: *NewInt64(int64(d))}
+}
+
+// Load atomically loads the wrapped value.
+func (d *Duration) Load() time.Duration {
+ return time.Duration(d.v.Load())
+}
+
+// Store atomically stores the passed value.
+func (d *Duration) Store(n time.Duration) {
+ d.v.Store(int64(n))
+}
+
+// Add atomically adds to the wrapped time.Duration and returns the new value.
+func (d *Duration) Add(n time.Duration) time.Duration {
+ return time.Duration(d.v.Add(int64(n)))
+}
+
+// Sub atomically subtracts from the wrapped time.Duration and returns the new value.
+func (d *Duration) Sub(n time.Duration) time.Duration {
+ return time.Duration(d.v.Sub(int64(n)))
+}
+
+// Swap atomically swaps the wrapped time.Duration and returns the old value.
+func (d *Duration) Swap(n time.Duration) time.Duration {
+ return time.Duration(d.v.Swap(int64(n)))
+}
+
+// CAS is an atomic compare-and-swap.
+func (d *Duration) CAS(old, new time.Duration) bool {
+ return d.v.CAS(int64(old), int64(new))
+}
+
+// Value shadows the type of the same name from sync/atomic
+// https://godoc.org/sync/atomic#Value
+type Value struct{ atomic.Value }
diff --git a/vendor/go.uber.org/atomic/error.go b/vendor/go.uber.org/atomic/error.go
new file mode 100644
index 00000000000..0489d19badb
--- /dev/null
+++ b/vendor/go.uber.org/atomic/error.go
@@ -0,0 +1,55 @@
+// Copyright (c) 2016 Uber Technologies, Inc.
+//
+// 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.
+
+package atomic
+
+// Error is an atomic type-safe wrapper around Value for errors
+type Error struct{ v Value }
+
+// errorHolder is non-nil holder for error object.
+// atomic.Value panics on saving nil object, so err object needs to be
+// wrapped with valid object first.
+type errorHolder struct{ err error }
+
+// NewError creates new atomic error object
+func NewError(err error) *Error {
+ e := &Error{}
+ if err != nil {
+ e.Store(err)
+ }
+ return e
+}
+
+// Load atomically loads the wrapped error
+func (e *Error) Load() error {
+ v := e.v.Load()
+ if v == nil {
+ return nil
+ }
+
+ eh := v.(errorHolder)
+ return eh.err
+}
+
+// Store atomically stores error.
+// NOTE: a holder object is allocated on each Store call.
+func (e *Error) Store(err error) {
+ e.v.Store(errorHolder{err: err})
+}
diff --git a/vendor/go.uber.org/atomic/string.go b/vendor/go.uber.org/atomic/string.go
new file mode 100644
index 00000000000..ede8136face
--- /dev/null
+++ b/vendor/go.uber.org/atomic/string.go
@@ -0,0 +1,49 @@
+// Copyright (c) 2016 Uber Technologies, Inc.
+//
+// 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.
+
+package atomic
+
+// String is an atomic type-safe wrapper around Value for strings.
+type String struct{ v Value }
+
+// NewString creates a String.
+func NewString(str string) *String {
+ s := &String{}
+ if str != "" {
+ s.Store(str)
+ }
+ return s
+}
+
+// Load atomically loads the wrapped string.
+func (s *String) Load() string {
+ v := s.v.Load()
+ if v == nil {
+ return ""
+ }
+ return v.(string)
+}
+
+// Store atomically stores the passed string.
+// Note: Converting the string to an interface{} to store in the Value
+// requires an allocation.
+func (s *String) Store(str string) {
+ s.v.Store(str)
+}
diff --git a/vendor/golang.org/x/mod/module/module.go b/vendor/golang.org/x/mod/module/module.go
index 6cd37280a85..c1c5263c427 100644
--- a/vendor/golang.org/x/mod/module/module.go
+++ b/vendor/golang.org/x/mod/module/module.go
@@ -97,6 +97,7 @@ package module
import (
"fmt"
+ "path"
"sort"
"strings"
"unicode"
@@ -224,13 +225,13 @@ func firstPathOK(r rune) bool {
}
// pathOK reports whether r can appear in an import path element.
-// Paths can be ASCII letters, ASCII digits, and limited ASCII punctuation: + - . _ and ~.
+// Paths can be ASCII letters, ASCII digits, and limited ASCII punctuation: - . _ and ~.
// This matches what "go get" has historically recognized in import paths.
// TODO(rsc): We would like to allow Unicode letters, but that requires additional
// care in the safe encoding (see "escaped paths" above).
func pathOK(r rune) bool {
if r < utf8.RuneSelf {
- return r == '+' || r == '-' || r == '.' || r == '_' || r == '~' ||
+ return r == '-' || r == '.' || r == '_' || r == '~' ||
'0' <= r && r <= '9' ||
'A' <= r && r <= 'Z' ||
'a' <= r && r <= 'z'
@@ -313,11 +314,13 @@ func CheckPath(path string) error {
// separated by slashes (U+002F). (It must not begin with nor end in a slash.)
//
// A valid path element is a non-empty string made up of
-// ASCII letters, ASCII digits, and limited ASCII punctuation: + - . _ and ~.
+// ASCII letters, ASCII digits, and limited ASCII punctuation: - . _ and ~.
// It must not begin or end with a dot (U+002E), nor contain two dots in a row.
//
// The element prefix up to the first dot must not be a reserved file name
-// on Windows, regardless of case (CON, com1, NuL, and so on).
+// on Windows, regardless of case (CON, com1, NuL, and so on). The element
+// must not have a suffix of a tilde followed by one or more ASCII digits
+// (to exclude paths elements that look like Windows short-names).
//
// CheckImportPath may be less restrictive in the future, but see the
// top-level package documentation for additional information about
@@ -402,6 +405,29 @@ func checkElem(elem string, fileName bool) error {
return fmt.Errorf("%q disallowed as path element component on Windows", short)
}
}
+
+ if fileName {
+ // don't check for Windows short-names in file names. They're
+ // only an issue for import paths.
+ return nil
+ }
+
+ // Reject path components that look like Windows short-names.
+ // Those usually end in a tilde followed by one or more ASCII digits.
+ if tilde := strings.LastIndexByte(short, '~'); tilde >= 0 && tilde < len(short)-1 {
+ suffix := short[tilde+1:]
+ suffixIsDigits := true
+ for _, r := range suffix {
+ if r < '0' || r > '9' {
+ suffixIsDigits = false
+ break
+ }
+ }
+ if suffixIsDigits {
+ return fmt.Errorf("trailing tilde and digits in path element")
+ }
+ }
+
return nil
}
@@ -716,3 +742,49 @@ func unescapeString(escaped string) (string, bool) {
}
return string(buf), true
}
+
+// MatchPrefixPatterns reports whether any path prefix of target matches one of
+// the glob patterns (as defined by path.Match) in the comma-separated globs
+// list. This implements the algorithm used when matching a module path to the
+// GOPRIVATE environment variable, as described by 'go help module-private'.
+//
+// It ignores any empty or malformed patterns in the list.
+func MatchPrefixPatterns(globs, target string) bool {
+ for globs != "" {
+ // Extract next non-empty glob in comma-separated list.
+ var glob string
+ if i := strings.Index(globs, ","); i >= 0 {
+ glob, globs = globs[:i], globs[i+1:]
+ } else {
+ glob, globs = globs, ""
+ }
+ if glob == "" {
+ continue
+ }
+
+ // A glob with N+1 path elements (N slashes) needs to be matched
+ // against the first N+1 path elements of target,
+ // which end just before the N+1'th slash.
+ n := strings.Count(glob, "/")
+ prefix := target
+ // Walk target, counting slashes, truncating at the N+1'th slash.
+ for i := 0; i < len(target); i++ {
+ if target[i] == '/' {
+ if n == 0 {
+ prefix = target[:i]
+ break
+ }
+ n--
+ }
+ }
+ if n > 0 {
+ // Not enough prefix elements.
+ continue
+ }
+ matched, _ := path.Match(glob, prefix)
+ if matched {
+ return true
+ }
+ }
+ return false
+}
diff --git a/vendor/golang.org/x/mod/semver/semver.go b/vendor/golang.org/x/mod/semver/semver.go
index 2988e3cf9c5..4338f351774 100644
--- a/vendor/golang.org/x/mod/semver/semver.go
+++ b/vendor/golang.org/x/mod/semver/semver.go
@@ -138,6 +138,9 @@ func Compare(v, w string) int {
// Max canonicalizes its arguments and then returns the version string
// that compares greater.
+//
+// Deprecated: use Compare instead. In most cases, returning a canonicalized
+// version is not expected or desired.
func Max(v, w string) string {
v = Canonical(v)
w = Canonical(w)
diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go
index f91466f7cd7..038941d7085 100644
--- a/vendor/golang.org/x/net/html/parse.go
+++ b/vendor/golang.org/x/net/html/parse.go
@@ -663,6 +663,24 @@ func inHeadIM(p *parser) bool {
// 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. or ) with . 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
@@ -683,7 +701,7 @@ func inHeadIM(p *parser) bool {
if !p.oe.contains(a.Template) {
return true
}
- // TODO: remove this divergence from the HTML5 spec.
+ // TODO: remove this further divergence from the HTML5 spec.
//
// See https://bugs.chromium.org/p/chromium/issues/detail?id=829668
p.generateImpliedEndTags()
@@ -2127,6 +2145,10 @@ func afterAfterFramesetIM(p *parser) bool {
return true
}
+func ignoreTheRemainingTokens(p *parser) bool {
+ return true
+}
+
const whitespaceOrNUL = whitespace + "\x00"
// Section 12.2.6.5
diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go
index 623cf30f4cc..4936e8a6f3b 100644
--- a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go
+++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build (arm || mips || mipsle || 386) && linux
-// +build arm mips mipsle 386
+//go:build (arm || mips || mipsle || 386 || ppc) && linux
+// +build arm mips mipsle 386 ppc
// +build linux
package socket
diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
index 1f42d034dcb..2b8fbb3f3d0 100644
--- a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
+++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build (arm || mips || mipsle || 386) && (darwin || dragonfly || freebsd || linux || netbsd || openbsd)
-// +build arm mips mipsle 386
+//go:build (arm || mips || mipsle || 386 || ppc) && (darwin || dragonfly || freebsd || linux || netbsd || openbsd)
+// +build arm mips mipsle 386 ppc
// +build darwin dragonfly freebsd linux netbsd openbsd
package socket
diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
index 5025a0f75ac..40ebedab3c0 100644
--- a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
+++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go
@@ -7,25 +7,13 @@
package socket
-import "net"
+import (
+ "net"
+ "sync"
+)
type mmsghdrs []mmsghdr
-func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error {
- for i := range hs {
- vs := make([]iovec, len(ms[i].Buffers))
- var sa []byte
- if parseFn != nil {
- sa = make([]byte, sizeofSockaddrInet6)
- }
- if marshalFn != nil {
- sa = marshalFn(ms[i].Addr)
- }
- hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa)
- }
- return nil
-}
-
func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error {
for i := range hs {
ms[i].N = int(hs[i].Len)
@@ -41,3 +29,86 @@ func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr,
}
return nil
}
+
+// mmsghdrsPacker packs Message-slices into mmsghdrs (re-)using pre-allocated buffers.
+type mmsghdrsPacker struct {
+ // hs are the pre-allocated mmsghdrs.
+ hs mmsghdrs
+ // sockaddrs is the pre-allocated buffer for the Hdr.Name buffers.
+ // We use one large buffer for all messages and slice it up.
+ sockaddrs []byte
+ // vs are the pre-allocated iovecs.
+ // We allocate one large buffer for all messages and slice it up. This allows to reuse the buffer
+ // if the number of buffers per message is distributed differently between calls.
+ vs []iovec
+}
+
+func (p *mmsghdrsPacker) prepare(ms []Message) {
+ n := len(ms)
+ if n <= cap(p.hs) {
+ p.hs = p.hs[:n]
+ } else {
+ p.hs = make(mmsghdrs, n)
+ }
+ if n*sizeofSockaddrInet6 <= cap(p.sockaddrs) {
+ p.sockaddrs = p.sockaddrs[:n*sizeofSockaddrInet6]
+ } else {
+ p.sockaddrs = make([]byte, n*sizeofSockaddrInet6)
+ }
+
+ nb := 0
+ for _, m := range ms {
+ nb += len(m.Buffers)
+ }
+ if nb <= cap(p.vs) {
+ p.vs = p.vs[:nb]
+ } else {
+ p.vs = make([]iovec, nb)
+ }
+}
+
+func (p *mmsghdrsPacker) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr, []byte) int) mmsghdrs {
+ p.prepare(ms)
+ hs := p.hs
+ vsRest := p.vs
+ saRest := p.sockaddrs
+ for i := range hs {
+ nvs := len(ms[i].Buffers)
+ vs := vsRest[:nvs]
+ vsRest = vsRest[nvs:]
+
+ var sa []byte
+ if parseFn != nil {
+ sa = saRest[:sizeofSockaddrInet6]
+ saRest = saRest[sizeofSockaddrInet6:]
+ } else if marshalFn != nil {
+ n := marshalFn(ms[i].Addr, saRest)
+ if n > 0 {
+ sa = saRest[:n]
+ saRest = saRest[n:]
+ }
+ }
+ hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa)
+ }
+ return hs
+}
+
+var defaultMmsghdrsPool = mmsghdrsPool{
+ p: sync.Pool{
+ New: func() interface{} {
+ return new(mmsghdrsPacker)
+ },
+ },
+}
+
+type mmsghdrsPool struct {
+ p sync.Pool
+}
+
+func (p *mmsghdrsPool) Get() *mmsghdrsPacker {
+ return p.p.Get().(*mmsghdrsPacker)
+}
+
+func (p *mmsghdrsPool) Put(packer *mmsghdrsPacker) {
+ p.p.Put(packer)
+}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
index 5a38798cc0c..c3c7cc4c83a 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go
@@ -17,6 +17,9 @@ func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {
if sa != nil {
h.Name = (*byte)(unsafe.Pointer(&sa[0]))
h.Namelen = uint32(len(sa))
+ } else {
+ h.Name = nil
+ h.Namelen = 0
}
}
diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
index 2e09e266996..b4658fbaeb8 100644
--- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
+++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build (arm || mips || mipsle || 386) && linux
-// +build arm mips mipsle 386
+//go:build (arm || mips || mipsle || 386 || ppc) && linux
+// +build arm mips mipsle 386 ppc
// +build linux
package socket
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go
index b07b8900506..87e81071c10 100644
--- a/vendor/golang.org/x/net/internal/socket/rawconn.go
+++ b/vendor/golang.org/x/net/internal/socket/rawconn.go
@@ -17,18 +17,45 @@ type Conn struct {
c syscall.RawConn
}
+// tcpConn is an interface implemented by net.TCPConn.
+// It can be used for interface assertions to check if a net.Conn is a TCP connection.
+type tcpConn interface {
+ SyscallConn() (syscall.RawConn, error)
+ SetLinger(int) error
+}
+
+var _ tcpConn = (*net.TCPConn)(nil)
+
+// udpConn is an interface implemented by net.UDPConn.
+// It can be used for interface assertions to check if a net.Conn is a UDP connection.
+type udpConn interface {
+ SyscallConn() (syscall.RawConn, error)
+ ReadMsgUDP(b, oob []byte) (n, oobn, flags int, addr *net.UDPAddr, err error)
+}
+
+var _ udpConn = (*net.UDPConn)(nil)
+
+// ipConn is an interface implemented by net.IPConn.
+// It can be used for interface assertions to check if a net.Conn is an IP connection.
+type ipConn interface {
+ SyscallConn() (syscall.RawConn, error)
+ ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *net.IPAddr, err error)
+}
+
+var _ ipConn = (*net.IPConn)(nil)
+
// NewConn returns a new raw connection.
func NewConn(c net.Conn) (*Conn, error) {
var err error
var cc Conn
switch c := c.(type) {
- case *net.TCPConn:
+ case tcpConn:
cc.network = "tcp"
cc.c, err = c.SyscallConn()
- case *net.UDPConn:
+ case udpConn:
cc.network = "udp"
cc.c, err = c.SyscallConn()
- case *net.IPConn:
+ case ipConn:
cc.network = "ip"
cc.c, err = c.SyscallConn()
default:
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go
index 5d90de11835..d80a15c6b5a 100644
--- a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go
@@ -17,14 +17,13 @@ func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) {
for i := range ms {
ms[i].raceWrite()
}
- hs := make(mmsghdrs, len(ms))
+ packer := defaultMmsghdrsPool.Get()
+ defer defaultMmsghdrsPool.Put(packer)
var parseFn func([]byte, string) (net.Addr, error)
if c.network != "tcp" {
parseFn = parseInetAddr
}
- if err := hs.pack(ms, parseFn, nil); err != nil {
- return 0, err
- }
+ hs := packer.pack(ms, parseFn, nil)
var operr error
var n int
fn := func(s uintptr) bool {
@@ -50,14 +49,13 @@ func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) {
for i := range ms {
ms[i].raceRead()
}
- hs := make(mmsghdrs, len(ms))
- var marshalFn func(net.Addr) []byte
+ packer := defaultMmsghdrsPool.Get()
+ defer defaultMmsghdrsPool.Put(packer)
+ var marshalFn func(net.Addr, []byte) int
if c.network != "tcp" {
marshalFn = marshalInetAddr
}
- if err := hs.pack(ms, nil, marshalFn); err != nil {
- return 0, err
- }
+ hs := packer.pack(ms, nil, marshalFn)
var operr error
var n int
fn := func(s uintptr) bool {
diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
index dfed9a8da33..2e2d61b762e 100644
--- a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
+++ b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go
@@ -55,7 +55,9 @@ func (c *Conn) sendMsg(m *Message, flags int) error {
vs := make([]iovec, len(m.Buffers))
var sa []byte
if m.Addr != nil {
- sa = marshalInetAddr(m.Addr)
+ var a [sizeofSockaddrInet6]byte
+ n := marshalInetAddr(m.Addr, a[:])
+ sa = a[:n]
}
h.pack(vs, m.Buffers, m.OOB, sa)
var operr error
diff --git a/vendor/golang.org/x/net/internal/socket/sys_const_unix.go b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go
index f077b2f11fe..5d99f2373f2 100644
--- a/vendor/golang.org/x/net/internal/socket/sys_const_unix.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos
package socket
@@ -15,4 +15,7 @@ const (
sysAF_INET6 = unix.AF_INET6
sysSOCK_RAW = unix.SOCK_RAW
+
+ sizeofSockaddrInet4 = unix.SizeofSockaddrInet4
+ sizeofSockaddrInet6 = unix.SizeofSockaddrInet6
)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_const_zos.go b/vendor/golang.org/x/net/internal/socket/sys_const_zos.go
deleted file mode 100644
index 3048629541b..00000000000
--- a/vendor/golang.org/x/net/internal/socket/sys_const_zos.go
+++ /dev/null
@@ -1,18 +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 zos
-// +build zos
-
-package socket
-
-import "syscall"
-
-const (
- sysAF_UNSPEC = syscall.AF_UNSPEC
- sysAF_INET = syscall.AF_INET
- sysAF_INET6 = syscall.AF_INET6
-
- sysSOCK_RAW = syscall.SOCK_RAW
-)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc.go
new file mode 100644
index 00000000000..90cfaa9fecf
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc.go
@@ -0,0 +1,10 @@
+// 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.
+
+package socket
+
+const (
+ sysRECVMMSG = 0x157
+ sysSENDMMSG = 0x15d
+)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go
index 25ded21763a..42b8f2340e3 100644
--- a/vendor/golang.org/x/net/internal/socket/sys_posix.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go
@@ -17,35 +17,36 @@ import (
"time"
)
-func marshalInetAddr(a net.Addr) []byte {
+// marshalInetAddr writes a in sockaddr format into the buffer b.
+// The buffer must be sufficiently large (sizeofSockaddrInet4/6).
+// Returns the number of bytes written.
+func marshalInetAddr(a net.Addr, b []byte) int {
switch a := a.(type) {
case *net.TCPAddr:
- return marshalSockaddr(a.IP, a.Port, a.Zone)
+ return marshalSockaddr(a.IP, a.Port, a.Zone, b)
case *net.UDPAddr:
- return marshalSockaddr(a.IP, a.Port, a.Zone)
+ return marshalSockaddr(a.IP, a.Port, a.Zone, b)
case *net.IPAddr:
- return marshalSockaddr(a.IP, 0, a.Zone)
+ return marshalSockaddr(a.IP, 0, a.Zone, b)
default:
- return nil
+ return 0
}
}
-func marshalSockaddr(ip net.IP, port int, zone string) []byte {
+func marshalSockaddr(ip net.IP, port int, zone string, b []byte) int {
if ip4 := ip.To4(); ip4 != nil {
- b := make([]byte, sizeofSockaddrInet)
switch runtime.GOOS {
case "android", "illumos", "linux", "solaris", "windows":
NativeEndian.PutUint16(b[:2], uint16(sysAF_INET))
default:
- b[0] = sizeofSockaddrInet
+ b[0] = sizeofSockaddrInet4
b[1] = sysAF_INET
}
binary.BigEndian.PutUint16(b[2:4], uint16(port))
copy(b[4:8], ip4)
- return b
+ return sizeofSockaddrInet4
}
if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil {
- b := make([]byte, sizeofSockaddrInet6)
switch runtime.GOOS {
case "android", "illumos", "linux", "solaris", "windows":
NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6))
@@ -58,9 +59,9 @@ func marshalSockaddr(ip net.IP, port int, zone string) []byte {
if zone != "" {
NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone)))
}
- return b
+ return sizeofSockaddrInet6
}
- return nil
+ return 0
}
func parseInetAddr(b []byte, network string) (net.Addr, error) {
@@ -77,7 +78,7 @@ func parseInetAddr(b []byte, network string) (net.Addr, error) {
var ip net.IP
var zone string
if af == sysAF_INET {
- if len(b) < sizeofSockaddrInet {
+ if len(b) < sizeofSockaddrInet4 {
return nil, errors.New("short address")
}
ip = make(net.IP, net.IPv4len)
diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go
index dc7bb389b3c..381e45e167f 100644
--- a/vendor/golang.org/x/net/internal/socket/sys_stub.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_stub.go
@@ -15,6 +15,9 @@ const (
sysAF_INET6 = 0xa
sysSOCK_RAW = 0x3
+
+ sizeofSockaddrInet4 = 0x10
+ sizeofSockaddrInet6 = 0x1c
)
func marshalInetAddr(ip net.IP, port int, zone string) []byte {
diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go
index d556a446157..2de0d68c619 100644
--- a/vendor/golang.org/x/net/internal/socket/sys_windows.go
+++ b/vendor/golang.org/x/net/internal/socket/sys_windows.go
@@ -22,25 +22,8 @@ const (
sysAF_INET6 = windows.AF_INET6
sysSOCK_RAW = windows.SOCK_RAW
-)
-
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]uint8
-}
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
-const (
- sizeofSockaddrInet = 0x10
+ sizeofSockaddrInet4 = 0x10
sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go
index 79f3bdd5b9d..00691bd5244 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go
@@ -34,27 +34,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]uint8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go
index 150f980f527..5acf6db6ea5 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go
index a686c952855..98dcfe412a9 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go
index 150f980f527..5acf6db6ea5 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go
index a686c952855..98dcfe412a9 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go
index d45c197e26d..636d129aeef 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go
index ffec860ea82..87707fed019 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go
index aa701ab6767..7db7781129b 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go
index ffec860ea82..87707fed019 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go
index aa701ab6767..7db7781129b 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go
index 0c847bee7a4..4c19269bee0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go
@@ -29,25 +29,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go
index 0c847bee7a4..4c19269bee0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go
@@ -29,25 +29,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go
index 0c847bee7a4..4c19269bee0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go
@@ -29,25 +29,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go
index 0c847bee7a4..4c19269bee0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go
@@ -29,25 +29,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go
new file mode 100644
index 00000000000..59b71da5716
--- /dev/null
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go
@@ -0,0 +1,35 @@
+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
+// cgo -godefs defs_linux.go
+
+package socket
+
+type iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type mmsghdr struct {
+ Hdr msghdr
+ Len uint32
+}
+
+type cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+const (
+ sizeofIovec = 0x8
+ sizeofMsghdr = 0x1c
+)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go
index 12ec2e42b88..c066272ddd1 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go
@@ -34,25 +34,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go
index 15e2aecaaba..3dcd5c8eda0 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go
@@ -32,25 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- X__pad [8]uint8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x38
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go
index 6b72d24dd93..f95572dc00a 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go
@@ -29,27 +29,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go
index 9aaa4ab1caf..a92fd60e4d5 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go
@@ -32,27 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go
index 6b72d24dd93..f95572dc00a 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go
@@ -29,27 +29,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go
index 9aaa4ab1caf..a92fd60e4d5 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go
@@ -32,27 +32,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go
index 3ec8d42fee8..e792ec2115e 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go
index ea0ee008d7d..b68ff2d57f5 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go
index 3ec8d42fee8..e792ec2115e 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x8
sizeofMsghdr = 0x1c
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go
index ea0ee008d7d..b68ff2d57f5 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go
@@ -26,27 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_mips64.go
index 0112832400b..3c9576e2d83 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_mips64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_mips64.go
@@ -24,27 +24,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Len uint8
- Family uint8
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Len uint8
- Family uint8
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x1c
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go
index 48b2b591f67..359cfec40ad 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go
@@ -26,26 +26,7 @@ type cmsghdr struct {
Type int32
}
-type sockaddrInet struct {
- Family uint16
- Port uint16
- Addr [4]byte /* in_addr */
- Zero [8]int8
-}
-
-type sockaddrInet6 struct {
- Family uint16
- Port uint16
- Flowinfo uint32
- Addr [16]byte /* in6_addr */
- Scope_id uint32
- X__sin6_src_id uint32
-}
-
const (
sizeofIovec = 0x10
sizeofMsghdr = 0x30
-
- sizeofSockaddrInet = 0x10
- sizeofSockaddrInet6 = 0x20
)
diff --git a/vendor/golang.org/x/net/internal/socket/zsys_zos_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_zos_s390x.go
index 514ca3754d4..49b62c8561a 100644
--- a/vendor/golang.org/x/net/internal/socket/zsys_zos_s390x.go
+++ b/vendor/golang.org/x/net/internal/socket/zsys_zos_s390x.go
@@ -25,8 +25,4 @@ type cmsghdr struct {
Type int32
}
-const (
- sizeofCmsghdr = 12
- sizeofSockaddrInet = 16
- sizeofSockaddrInet6 = 28
-)
+const sizeofCmsghdr = 12
diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go
index 6fef740f2ff..b7385dfd95a 100644
--- a/vendor/golang.org/x/net/ipv4/control_bsd.go
+++ b/vendor/golang.org/x/net/ipv4/control_bsd.go
@@ -14,11 +14,13 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
func marshalDst(b []byte, cm *ControlMessage) []byte {
m := socket.ControlMessage(b)
- m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len)
+ m.MarshalHeader(iana.ProtocolIP, unix.IP_RECVDSTADDR, net.IPv4len)
return m.Next(net.IPv4len)
}
@@ -31,7 +33,7 @@ func parseDst(cm *ControlMessage, b []byte) {
func marshalInterface(b []byte, cm *ControlMessage) []byte {
m := socket.ControlMessage(b)
- m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink)
+ m.MarshalHeader(iana.ProtocolIP, sockoptReceiveInterface, syscall.SizeofSockaddrDatalink)
return m.Next(syscall.SizeofSockaddrDatalink)
}
diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go
index b0a8dbe4e25..0e748dbdc46 100644
--- a/vendor/golang.org/x/net/ipv4/control_pktinfo.go
+++ b/vendor/golang.org/x/net/ipv4/control_pktinfo.go
@@ -13,11 +13,13 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
m := socket.ControlMessage(b)
- m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo)
+ m.MarshalHeader(iana.ProtocolIP, unix.IP_PKTINFO, sizeofInetPktinfo)
if cm != nil {
pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0]))
if ip := cm.Src.To4(); ip != nil {
diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go
index edce30f1261..2413e02f8f2 100644
--- a/vendor/golang.org/x/net/ipv4/control_unix.go
+++ b/vendor/golang.org/x/net/ipv4/control_unix.go
@@ -12,6 +12,8 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
@@ -65,7 +67,7 @@ func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) er
func marshalTTL(b []byte, cm *ControlMessage) []byte {
m := socket.ControlMessage(b)
- m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1)
+ m.MarshalHeader(iana.ProtocolIP, unix.IP_RECVTTL, 1)
return m.Next(1)
}
diff --git a/vendor/golang.org/x/net/ipv4/control_zos.go b/vendor/golang.org/x/net/ipv4/control_zos.go
index 04420003e02..de11c42e559 100644
--- a/vendor/golang.org/x/net/ipv4/control_zos.go
+++ b/vendor/golang.org/x/net/ipv4/control_zos.go
@@ -10,11 +10,13 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
m := socket.ControlMessage(b)
- m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo)
+ m.MarshalHeader(iana.ProtocolIP, unix.IP_PKTINFO, sizeofInetPktinfo)
if cm != nil {
pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0]))
if ip := cm.Src.To4(); ip != nil {
diff --git a/vendor/golang.org/x/net/ipv4/sys_aix.go b/vendor/golang.org/x/net/ipv4/sys_aix.go
index b0b69d9c02c..02730cdfd27 100644
--- a/vendor/golang.org/x/net/ipv4/sys_aix.go
+++ b/vendor/golang.org/x/net/ipv4/sys_aix.go
@@ -14,26 +14,31 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
+// IP_RECVIF is defined on AIX but doesn't work. IP_RECVINTERFACE must be used instead.
+const sockoptReceiveInterface = unix.IP_RECVINTERFACE
+
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
- ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
- ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+ ctlTTL: {unix.IP_RECVTTL, 1, marshalTTL, parseTTL},
+ ctlDst: {unix.IP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+ ctlInterface: {unix.IP_RECVINTERFACE, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
- ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 1}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVINTERFACE, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go
index fbfe4af69d2..54eb9901b5f 100644
--- a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go
+++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go
@@ -12,6 +12,8 @@ import (
"unsafe"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) {
@@ -19,7 +21,7 @@ func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) {
if _, err := so.Get(c, b); err != nil {
return nil, err
}
- mreqn := (*ipMreqn)(unsafe.Pointer(&b[0]))
+ mreqn := (*unix.IPMreqn)(unsafe.Pointer(&b[0]))
if mreqn.Ifindex == 0 {
return nil, nil
}
@@ -31,13 +33,13 @@ func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) {
}
func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error {
- var mreqn ipMreqn
+ var mreqn unix.IPMreqn
if ifi != nil {
mreqn.Ifindex = int32(ifi.Index)
}
if grp != nil {
mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]}
}
- b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn]
+ b := (*[unix.SizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:unix.SizeofIPMreqn]
return so.Set(c, b)
}
diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go
index 8074f9898c3..e191b2f14f9 100644
--- a/vendor/golang.org/x/net/ipv4/sys_bsd.go
+++ b/vendor/golang.org/x/net/ipv4/sys_bsd.go
@@ -13,26 +13,30 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
+const sockoptReceiveInterface = unix.IP_RECVIF
+
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
- ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
- ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+ ctlTTL: {unix.IP_RECVTTL, 1, marshalTTL, parseTTL},
+ ctlDst: {unix.IP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+ ctlInterface: {unix.IP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
- ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 1}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go
index ac213c73509..cac6f3cace0 100644
--- a/vendor/golang.org/x/net/ipv4/sys_darwin.go
+++ b/vendor/golang.org/x/net/ipv4/sys_darwin.go
@@ -11,34 +11,38 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
+const sockoptReceiveInterface = unix.IP_RECVIF
+
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
- ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
- ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
- ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
+ ctlTTL: {unix.IP_RECVTTL, 1, marshalTTL, parseTTL},
+ ctlDst: {unix.IP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+ ctlInterface: {unix.IP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+ ctlPacketInfo: {unix.IP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
- ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: unix.SizeofIPMreqn}, typ: ssoTypeIPMreqn},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_STRIPHDR, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVPKTINFO, Len: 4}},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go
index 859764f33a5..0620d0e1eab 100644
--- a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go
+++ b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go
@@ -10,26 +10,30 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
+const sockoptReceiveInterface = unix.IP_RECVIF
+
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
- ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
- ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+ ctlTTL: {unix.IP_RECVTTL, 1, marshalTTL, parseTTL},
+ ctlDst: {unix.IP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+ ctlInterface: {unix.IP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
- ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go
index 482873d9a15..89612287596 100644
--- a/vendor/golang.org/x/net/ipv4/sys_freebsd.go
+++ b/vendor/golang.org/x/net/ipv4/sys_freebsd.go
@@ -13,38 +13,42 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
+const sockoptReceiveInterface = unix.IP_RECVIF
+
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
- ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
- ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+ ctlTTL: {unix.IP_RECVTTL, 1, marshalTTL, parseTTL},
+ ctlDst: {unix.IP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+ ctlInterface: {unix.IP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}},
- ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVDSTADDR, Len: 4}},
+ ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVIF, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
func init() {
freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate")
if freebsdVersion >= 1000000 {
- sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}
+ sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: unix.SizeofIPMreqn}, typ: ssoTypeIPMreqn}
}
if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" {
archs, _ := syscall.Sysctl("kern.supported_archs")
diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go
index cf755c7fbaf..4588a5f3e2e 100644
--- a/vendor/golang.org/x/net/ipv4/sys_linux.go
+++ b/vendor/golang.org/x/net/ipv4/sys_linux.go
@@ -11,31 +11,32 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
"golang.org/x/sys/unix"
)
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL},
- ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
+ ctlTTL: {unix.IP_TTL, 1, marshalTTL, parseTTL},
+ ctlPacketInfo: {unix.IP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: unix.SizeofIPMreqn}, typ: ssoTypeIPMreqn},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 4}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_PKTINFO, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: unix.ICMP_FILTER, Len: sizeofICMPFilter}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go
index 832fef1e2e2..0bb9f3e3643 100644
--- a/vendor/golang.org/x/net/ipv4/sys_solaris.go
+++ b/vendor/golang.org/x/net/ipv4/sys_solaris.go
@@ -11,29 +11,33 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
+const sockoptReceiveInterface = unix.IP_RECVIF
+
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlTTL: {sysIP_RECVTTL, 4, marshalTTL, parseTTL},
- ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
+ ctlTTL: {unix.IP_RECVTTL, 4, marshalTTL, parseTTL},
+ ctlPacketInfo: {unix.IP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
}
sockOpts = map[int]sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}},
- ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}},
- ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 1}},
+ ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVTTL, Len: 4}},
+ ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVPKTINFO, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go
index b0913d539c3..c5e950633c7 100644
--- a/vendor/golang.org/x/net/ipv4/sys_windows.go
+++ b/vendor/golang.org/x/net/ipv4/sys_windows.go
@@ -7,34 +7,15 @@ package ipv4
import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/windows"
)
const (
- // See ws2tcpip.h.
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
- sysIP_DONTFRAGMENT = 0xe
- sysIP_ADD_SOURCE_MEMBERSHIP = 0xf
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x10
- sysIP_PKTINFO = 0x13
-
- sizeofInetPktinfo = 0x8
sizeofIPMreq = 0x8
sizeofIPMreqSource = 0xc
)
-type inetPktinfo struct {
- Addr [4]byte
- Ifindex int32
-}
-
type ipMreq struct {
Multiaddr [4]byte
Interface [4]byte
@@ -51,17 +32,13 @@ var (
ctlOpts = [ctlMax]ctlOpt{}
sockOpts = map[int]*sockOpt{
- ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}},
- ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}},
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}},
- ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_TOS, Len: 4}},
+ ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_TTL, Len: 4}},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_MULTICAST_TTL, Len: 4}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_MULTICAST_LOOP, Len: 4}},
+ ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_HDRINCL, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: windows.IP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq},
}
)
-
-func (pi *inetPktinfo) setIfindex(i int) {
- pi.Ifindex = int32(i)
-}
diff --git a/vendor/golang.org/x/net/ipv4/sys_zos.go b/vendor/golang.org/x/net/ipv4/sys_zos.go
index 7426606cff3..be206409878 100644
--- a/vendor/golang.org/x/net/ipv4/sys_zos.go
+++ b/vendor/golang.org/x/net/ipv4/sys_zos.go
@@ -11,24 +11,26 @@ import (
"golang.org/x/net/internal/iana"
"golang.org/x/net/internal/socket"
+
+ "golang.org/x/sys/unix"
)
var (
ctlOpts = [ctlMax]ctlOpt{
- ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
+ ctlPacketInfo: {unix.IP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
}
sockOpts = map[int]*sockOpt{
- ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}},
- ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}},
- ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}},
- ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}},
- ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
- ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
- ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_TTL, Len: 1}},
+ ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_IF, Len: 4}},
+ ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_MULTICAST_LOOP, Len: 1}},
+ ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.IP_RECVPKTINFO, Len: 4}},
+ ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq},
+ ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
+ ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: unix.MCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq},
}
)
diff --git a/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go
index d6f24754e5a..b7f2d6e5c18 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go
@@ -8,23 +8,6 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x20
- sysIP_RECVTTL = 0x22
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
-
sizeofIPMreq = 0x8
)
diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go
index e05a251ba07..6c1b7056428 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_darwin.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_darwin.go
@@ -4,45 +4,11 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_STRIPHDR = 0x17
- sysIP_RECVTTL = 0x18
- sysIP_BOUND_IF = 0x19
- sysIP_PKTINFO = 0x1a
- sysIP_RECVPKTINFO = 0x1a
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
- sysIP_MULTICAST_VIF = 0xe
- sysIP_MULTICAST_IFINDEX = 0x42
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x46
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
- sysIP_BLOCK_SOURCE = 0x48
- sysIP_UNBLOCK_SOURCE = 0x49
- sysMCAST_JOIN_GROUP = 0x50
- sysMCAST_LEAVE_GROUP = 0x51
- sysMCAST_JOIN_SOURCE_GROUP = 0x52
- sysMCAST_LEAVE_SOURCE_GROUP = 0x53
- sysMCAST_BLOCK_SOURCE = 0x54
- sysMCAST_UNBLOCK_SOURCE = 0x55
-
sizeofSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -75,12 +41,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr [4]byte /* in_addr */
Sourceaddr [4]byte /* in_addr */
diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go
index 6d65e9fcb81..2155df130a8 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go
@@ -4,24 +4,6 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_RECVTTL = 0x41
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_MULTICAST_VIF = 0xe
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
-
sizeofIPMreq = 0x8
)
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go
index 136e2b8f1d6..ae40482a8f7 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go
@@ -4,45 +4,10 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_SENDSRCADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_ONESBCAST = 0x17
- sysIP_BINDANY = 0x18
- sysIP_RECVTTL = 0x41
- sysIP_MINTTL = 0x42
- sysIP_DONTFRAG = 0x43
- sysIP_RECVTOS = 0x44
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
- sysIP_MULTICAST_VIF = 0xe
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x46
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
- sysIP_BLOCK_SOURCE = 0x48
- sysIP_UNBLOCK_SOURCE = 0x49
- sysMCAST_JOIN_GROUP = 0x50
- sysMCAST_LEAVE_GROUP = 0x51
- sysMCAST_JOIN_SOURCE_GROUP = 0x52
- sysMCAST_LEAVE_SOURCE_GROUP = 0x53
- sysMCAST_BLOCK_SOURCE = 0x54
- sysMCAST_UNBLOCK_SOURCE = 0x55
-
sizeofSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -69,12 +34,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr [4]byte /* in_addr */
Sourceaddr [4]byte /* in_addr */
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go
index 4f730f19ef3..901818671b7 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go
@@ -4,45 +4,10 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_SENDSRCADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_ONESBCAST = 0x17
- sysIP_BINDANY = 0x18
- sysIP_RECVTTL = 0x41
- sysIP_MINTTL = 0x42
- sysIP_DONTFRAG = 0x43
- sysIP_RECVTOS = 0x44
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
- sysIP_MULTICAST_VIF = 0xe
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x46
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
- sysIP_BLOCK_SOURCE = 0x48
- sysIP_UNBLOCK_SOURCE = 0x49
- sysMCAST_JOIN_GROUP = 0x50
- sysMCAST_LEAVE_GROUP = 0x51
- sysMCAST_JOIN_SOURCE_GROUP = 0x52
- sysMCAST_LEAVE_SOURCE_GROUP = 0x53
- sysMCAST_BLOCK_SOURCE = 0x54
- sysMCAST_UNBLOCK_SOURCE = 0x55
-
sizeofSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -69,12 +34,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr [4]byte /* in_addr */
Sourceaddr [4]byte /* in_addr */
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go
index 4f730f19ef3..901818671b7 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go
@@ -4,45 +4,10 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_SENDSRCADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_ONESBCAST = 0x17
- sysIP_BINDANY = 0x18
- sysIP_RECVTTL = 0x41
- sysIP_MINTTL = 0x42
- sysIP_DONTFRAG = 0x43
- sysIP_RECVTOS = 0x44
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
- sysIP_MULTICAST_VIF = 0xe
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x46
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
- sysIP_BLOCK_SOURCE = 0x48
- sysIP_UNBLOCK_SOURCE = 0x49
- sysMCAST_JOIN_GROUP = 0x50
- sysMCAST_LEAVE_GROUP = 0x51
- sysMCAST_JOIN_SOURCE_GROUP = 0x52
- sysMCAST_LEAVE_SOURCE_GROUP = 0x53
- sysMCAST_BLOCK_SOURCE = 0x54
- sysMCAST_UNBLOCK_SOURCE = 0x55
-
sizeofSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -69,12 +34,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr [4]byte /* in_addr */
Sourceaddr [4]byte /* in_addr */
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go
index ecebf327239..0feb9a7536d 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go
@@ -4,45 +4,10 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_SENDSRCADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_ONESBCAST = 0x17
- sysIP_BINDANY = 0x18
- sysIP_RECVTTL = 0x41
- sysIP_MINTTL = 0x42
- sysIP_DONTFRAG = 0x43
- sysIP_RECVTOS = 0x44
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
- sysIP_MULTICAST_VIF = 0xe
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x46
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
- sysIP_BLOCK_SOURCE = 0x48
- sysIP_UNBLOCK_SOURCE = 0x49
- sysMCAST_JOIN_GROUP = 0x50
- sysMCAST_LEAVE_GROUP = 0x51
- sysMCAST_JOIN_SOURCE_GROUP = 0x52
- sysMCAST_LEAVE_SOURCE_GROUP = 0x53
- sysMCAST_BLOCK_SOURCE = 0x54
- sysMCAST_UNBLOCK_SOURCE = 0x55
-
sizeofSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -69,12 +34,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr [4]byte /* in_addr */
Sourceaddr [4]byte /* in_addr */
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
index 1c7fdfa13af..d510357ca07 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
index 1c7fdfa13af..d510357ca07 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go
index 1c7fdfa13af..d510357ca07 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go
index 1c7fdfa13af..d510357ca07 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go
index 3c5ea54731e..29202e40117 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x84
sizeofGroupSourceReq = 0x104
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go
index ec9e2dbecca..e2edebdb812 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go
@@ -7,64 +7,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -105,12 +53,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go
index a04e785187a..eb10cc79bd1 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go
@@ -4,64 +4,12 @@
package ipv4
const (
- sysIP_TOS = 0x1
- sysIP_TTL = 0x2
- sysIP_HDRINCL = 0x3
- sysIP_OPTIONS = 0x4
- sysIP_ROUTER_ALERT = 0x5
- sysIP_RECVOPTS = 0x6
- sysIP_RETOPTS = 0x7
- sysIP_PKTINFO = 0x8
- sysIP_PKTOPTIONS = 0x9
- sysIP_MTU_DISCOVER = 0xa
- sysIP_RECVERR = 0xb
- sysIP_RECVTTL = 0xc
- sysIP_RECVTOS = 0xd
- sysIP_MTU = 0xe
- sysIP_FREEBIND = 0xf
- sysIP_TRANSPARENT = 0x13
- sysIP_RECVRETOPTS = 0x7
- sysIP_ORIGDSTADDR = 0x14
- sysIP_RECVORIGDSTADDR = 0x14
- sysIP_MINTTL = 0x15
- sysIP_NODEFRAG = 0x16
- sysIP_UNICAST_IF = 0x32
-
- sysIP_MULTICAST_IF = 0x20
- sysIP_MULTICAST_TTL = 0x21
- sysIP_MULTICAST_LOOP = 0x22
- sysIP_ADD_MEMBERSHIP = 0x23
- sysIP_DROP_MEMBERSHIP = 0x24
- sysIP_UNBLOCK_SOURCE = 0x25
- sysIP_BLOCK_SOURCE = 0x26
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x27
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
- sysIP_MSFILTER = 0x29
- sysMCAST_JOIN_GROUP = 0x2a
- sysMCAST_LEAVE_GROUP = 0x2d
- sysMCAST_JOIN_SOURCE_GROUP = 0x2e
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_MSFILTER = 0x30
- sysIP_MULTICAST_ALL = 0x31
-
- sysICMP_FILTER = 0x1
-
- sysSO_EE_ORIGIN_NONE = 0x0
- sysSO_EE_ORIGIN_LOCAL = 0x1
- sysSO_EE_ORIGIN_ICMP = 0x2
- sysSO_EE_ORIGIN_ICMP6 = 0x3
- sysSO_EE_ORIGIN_TXSTATUS = 0x4
- sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
-
sizeofKernelSockaddrStorage = 0x80
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
sizeofSockExtendedErr = 0x10
sizeofIPMreq = 0x8
- sizeofIPMreqn = 0xc
sizeofIPMreqSource = 0xc
sizeofGroupReq = 0x88
sizeofGroupSourceReq = 0x108
@@ -102,12 +50,6 @@ type ipMreq struct {
Interface [4]byte /* in_addr */
}
-type ipMreqn struct {
- Multiaddr [4]byte /* in_addr */
- Address [4]byte /* in_addr */
- Ifindex int32
-}
-
type ipMreqSource struct {
Multiaddr uint32
Interface uint32
diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go
index 8cfc648ad7e..a2ef2f6d6d2 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go
@@ -4,23 +4,6 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x14
- sysIP_RECVTTL = 0x17
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
-
sizeofIPMreq = 0x8
)
diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go
index 37629cb0ab5..b293a338f82 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go
@@ -4,23 +4,6 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x1e
- sysIP_RECVTTL = 0x1f
-
- sysIP_MULTICAST_IF = 0x9
- sysIP_MULTICAST_TTL = 0xa
- sysIP_MULTICAST_LOOP = 0xb
- sysIP_ADD_MEMBERSHIP = 0xc
- sysIP_DROP_MEMBERSHIP = 0xd
-
sizeofIPMreq = 0x8
)
diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go
index cb80a308b0e..e1a961bb618 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_solaris.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_solaris.go
@@ -4,49 +4,6 @@
package ipv4
const (
- sysIP_OPTIONS = 0x1
- sysIP_HDRINCL = 0x2
- sysIP_TOS = 0x3
- sysIP_TTL = 0x4
- sysIP_RECVOPTS = 0x5
- sysIP_RECVRETOPTS = 0x6
- sysIP_RECVDSTADDR = 0x7
- sysIP_RETOPTS = 0x8
- sysIP_RECVIF = 0x9
- sysIP_RECVSLLA = 0xa
- sysIP_RECVTTL = 0xb
-
- sysIP_MULTICAST_IF = 0x10
- sysIP_MULTICAST_TTL = 0x11
- sysIP_MULTICAST_LOOP = 0x12
- sysIP_ADD_MEMBERSHIP = 0x13
- sysIP_DROP_MEMBERSHIP = 0x14
- sysIP_BLOCK_SOURCE = 0x15
- sysIP_UNBLOCK_SOURCE = 0x16
- sysIP_ADD_SOURCE_MEMBERSHIP = 0x17
- sysIP_DROP_SOURCE_MEMBERSHIP = 0x18
- sysIP_NEXTHOP = 0x19
-
- sysIP_PKTINFO = 0x1a
- sysIP_RECVPKTINFO = 0x1a
- sysIP_DONTFRAG = 0x1b
-
- sysIP_BOUND_IF = 0x41
- sysIP_UNSPEC_SRC = 0x42
- sysIP_BROADCAST_TTL = 0x43
- sysIP_DHCPINIT_IF = 0x45
-
- sysIP_REUSEADDR = 0x104
- sysIP_DONTROUTE = 0x105
- sysIP_BROADCAST = 0x106
-
- sysMCAST_JOIN_GROUP = 0x29
- sysMCAST_LEAVE_GROUP = 0x2a
- sysMCAST_BLOCK_SOURCE = 0x2b
- sysMCAST_UNBLOCK_SOURCE = 0x2c
- sysMCAST_JOIN_SOURCE_GROUP = 0x2d
- sysMCAST_LEAVE_SOURCE_GROUP = 0x2e
-
sizeofSockaddrStorage = 0x100
sizeofSockaddrInet = 0x10
sizeofInetPktinfo = 0xc
diff --git a/vendor/golang.org/x/net/ipv4/zsys_zos_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_zos_s390x.go
index 4bbfda07dc3..692abf68823 100644
--- a/vendor/golang.org/x/net/ipv4/zsys_zos_s390x.go
+++ b/vendor/golang.org/x/net/ipv4/zsys_zos_s390x.go
@@ -8,30 +8,6 @@
package ipv4
const (
- sysIP_ADD_MEMBERSHIP = 5
- sysIP_ADD_SOURCE_MEMBERSHIP = 12
- sysIP_BLOCK_SOURCE = 10
- sysIP_DEFAULT_MULTICAST_LOOP = 1
- sysIP_DEFAULT_MULTICAST_TTL = 1
- sysIP_DROP_MEMBERSHIP = 6
- sysIP_DROP_SOURCE_MEMBERSHIP = 13
- sysIP_MAX_MEMBERSHIPS = 20
- sysIP_MULTICAST_IF = 7
- sysIP_MULTICAST_LOOP = 4
- sysIP_MULTICAST_TTL = 3
- sysIP_OPTIONS = 1
- sysIP_PKTINFO = 101
- sysIP_RECVPKTINFO = 102
- sysIP_TOS = 2
- sysIP_UNBLOCK_SOURCE = 11
-
- sysMCAST_JOIN_GROUP = 40
- sysMCAST_LEAVE_GROUP = 41
- sysMCAST_JOIN_SOURCE_GROUP = 42
- sysMCAST_LEAVE_SOURCE_GROUP = 43
- sysMCAST_BLOCK_SOURCE = 44
- sysMCAST_UNBLOCK_SOURCE = 45
-
sizeofIPMreq = 8
sizeofSockaddrInet4 = 16
sizeofSockaddrStorage = 128
diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go
index 31a034c5deb..c2e368db1bc 100644
--- a/vendor/golang.org/x/net/publicsuffix/table.go
+++ b/vendor/golang.org/x/net/publicsuffix/table.go
@@ -2,7 +2,7 @@
package publicsuffix
-const version = "publicsuffix.org's public_suffix_list.dat, git revision f9f612a3386dd9a1e4a1892722e3418549520b49 (2020-11-30T21:55:23Z)"
+const version = "publicsuffix.org's public_suffix_list.dat, git revision 1e2388af5cee935fdec6dc557db41559111e3fb9 (2021-04-26T23:42:06Z)"
const (
nodesBitsChildren = 10
@@ -23,499 +23,506 @@ const (
)
// numTLD is the number of top level domains.
-const numTLD = 1513
+const numTLD = 1506
// Text is the combined text of all labels.
-const text = "9guacuiababia-goracleaningroks-theatree12hpalermomahachijolstere" +
- "trosnubalsfjordd-dnshome-webserverdal-o-g-i-n4tatsunobihirosakik" +
- "amijimatsuuragrocerybnikeisenbahnaturhistorisches3-ap-south-1bip" +
- "almasfjordenikonanporovnocpalmspringsakerbirdartcenterprisecloud" +
- "accesscambridgeiseiyoichippubetsubetsugarussiabirkenesoddtangeno" +
- "varahkkeravjuegoshikilatironrenderbirthplacevje-og-hornnes3-webs" +
- "ite-us-west-1bjarkoyukuhashimojin-the-bandain-vpncateringebuildi" +
- "ngladegreextraspace-to-rentalstomakomaibarabjerkreimbamblebesbyg" +
- "landroverhalla-speziaustevollaziobiramswatch-and-clockereviewsai" +
- "toshimattelekommunikationatuurwetenschappengine164-baltimore-og-" +
- "romsdalp1bjugnieznord-odalwaysdatabaseballangenkainanaejrietisal" +
- "atinabenonicatholicaxiaskimitsubatamibugattiffanyaaarborteaches-" +
- "yogasawara-rugbydgoszczecinemaceratabuseating-organicbcieszynino" +
- "hekinannestadiyurihonjournalistjohninomiyakonojorpelandnpanamats" +
- "uzakincheonirasakindianapolis-a-bloggerblackfridayusuharabloombe" +
- "rgbauernishiazaindianmarketinglassassinationalheritagebloxcms3-w" +
- "ebsite-us-west-2bluedagestangemologicallyngenishigoddabmoattachm" +
- "ents5yusuisservehttpanasonichernivtsiciliabmsakyotanabellunord-f" +
- "rontierbmwedeployuulmemsettlersalangenishiharabnrwegroweibologna" +
- "gareyamakeupowiatmallorcafederation-webhopencraftrainingleezebom" +
- "loabathsbchernovtsyncloudrangedalondrinamsskoganeindielddanuorri" +
- "ndigenaklodzkodairabondigitaloceanographicsxboxenishiizunazukind" +
- "owapblogsiteleafamilycompany-2bonnishikataketomisatomobellevuelo" +
- "sangelesjabbottjeldsundray-dnstracebookinghosted-by-previderboom" +
- "lair-traffic-controlleyuzawaboschaefflerdalorenskoglitcheltenham" +
- "-radio-opensocialottebostikariyameiwamarugame-hostedpictetjmaxxx" +
- "finitybostonakijinsekikogentappsalon-1botanicalgardenishikatsura" +
- "git-reposaltdalottokonamegatakayamassa-carrara-massacarraramassa" +
- "businessebykleclerchirurgiens-dentistes-en-francebotanicgardenis" +
- "hikawazukamishihoronobeauxartsandcraftsaludrayddnsfreebox-osasco" +
- "li-picenordlandraydnsupdaterbotanychiryukyuragifuchungbukharauma" +
- "lborkarlsoybouncemerckmsdnipropetrovskjervoyageorgeorgiabounty-f" +
- "ullensakerrypropertiesalvadordalibabalena-devicesalzburgliwicebo" +
- "utiquebechitachinakagawatchandclockarmoybozen-sudtirolouvrehabme" +
- "rbozen-suedtirolowiczest-le-patronishimerabplaceducatorahimeshim" +
- "amateraholtalenishinomiyashironohtawaramotoineppueblockbusternii" +
- "minamiawajikindustriabrandywinevalleybrasiliabrindisibenikimobet" +
- "suitaipeigersundrivefsnillfjordrobaknoluoktachikawafflecellcube-" +
- "serverbristoloseyouriparachutinglobalashovhachinohedmarkarpaczel" +
- "adzlgloboavistanbulsan-sudtirolpusercontentjomeloyalistoragebrit" +
- "ishcolumbialowiezaganishinoomotegomniweatherchannelubindalublind" +
- "esnesamegawabroadcastlebtimnetzparaglidinglogoweirbroadwaybroke-" +
- "itvedestrandrudupontariobranconakaniikawatanagurabrokerbronnoysu" +
- "ndurbanamexhibitionishinoshimatsushigebrothermesaverdeatnulvikar" +
- "uizawabrowsersafetymarketsamnangerbrumunddalucaniabrunelastxjava" +
- "ld-aostarnbergloppenzaolbia-tempio-olbiatempioolbialystokkembuch" +
- "ikumagayagawakayamagentositecnologiabrusselsampalacebruxellesams" +
- "clubartowellbeingzonebryansklepparisor-fronishiokoppegardurhambu" +
- "rglugsjcbnpparibaselburgmbhartipsselfiparliamentjxn--0trq7p7nnis" +
- "hitosashimizunaminamibosogndaluccargodaddyn-o-saurlandesamsungmi" +
- "nakamichiharabrynewhollandynathomebuiltwithdarkarumaifarmsteadyn" +
- "dns-at-homedepotenzamamidsundyndns-at-workisboringmodellingmxn--" +
- "11b4c3dyndns-blogdnsandnessjoenishiwakindustriesteamfamberkeleyb" +
- "uskerudyndns-freeboxoslocus-4buzentsujiiebuzzwesteuropenairbusan" +
- "tiquest-a-la-maisondre-landroidyndns-homednsandoybwestfalenissan" +
- "diegomurabzhitomirumalatvuopmicrolightingretakamoriokakudamatsue" +
- "bzzcompute-1computerhistoryofscience-fictioncomsecaaskoyabearalv" +
- "ahkijobservableusercontentoyotsukaidocondoshichinohealth-careref" +
- "ormitakeharaconferenceconstructionconsuladoesntexisteingeekashiw" +
- "araconsultanthropologyconsultingrongausdalcontactoyouracontagema" +
- "tsubaracontemporaryarteducationalchikugodogadollsapporocontracto" +
- "rskenconventureshinodeartheworkpccwhoswhokksundyndns1cookingchan" +
- "nelsdvrdnsdojoburgrossetouchihayaakasakawaharacoolcooperativano-" +
- "frankivskolefrakkestadynnsardegnaroycopenhagencyclopedichonanbul" +
- "san-suedtirolukowestus2coproductionsardiniacorporationcorsicanon" +
- "oichinomiyakecorvettemp-dnsarlcosenzakopanelastycoffeedbackplane" +
- "applinzinzais-a-candidatecosidnsfor-better-thanawatchesarpsborgr" +
- "oundhandlingroznynysaintlouis-a-anarchistoireggio-emilia-romagna" +
- "katombetsumitakagiizecostumedicinagatorodoycouchpotatofriesarufu" +
- "tsunomiyawakasaikaitabashikaoizumizakis-a-caterercoukashiwazakiy" +
- "okawaracouncilcouponsasayamayfirstockholmestrandynservebbsasebof" +
- "ageologycozoracqcxn--12co0c3b4evalleaostavangercranbrookuwanalyt" +
- "icsaskatchewancrdynuniversitycreditcardynv6creditunioncremonashg" +
- "abadaddjaguarqhachiojiyaizuwakamatsubushikusakadogawacrewiencric" +
- "ketrzyncrimeast-kazakhstanangercrotonexus-3crownipartsassaris-a-" +
- "celticsfancrsvps-hostrolekagoshimalopolskanlandynvpnpluscountrye" +
- "stateofdelawareclaimsaudacruisesauheradyroyrvikingrpartycryptono" +
- "michigangwoncuisinellajollamericanexpressexyculturalcentertainme" +
- "ntoystre-slidrettozawacuneocupcakecuritibaghdadcurvalled-aostave" +
- "rncymrunjargacyonabarumetacentrumeteorappasadenarashinocyouthruh" +
- "erecifedexeterferrarivneferrerotikakamigaharafetsundfguidell-ogl" +
- "iastraderfhskydivinguitarsavonarusawafhvalerfidontexistmein-iser" +
- "vebeerfieldfigueresinstagingujoinvilleirvikasserversaillesaxofil" +
- "ateliafilegear-audnedalnfilegear-debianfilegear-gbizfilegear-ief" +
- "ilegear-jpmorganfilegear-sg-1filminamifuranofinalfinancefinearts" +
- "choenbrunnfinlandfinnoyfirebaseappassagenschokokekschokoladenfir" +
- "enetrani-andria-barletta-trani-andriafirenzefirestonefirmdalegni" +
- "capetownnews-stagingulenfishingoldpoint2thisamitsukefitjarvodkaf" +
- "jordvagsoygardenflfanquanpachigasakievennodesabaerobaticketschol" +
- "arshipschoolsztynsettsurgeonshalloffameldalfitnessettlementrania" +
- "ndriabarlettatraniandriafjalerflesbergunmansionschulezajskasukab" +
- "edzin-berlindasdaburflickragerogerschulserverflightschwarzgwangj" +
- "uifminamiiserniaflirfloginlinefloraflorencefloridatsunanjoetsuwa" +
- "nouchikujogaszkolancashirecipescaravantaarpassenger-associationf" +
- "loripaderbornfloristanohatajiris-a-chefashionflorokunohealthcare" +
- "erschweizflowersciencecentersciencehistoryfltranoyflynnhosting-c" +
- "lusterfndfnwkasumigaurayasudafoodnetworkdalfor-ourfor-somedizinh" +
- "istorischescientistordalfor-theaterforexrothachirogatakanabeauty" +
- "sfjordforgotdnscjohnsonforli-cesena-forlicesenaforlikescandyn53f" +
- "orsalegolffanscrapper-siteforsandasuoloftranslatefortalfortextil" +
- "eikangerfortmissoulancasterfortworthadanorth-kazakhstanfosnescra" +
- "ppinguovdageaidnunusualpersonfotaruis-a-conservativegarsheis-a-c" +
- "padualstackasuyanaizuerichardlillesandefjordfoxafozfrancaisehara" +
- "franziskanerimaringatlantakahamalvikaszubyfredrikstadtvscrysecur" +
- "itytacticservehumourfreeddnsgeekgalaxyfreedesktopocznordreisa-ho" +
- "ckeynutazurestaticappspotagerfreemasonryfreesitefreetlserveircho" +
- "shibuyahabackyardsangomutashinainfinitintelligencefreiburgushika" +
- "mifuranorfolkebibleitungsenfreseniusculturecreationfribourgwiddl" +
- "eksvikatowicefriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriul" +
- "i-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giulia" +
- "friulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagi" +
- "uliafriulivgiuliafrlfroganserveminecraftransportefrognfrolandfro" +
- "m-akrehamnfrom-alfrom-arfrom-azurewebsiteshikagamiishibukawalbrz" +
- "ycharternopilawalesundfrom-capitalonewjerseyfrom-cogxn--1ctwolom" +
- "inamatargitlaborfrom-ctransurlfrom-dchoyodobashichikashukujitawa" +
- "ravennagasakinderoyfrom-dedyn-berlincolnfrom-flanderservemp3from" +
- "-gaulardalfrom-hichisochildrensgardenfrom-iafrom-idfrom-ilfrom-i" +
- "n-brbar1from-kservep2patriafrom-kyowariasahikawafrom-lanciafrom-" +
- "mamurogawafrom-mdfrom-meeresistancefrom-mifunefrom-mnfrom-modale" +
- "nfrom-mservepicservequakefrom-mtnfrom-nctulangevagrigentomologye" +
- "onggiehtavuoatnabudapest-a-la-masion-rancherkasydneyfrom-ndfrom-" +
- "nefrom-nh-serveblogspotrapaniizafrom-njservesarcasmatartanddesig" +
- "nfrom-nminamiizukaminoyamaxunispacefrom-nvalledaostaobaomoriguch" +
- "iharag-cloud-charitychyattorneyagawakepnogatagajobojis-a-cubicle" +
- "-slavellinodeobjectservicesevastopolefrom-nyminamimakis-a-democr" +
- "atravelchannelfrom-ohdattorelayfrom-oketogurafrom-orfrom-padovak" +
- "sdalfrom-pratohmandalfrom-ris-a-designerfrom-schmidtre-gauldalfr" +
- "om-sdfrom-tnfrom-txn--1lqs03nfrom-utsiracusagamiharafrom-val-dao" +
- "stavalleyfrom-vtravelersinsurancefrom-wafrom-wiardwebredirectmee" +
- "trdfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wolawafroyait" +
- "akaharunzenfstcgroupaviancarrierfujiiderafujikawaguchikonefujimi" +
- "nokamoenairguardiannakadomarinebraskaunicommbankatsushikabeelden" +
- "geluidvallee-d-aosteigenfujinomiyadattowebcampinashikiminohostfo" +
- "ldnavyfujiokayamangonohejis-a-doctorayfujisatoshonairlinedre-eik" +
- "erfujisawafujishiroishidakabiratoridefenseljordfujitsurugashiman" +
- "gyshlakasamatsudoomdnsiskinkyotobetsumidatlantichristiansburgrim" +
- "stadyndns-mailutskashibatakatorinternationalfirearmsanjotlon-2fu" +
- "jixeroxfordefinimakanegasakinkobierzycefujiyoshidavvenjargap-nor" +
- "theast-3fukayabeatsevenassisicilyfukuchiyamadavvesiidappnodebala" +
- "ncertificationfukudomigawafukuis-a-financialadvisor-aurdalfukumi" +
- "tsubishigakirovogradoyfukuokazakiryuohkurafukuroishikarikaturind" +
- "alfukusakisarazure-mobileirfjordfukuyamagatakahashimamakishiwada" +
- "zaifudaigojomedio-campidano-mediocampidanomediofunabashiriuchina" +
- "dafunagatakahatakaishimoichinosekigaharafunahashikamiamakusatsum" +
- "asendaisennangooglecodespotrendhostingfundaciofunkfeuerfuoiskuju" +
- "kuriyamaniwakuratefuosskoczowiiheyakumoduminamiminowafurnituregg" +
- "io-calabriafurubirafurudonostiaafurukawairportland-4-salernobori" +
- "betsucksharis-a-geekatsuyamarumorimachidafusodegaurafussaikisofu" +
- "kushimannore-og-uvdalfutabayamaguchinomihachimanagementrentin-su" +
- "d-tirolfutboldlygoingnowhere-for-morenakasatsunairtelebitbridges" +
- "toneendoftheinternethnologyfuttsurugimperiafuturecmsharpfizerfut" +
- "urehostingfuturemailingfvgfyresdalhangglidinghangoutsystemscloud" +
- "hannanmokuizumodenakayamanxn--1lqs71dhannortonhanyuzenhapmirclou" +
- "dplatform0harstadharvestcelebrationhasamaoris-a-hunterhasaminami" +
- "-alpshimokawahashbanghasudahasura-appgfoggiahasvikautokeinotogaw" +
- "ahatoyamazakitahiroshimapartmentshimokitayamahatsukaichikaiseihe" +
- "ijis-a-knightpointtohobby-sitehattfjelldalhayashimamotobungotaka" +
- "dancehazuminobusells-for-ustkanmakiwakunigamiharutwentehelsinkit" +
- "akamiizumisanofidelitysvardonnakamuratajimidorittogliattis-a-lan" +
- "dscaperugiahembygdsforbundhemneshimonitayanagitappharmacienshimo" +
- "nosekikawahemsedalhepforgeherokussldheroyhgtvalleeaosteinkjerusa" +
- "lembroideryhidorahigashiagatsumagoianiahigashichichibunkyonanaos" +
- "himageandsoundandvisionthewifiatrentin-sued-tirolhigashihiroshim" +
- "anehigashiizumozakitakatakaokaluganskygearappharmacyshimosuwalki" +
- "s-a-lawyerhigashikagawahigashikagurasoedahigashikawakitaaikitaky" +
- "ushuaiahigashikurumegurownproviderhigashimatsushimarburghigashim" +
- "atsuyamakitaakitadaitoigawahigashimurayamamotorcycleshimotsukehi" +
- "gashinarusells-itrentin-suedtirolhigashinehigashiomitamamurausuk" +
- "itamihamadahigashiosakasayamanakakogawahigashishirakawamatakaraz" +
- "ukamakurazakitamotosumy-gatewayhigashisumiyoshikawaminamiaikitan" +
- "akagusukumodernhigashitsunosegawahigashiurawa-mazowszexnetrentin" +
- "o-a-adigehigashiyamatokoriyamanashiibahccavuotnagaragusadocktera" +
- "mo-siemenscaledogawarabikomaezakirunoipirangalsacentralus-2higas" +
- "hiyodogawahigashiyoshinogaris-a-liberalhiraizumisatohnoshoooshik" +
- "amaishimofusartshimotsumahirakatashinagawahiranairtrafficplexus-" +
- "1hirarahiratsukaeruhirayakagehistorichouseshinichinanhitachiomiy" +
- "agildeskaliszhitachiotagoppdalhitraeumtgeradeloittenrissagaerocl" +
- "ubmedecincinnationwidealstahaugesunderseaportsinfolionetworkange" +
- "rhjartdalhjelmelandholeckochikushinonsenergyholidayhomegoodshinj" +
- "ournalismailillehammerfeste-iphdfcbankazoologyhomeiphiladelphiaa" +
- "readmyblogsytehomelinkyard-cloudnshinjukumanowruzhgorodeohomelin" +
- "uxn--1qqw23ahomeofficehomesecuritymacaparecidahomesecuritypchris" +
- "tmaseratiresannanisshingucciprianidyndns-office-on-the-weberhome" +
- "senseeringhomeunixn--2m4a15ehondahongotembaixadahonjyoitakasagot" +
- "pantheonsitehornindalhorsellsyourhomeftphilatelyhortendofinterne" +
- "t-dnshinkamigototalhospitalhoteleshinshinotsurgeryhotmailhoyange" +
- "rhoylandetroitskypehumanitieshinshirohurdalhurumajis-a-libertari" +
- "anhyllestadhyogoris-a-linux-usershintokushimahyugawarahyundaiwaf" +
- "uneis-very-badajozis-a-nursembokukitchenis-very-evillageis-very-" +
- "goodyearis-very-niceis-very-sweetpepperis-with-thebandovre-eiker" +
- "isleofmanaustdaljenv-arubabizjeonnamerikawauejetztrentino-stirol" +
- "jevnakershusdecorativeartshiranukamitondabayashiogamagoriziajewe" +
- "lryjewishartgalleryjfkddiamondshiraois-a-painterhostsolutionshin" +
- "tomikasaharajgorajlljls-sto1jls-sto2jls-sto3jmphonefosshiraokami" +
- "tsuejnjaworznotairestaurantrentino-s-tiroljoyentrentino-sud-tiro" +
- "ljoyokaichibajddarchitecturealtorlandjpnjprshiratakahagithubuser" +
- "contentrentino-sudtiroljurkosaigawakosakaerodromegallupinbarclay" +
- "cards3-sa-east-1koseis-a-photographerokuapphilipsynology-disksta" +
- "tionkosherbrookegawakoshimizumakiyosemitekoshunantankhakassiakos" +
- "ugekotohiradomainsureggioemiliaromagnamsosnowiechurchaseljedugit" +
- "-pagespeedmobilizeroticahcesuoloansanokashiharakotourakouhokutam" +
- "akiyosunndalkounosupplieshitaramakouyamashikekouzushimashikizuno" +
- "kunimilitarykozagawakozakis-a-playershifteditchyouriphoenixn--2s" +
- "crj9chromedicaltanissettaishinomakindlecznagasukekozowildlifesty" +
- "lekpnkppspdnshizukuishimogosenkrasnikahokutokashikis-a-republica" +
- "ncerresearchaeologicaliforniakrasnodarkredstonekristiansandcatsh" +
- "izuokamogawakristiansundkrodsheradkrokstadelvaldaostarostwodzisl" +
- "awilliamhillkryminamioguni5kumatorinowtvaporcloudkumejimasoykume" +
- "nantokigawakunisakis-a-rockstarachowicekunitachiarailwaykunitomi" +
- "gusukumamotoyamashikokuchuokunneppubtlshoppingkunstsammlungkunst" +
- "unddesignkuokgrouphxn--32vp30haebaruericssongdalenviknakatsugawa" +
- "kuregruhostingkurgankurobelaudibleasingleshopwarendalenugkurogim" +
- "imatakatsukis-a-socialistdlibestadkuroisoftwarezzokuromatsunais-" +
- "a-soxfankurotakikawasakis-a-studentalkushirogawakustanais-a-teac" +
- "herkassyno-dshinyoshitomiokamisunagawakusupplynxn--3bst00minamis" +
- "anrikubetsupportrentino-sued-tirolkutchanelveruminamitanekutnoku" +
- "zumakis-a-techietis-a-llamarnardalkvafjordkvalsundkvamlidlugolek" +
- "adenagahamaroyerkvanangenkvinesdalkvinnheradkviteseidatingkvitso" +
- "ykwpspectruminamiuonumassivegridkzmisconfusedmishimasudamissilel" +
- "uxembourgmisugitokorozawamitourismilevangermitoyoakemiuramiyazur" +
- "econtainerdpolicemiyotamanomjondalenmlbfanmontrealestatefarmequi" +
- "pmentrentino-suedtirolmonza-brianzapposhoujis-an-actresshioyande" +
- "xcloudmonza-e-della-brianzaptokuyamatsumaebashimodatemonzabrianz" +
- "aramonzaebrianzamonzaedellabrianzamoonscaleforcemordoviamoriyama" +
- "tsumotofukemoriyoshiminamiashigaramormonstermoroyamatsunomortgag" +
- "emoscowinbarclays3-us-east-2moseushistorymosjoenmoskeneshowamoss" +
- "howtimelhusgardenmosvikharkovanylvenicemoteginowaniigatakamatsuk" +
- "awamoviemovimientokyotangotsukisosakitagawamozilla-iotrentinoa-a" +
- "digemtranbymuginozawaonsenmuikamiokameokameyamatotakadamukoebenh" +
- "avnmulhouseoullensvanguardmunakatanemuncienciamuosattemupiemonte" +
- "murmanskhersonmurotorcraftrentinoaadigemusashimurayamatsusakahog" +
- "inankokubunjis-an-anarchistoricalsocietymusashinoharamuseetrenti" +
- "noalto-adigemuseumverenigingmusicarrdmutsuzawamy-vigorgemy-wangg" +
- "ouvicircustomer-ocimdbananarepublic66myactivedirectorymyasustor-" +
- "elvdalmycdn77-sslattuminamiyamashirokawanabelembetsukubankharkiv" +
- "alleedaostemycloudswitcheshwindmillmydattolocalhistorymyddnsking" +
- "mydissentrentinoaltoadigemydobisshikis-an-artistgorymydroboehrin" +
- "gerikemydsienarutolgamyeffectrentinos-tirolmyfastblogermyfirewal" +
- "lonieruchomoscienceandindustrynmyforuminanomyfritzmyftpaccessigd" +
- "almyhome-servermyjinomykolaivareservegame-servermymailermymediap" +
- "cistrondheimmobilieniyodogawamyokohamamatsudamypepilotsilkhmelni" +
- "tskiyamarylandmypetsimple-urlmyphotoshibalatinombresciamypicture" +
- "sirdalmypsxn--3ds443gmysecuritycamerakermyshopblockslupskhmelnyt" +
- "skyivaomythic-beastslzmytis-a-bookkeeperspectakashimaritimoldelt" +
- "aiwanairforcebetsuikidsmynasushiobarackmazerbaijan-mayen-rootari" +
- "beiraogashimadachicagoboatsmolapymntrentinostirolmytuleaprendema" +
- "sakihokumakogenebakkeshibechambagriculturennebudejjuedischesapea" +
- "kebayernrtrentinosud-tirolmyvncitadeliverydyndns-remotewdyndns-s" +
- "erverisignmywireitrentinosudtirolpklabudhabikinokawabarthadselec" +
- "trentin-sudtirolplantsnoasakakinokiaplatformshangrilanxessokanag" +
- "awaplatter-appimientakinoueplatterpinkhplaystation-cloudplazaplc" +
- "itichocolatelevisionissayokkaichiropractichitosetogakushimotogan" +
- "ewportkmaxxn--12c1fe0bradescotlandyndns-iparmatta-varjjatksatxn-" +
- "-12cfi8ixb8lucerneplumbingoplurinacionalpodhaleviracloudletsoknd" +
- "alpodlasiellaktyubinskiptveterinaireadthedocscappgafannefrankfur" +
- "trentinosued-tirolpodzonepohlpoivronpokerpokrovskmpspbar2politic" +
- "artoonartdecologiapolitiendapolkowicepoltavalle-aostathellewismi" +
- "llerpomorzeszowindowskrakowinnersolarssonponpesaro-urbino-pesaro" +
- "urbinopesaromasvuotnaritakoelnponypordenonepornporsangerporsangu" +
- "geporsgrunnanyokoshibahikariwanumatakkofuefukihaboromskogpoznanp" +
- "raxis-a-bruinsfanprdpreservationpresidioprgmrprimetelemarknx-ser" +
- "versicherungprincipeprivatizehealthinsuranceprofesionalprogressi" +
- "venneslaskerrylogisticsolognepromombetsurfastvps-serveronakanoto" +
- "ddenpropertyprotectionprotonetrentinosuedtirolprudentialpruszkow" +
- "iosolundbeckomaganeprvcyberlevagangaviikanonjis-an-engineeringpr" +
- "zeworskogpulawypupioneerpvhagakhanamigawapvtrentinsud-tirolpwciv" +
- "ilaviationpzqldqotoyohashimotoolsomaqponiatowadaqslingqualifioap" +
- "pippugliaquickconnectrentinsudtirolquicksytestingquipelementsomn" +
- "arviikamisatokaizukamikitayamatsuris-an-entertainerqvcivilisatio" +
- "nsveiosvelvikomforbarcelonagawalmartattoolforgebinagisoccertmgra" +
- "zimuthatogayachimataiji234lima-cityeatselinogradultateshinanomac" +
- "himkentateyamaetnaamesjevuemielno-ipifony-1svizzerasvn-reposor-v" +
- "arangerswidnicasadelamonedapliernewmexicodyn-vpndnsorfoldswidnik" +
- "kokonoeswiebodzin-butterswiftcoverswinoujscienceandhistoryswissm" +
- "arterthanyousynology-dsorocabalestrandabergamoareketunkommunalfo" +
- "rbundturystykaniepcetuscanytushuissier-justicetuvalle-daostatics" +
- "oundcastronomy-routertuxfamilytwmailvestre-slidreplantationvestr" +
- "e-totennishiawakuravestvagoyvevelstadvibo-valentiavibovalentiavi" +
- "deovillasouthwest1-uslivinghistoryvinnicaseihicampobassociatest-" +
- "iservecounterstrikevinnytsiavipsinaappittsburghofficialvirginiav" +
- "irtual-userveexchangevirtualcloudvirtualservervirtualuserveftpiw" +
- "atevirtueeldomein-vigorlicevirtuelvisakegawaviterboknowsitallviv" +
- "olkenkundenvixn--3hcrj9clanbibaidarmeniavlaanderenvladikavkazimi" +
- "erz-dolnyvladimirvlogintoyonezawavminiservervologdanskommunevolv" +
- "olkswagentsowavolyngdalvoorloperauniterois-gonevossevangenvotevo" +
- "tingvotoyonowiwatsukiyonoshiroomgwloclawekomorotsukagawawmcloudw" +
- "mflabspeedpartnersoownextdirectrevisohughesorreisahayakawakamiic" +
- "hikawamisatottoris-bytomaritimekeepingworldworse-thandawowitdkom" +
- "onow-dnshisognewpdevcloudwpenginepoweredwritesthisblogwroclawith" +
- "googleapiszwtcircleverappsphinxn--3e0b707ewtfauskedsmokorsetagay" +
- "aseralingenoamishirasatogokasells-for-lessavannahgawuozuwzmiuwaj" +
- "imaxn--45q11clic20001wwwfarsundyndns-webhareidsbergentingripexn-" +
- "-4gbriminingxn--4it168dxn--4it797kongsbergxn--4pvxs4allxn--54b7f" +
- "ta0cclicketcloudcontrolapplicationcloud66xn--55qw42gxn--55qx5dxn" +
- "--5js045dxn--5rtp49clinichofunatoriginstitutemasekasaokamiminers" +
- "andvikcoromantovalle-d-aostatic-accessanfranciscofreakunemuroran" +
- "gecloudyclusterxn--5rtq34kongsvingerxn--5su34j936bgsgxn--5tzm5gx" +
- "n--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264cliniquen" +
- "oharaxn--80adxhkspjelkavikomatsushimarylhurstjordalshalsenxn--80" +
- "ao21axn--80aqecdr1axn--80asehdbarefootballooningjerdrumckinseyol" +
- "asitebinordre-landiscoveryggeebizenakanojohanamakinoharaustinnau" +
- "mburggfarmerseineastasiamuneues3-ap-southeast-2ix4432-balsan-sue" +
- "dtirolkuszczytnord-aurdalipayboltatarantours3-ap-northeast-2xn--" +
- "80aswgxn--80augustowithyoutuberspacekitagatargetmyiphosteurxn--8" +
- "ltr62koninjambylxn--8pvr4uxn--8y0a063axn--90a3academiamicable-mo" +
- "democraciaxn--90aeroportalabamagasakishimabaraogakibichuoxn--90a" +
- "ishobarakawagoexn--90azhytomyravendbargainstantcloudfunctionsncf" +
- "dishakotanavigationavoirmcpehimejibigawaustraliamusementdllpages" +
- "3-ca-central-1xn--9dbhblg6dietritonxn--9dbq2axn--9et52uxn--9krt0" +
- "0axn--andy-iraxn--aroport-byaotsurreyxn--asky-iraxn--aurskog-hla" +
- "nd-jnbarreauctionfabricagliaricoharuhrxn--avery-yuasakuhokkaidop" +
- "aaskvollxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbspreadbetti" +
- "ngxn--bck1b9a5dre4clintonoshoesantabarbaraxn--bdddj-mrabdxn--bea" +
- "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" +
- "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyasakaiminatoyoo" +
- "kaneyamazoexn--bjddar-ptarnobrzegyptianxn--blt-elabourxn--bmlo-g" +
- "raingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuaca" +
- "demy-firewall-gatewayxn--brnnysund-m8accident-investigation-apti" +
- "bleadpagesquare7xn--brum-voagatroandinosaurepaircraftingvollomba" +
- "rdiademonmouthagebostadxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarr" +
- "el-of-knowledgeappleborkaracoldwarszawaustrheimatunduhrennesoyok" +
- "osukanraukraanghkeymachineustargardds3-eu-central-1xn--c1avgxn--" +
- "c2br7gxn--c3s14minnesotaketakazakis-a-therapistoiaxn--cck2b3barr" +
- "ell-of-knowledgehirnufcfanavuotnapleskns3-us-gov-west-1xn--cckwc" +
- "xetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-int" +
- "o-animeinforumzxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a" +
- "2oxn--correios-e-telecomunicaes-ghc29axn--czr694barsycenterprise" +
- "sakikuchikuseikarugamvik-serverrankoshigayachiyodaejeonbukcoalph" +
- "a-myqnapcloud-fr1xn--czrs0trogstadxn--czru2dxn--czrw28barsyonlin" +
- "ewhampshirealtydalvdalaskanittedallasalleangaviikaascolipicenodu" +
- "members3-us-west-1xn--d1acj3bashkiriauthordalandgcapebretonamicr" +
- "osoftbank12xn--d1alfaromeoxn--d1atromsakatamayufuelblagrarchaeol" +
- "ogyeongbuk0xn--d5qv7z876clothingdustdataitogitsuldalvivanovoldax" +
- "n--davvenjrga-y4axn--djrs72d6uyxn--djty4konskowolayangrouphotogr" +
- "aphysioxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e" +
- "1a4cn-northwest-1xn--eckvdtc9dxn--efvn9spydebergxn--efvy88haibar" +
- "akitahatakanezawaxn--ehqz56nxn--elqq16hair-surveillancexn--eveni" +
- "-0qa01gaxn--f6qx53axn--fct429konsulatrobeepilepsykkylvenetodayxn" +
- "--fhbeiarnxn--finny-yuaxn--fiq228c5hsrlxn--fiq64basicservercelli" +
- "guriautomotiveconomiasakuchinotsuchiurakawakuyabukikonaikawachin" +
- "aganoharamcoachampionshiphoptobamadridnbloggerevistaples3-eu-wes" +
- "t-1xn--fiqs8srvarggatrentinsuedtirolxn--fiqz9storegontrailroadxn" +
- "--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-" +
- "cesena-fcbsstorfjordxn--forlcesena-c8axn--fpcrj9c3dxn--frde-gran" +
- "drapidstorjcloud-ver-jpchungnamdalseidfjordyndns-picsannohelplfi" +
- "nancialuxuryxn--frna-woaraisaijosoyrorostpetersburgxn--frya-hrax" +
- "n--fzc2c9e2cngriwataraidyndns-wikiraxn--fzys8d69uvgmailxn--g2xx4" +
- "8cnpyatigorskodjeepsondriodejaneirockartuzyxn--gckr3f0fbsbxn--1c" +
- "k2e1bar0emmafann-arboretumbriamallamaceiobbcg12038xn--gecrj9cnsa" +
- "ntacruzsewhalingroks-thisayamanobeokalmykiaxn--ggaviika-8ya47hak" +
- "atanorthwesternmutualxn--gildeskl-g0axn--givuotna-8yasugitpagefr" +
- "ontappixolinoxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050i" +
- "s-into-carshirahamatonbetsurnadalxn--gmqw5axn--h-2failxn--h1aegh" +
- "akodatexn--h2breg3evenestreams1xn--h2brj9c8cntoyotaparsantafedje" +
- "ffersonxn--h3cuzk1discountysnestudioxn--hbmer-xqaxn--hcesuolo-7y" +
- "a35basilicataniautoscanadaeguambulancechirealmpmnaval-d-aosta-va" +
- "lleyokoteastcoastaldefenceastus2xn--hery-iraxn--hgebostad-g3axn-" +
- "-hkkinen-5waxn--hmmrfeasta-s4accident-prevention-k3studynamische" +
- "s-dnsopotrentinsued-tirolxn--hnefoss-q1axn--hobl-iraxn--holtlen-" +
- "hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1" +
- "b6b1a6a2exn--imr513nxn--indery-fyasuokannamihoboleslawiecolognew" +
- "spaperxn--io0a7is-into-cartoonshirakokaminokawanishiaizubangexn-" +
- "-j1aefbx-ostrowiechoseiroumuenchenissedaluroyxn--j1amhakonexn--j" +
- "6w193gxn--jlq480n2rgxn--jlq61u9w7basketballfinanzgorzeleccollect" +
- "ionayorovigovtaxihuanfshostyhostingjerstadotsuruokakegawaveroyke" +
- "ngerdalces3-eu-west-2xn--jlster-byatominamidaitomanchesterxn--jr" +
+const text = "9guacuiababia-goracleaningroks-theatree12hpalmasfjorden4tatarant" +
+ "ours3-ap-northeast-2ix4432-balsan-suedtirolkuszczytnord-aurdalp1" +
+ "kappchizip6116-b-datacentermezproxyzgorabogadobeaemcloud-fr1337b" +
+ "irdartcenterprisecloudaccesscambridgeiseiroumuenchenirasakincheo" +
+ "nishiazaindianapolis-a-bloggerbirkenesoddtangenovarahkkeravjuego" +
+ "shikikugawashtenawdev-myqnapcloudcontrolledekagaminogifts3-websi" +
+ "te-ap-southeast-2birthplacevje-og-hornnes3-website-eu-west-1bjar" +
+ "koyuu2-localhostrolekaniepcextraspace-to-rentalstomakomaibarabje" +
+ "rkreimbamblebesbyglandroverhallaakesvuemieleccebinagisoccertmgra" +
+ "zerbaijan-mayengerdalipaywhirlimanowarudaustevollillyokosukanrag" +
+ "rocerybnikeisenbahnaumburggfarmerseine164-balsfjordd-dnshome-web" +
+ "serverdal-o-g-i-naval-d-aosta-valleyboltateshinanomachimkentatey" +
+ "amajudygarlanddnslivefsnillfjorddnss3-ap-south-1bjugnieznord-oda" +
+ "lomzaporizhzhiablackfridayuzawabloombergbauernishigohtawaramotoi" +
+ "neppueblockbusterniiminamiawajikindianmarketinglitcheltenham-rad" +
+ "io-opencraftrainingliwicebloxcms3-website-sa-east-1bluedagestang" +
+ "emologicallyngenishiharabmoattachments3-website-us-east-1bms3-we" +
+ "bsite-us-west-1bmwedeploybnrwegroweibolognagareyamakeuparaglidin" +
+ "globoavistanbulsan-sudtirolondonetskaratebomloabathsbchernivtsic" +
+ "iliabondigitaloceanographicsxboxfordellogliastradinglogoweirbonn" +
+ "ishiizunazukindielddanuorrindigenamsosnowiechernovtsyncloudray-d" +
+ "nstracebookinghostedpictetjeldsundrayddnsfreebox-osascoli-piceno" +
+ "rdlandraydnsupdaterbookonlinewjerseyboomlajollamericanexpressexy" +
+ "boschaefflerdalondrinapleskns3-website-us-west-2bostik-serverran" +
+ "koshigayachts5ybostonakijinsekikogentappsselfiparisor-fronishika" +
+ "taketomisatomobelembetsukubankaratsuginamikatagamilanotairesakyo" +
+ "tanabellevuelosangelesjabbottjmaxxxenishikatsuragit-reposalangen" +
+ "ishikawazukamisatohoboleslawiechirurgiens-dentistes-en-francebot" +
+ "anicalgardeno-stagingloppenzaporizhzhedmarkareliancebotanicgarde" +
+ "nishimerabotanychiryukyuragifuchungbukharanzanishinomiyashironom" +
+ "niweatherchannelorenskoglugsjcbnpparibashkiriabouncemerckmsdnipr" +
+ "opetrovskjervoyageorgeorgiabounty-fullensakerrypropertiesalon-1b" +
+ "outiquebeconomiastalowa-wolawassamukawataricoharuovatmallorcafed" +
+ "eration-webpaashorokanaieboutiresindevicenzaganquannefrankfurtjo" +
+ "meloyalistoragebozen-sudtirolottebozen-suedtirolottokonamegataka" +
+ "yamassa-carrara-massacarraramassabusinessebykleclerchitachinakag" +
+ "awatchandclockariyameiwamarshallstatebankarlsoybplaceducatoraybr" +
+ "andywinevalleybrasiliabrindisibenikilatironrenderbristoloseyouri" +
+ "parliamentjxeroxfinitybritishcolumbialowiezakopanelastxjampalace" +
+ "broadcastlebtimnetzjavaldaostathelleluxembourgmbhartipschlesisch" +
+ "esaltdalouvrehabmerbroadwaybroke-itkmaxxn--0trq7p7nnishinoomoteg" +
+ "omurabrokerbronnoysundrivegarsheiheijindowapblogsiteleafamilycom" +
+ "pany-2brothermesaverdealerbrowsersafetymarketsaludrobaknoluoktac" +
+ "hikawafflecellclstagehirnrtksatxn--11b4c3drudupontariobranconaka" +
+ "niikawatanagurabrumunddalpusercontentlon-2brunelblagrarchaeology" +
+ "eongbuk0brusselsalvadordalibabalena-devicesalzburgminakamichihar" +
+ "abruxellesamegawabryanskleppgafanishinoshimatsusakahoginankokubu" +
+ "njindustriabrynewmexicodyn-o-saurlandesamnangerbuskerudurbanamex" +
+ "hibitionishiokoppegardurhamburgmodellingmxn--12c1fe0bradescotlan" +
+ "dynathomebuiltwithdarkarmoybuzentsujiiebuzzlgretakamoriokakegawa" +
+ "bwellbeingzonebzhitomirbzzwesteuropenairbusantiquest-a-la-maison" +
+ "dre-landroidyndns-at-homedepotenzaolbia-tempio-olbiatempioolbial" +
+ "ystokkeliwebhostingrimstadyndns-at-workisboringripecolumbusheyco" +
+ "mmunecommunity-prochowicecomoarekecomparemarkerryhotelsantamaria" +
+ "kecomsecaaskoyabearalvahkihokumakogenebakkeshibechambagriculture" +
+ "nnebugattiffanyaarborteaches-yogasawara-rugbydgoszczecinemacerat" +
+ "abuseating-organicbcieszyncondoshichinohealth-carereformemergenc" +
+ "yahikobeardubaiduckdnswedeniwaizumiotsukumiyamazonawsglobalaccel" +
+ "eratorahimeshimabaridagawalbrzycharternopilawalesundyndns-remote" +
+ "wdyndns-serverisignconferenceconstructionconsuladoesntexisteinge" +
+ "ekashibatakatorinzais-a-candidateconsultanthropologyconsultingro" +
+ "undhandlingroznynysaikisosakitagawacontactoyouracontagematsubara" +
+ "vpagexluzerncontemporaryarteducationalchikugodogadollsantoandrea" +
+ "mhostersanukis-a-caterercontractorskenconventureshinodearthruher" +
+ "ecifedexetercookingchannelsdvrdnsdojoburgrpasadenaritakoelncoolv" +
+ "ivanovoldacooperativano-frankivskolefrakkestadyndns-webhareidsbe" +
+ "rgentingruecopenhagencyclopedichonanbulsan-suedtirolubindalublin" +
+ "desnesamsclubartowestfalenishitosashimizunaminamibosogndalucania" +
+ "coproductionsaobernardocorporationcorsicahcesuoloansaogoncarrier" +
+ "corvettemp-dnsaotomelbournecosenzamamidorissadonnagatorogersvps-" +
+ "hostrowiechoseikarugamvikarpaczeladzcosidnsfor-better-thanawawsm" +
+ "pplanetariumemorialcostumedicinaharimalborkashiharacouchpotatofr" +
+ "iesapporocoukashiwaracouncilcouponsardegnarusawacozoracqcxn--12c" +
+ "fi8ixb8lcranbrookuwanalyticsardiniacrdyndns-wikinkobierzycecredi" +
+ "tcardyndns-workshoparenakanojohanamakinoharacreditunioncremonash" +
+ "gabadaddjaguarqhachinoheguris-a-celticsfancrewhoswholdingsmall-w" +
+ "ebredirectmeetoystre-slidrettozawacricketrzyncrimeast-kazakhstan" +
+ "angercrotonecrownipassagensarlcrsarpsborguidefenseljordyndns1cru" +
+ "isesarufutsunomiyawakasaikaitabashijonawatecuisinellancashirecip" +
+ "escaracalvinklein-berlindaskvollculturalcentertainmentozsdelmenh" +
+ "orstalbansasayamattelekommunikationcuneocupcakecuritibaghdadynns" +
+ "asebofageologycurvallee-aosteroycymrussiacyonabarumemsettlersask" +
+ "atchewancyouthachiojiyaizuwakamatsubushikusakadogawaferrarivnefe" +
+ "rrerotikagoshimalopolskanlandynv6fetsundynvpnpluscountryestateof" +
+ "delawareclaimsaudafgulenfhvalerfidoomdnsiskinkyotobetsumidatlant" +
+ "ichoshibuyahabackyardsamsungriwataraidyndns-freeboxoslocus-4fiel" +
+ "dyroyrvikinguitarsauheradynservebbsassaris-a-chefashionfigueresi" +
+ "stancefilateliafilegear-audnedalnfilegear-dealstahaugesunderseap" +
+ "ortsinfolionetworkangerfilegear-gbizfilegear-iefilegear-jpmorgan" +
+ "filegear-sg-1filminamiechizenfinalfinancefineartschokokekschokol" +
+ "adenfinlandfinnoyfirebaseappatriafirenetraniandriabarlettatrania" +
+ "ndriafirenzefirestonefirewebhopensocialfirmdalegnicapebretonamic" +
+ "rolightingunmaniwakuratefishingokasells-for-lesscholarshipschool" +
+ "sztynsettsurgeonshalloffameldalfitjarvodkafjordvagsoygardendofth" +
+ "einternetnedalceschulefitnessettlementranoyfjalerflekkefjordfles" +
+ "berguovdageaidnulminamifuranoflickragerokunohealthcareerschulser" +
+ "verflirfloginlinefloraflorencefloridatsunanjoetsuwanouchikujogas" +
+ "zkolancasterfloripaderbornfloristanohatajiris-a-cpadualstackasse" +
+ "rversailleschwarzgwangjuifminamiiserniafloromskogushikamifuranor" +
+ "e-og-uvdalflowerschweizfltranslateflynnhosting-clusterfndfnwkasu" +
+ "kabedzin-addrammenulvikasumigaurayasudafoodnetworkdalfor-ourfor-" +
+ "somedizinhistorischesciencecentersciencehistoryfor-theaterforexr" +
+ "othachirogatakanabeautysfjordforgotdnscientistordalforli-cesena-" +
+ "forlicesenaforlikescandyn53forsalegoldpoint2thisamitsukeforsanda" +
+ "suoloftransportefortalfortevaksdalfortmissoulanciafortworthadano" +
+ "rfolkebibleksvikasuyanaizuerichardlillesandefjordfosnescjohnsonf" +
+ "otaruis-a-cubicle-slavellinodeobjectscrapper-sitefoxafozfranamiz" +
+ "uhobby-sitexascrappingwiddleitungsenfrancaiseharafranziskanerima" +
+ "ringatlantakahamalselvendrellfredrikstadtvscrysecuritytacticserv" +
+ "ehttpaviancargodaddyn-vpndnservehumourfreeddnsgeekgalaxyfreedesk" +
+ "topocznordreisa-hockeynutazurestaticappspacehosted-by-previderfr" +
+ "eemasonryfreemyiphosteurovisionfreesitextileikangerfreetlserveir" +
+ "choyodobashichikashukujitawaraumalatvuopmicrosoftbankaruizawafre" +
+ "iburgxn--1ck2e1bar0emmafann-arboretumbriamallamaceiobbcg12038fre" +
+ "seniusculturecreationfribourgfriuli-v-giuliafriuli-ve-giuliafriu" +
+ "li-vegiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiul" +
+ "iafriuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuli" +
+ "afriuliveneziagiuliafriulivgiuliafrlfroganserveminecraftransurlf" +
+ "rognfrolandfrom-akrehamnfrom-alfrom-arfrom-azimuthatogayabukijob" +
+ "servableusercontentrapaniizafrom-capetownnews-stagingfrom-coffee" +
+ "dbackplaneappfizerfrom-ctravelchannelfrom-dchristiansburgroks-th" +
+ "isayamanobeokakudamatsuefrom-deatnuniversityfrom-flanderservemp3" +
+ "from-gaulardalfrom-hichisochildrensgardenfrom-iafrom-idfrom-ilfr" +
+ "om-in-brbar1from-kservep2pgfoggiafrom-kyowariasahikawafrom-lange" +
+ "vagrigentomologyeonggiehtavuoatnabudapest-a-la-masion-rancherkas" +
+ "ydneyfrom-malvikaszubyfrom-mdfrom-meerestaurantravelersinsurance" +
+ "from-mifunefrom-mnfrom-modalenfrom-mservepicservequakefrom-mtnfr" +
+ "om-nctulanservesarcasmatartanddesignfrom-ndfrom-nefrom-nh-serveb" +
+ "logspotrdfrom-njservicesevastopolefrom-nminamiizukaminokawanishi" +
+ "aizubangefrom-nvallee-d-aosteigenfrom-nyminamimakis-a-democratre" +
+ "ndhostingfrom-ohdattorelayfrom-oketogolffansevenassisicilyfrom-o" +
+ "rfrom-padoval-daostavalleyfrom-pratogurafrom-ris-a-designerfrom-" +
+ "schoenbrunnfrom-sdscloudfrom-tnfrom-txn--1ctwolominamatarnobrzeg" +
+ "yptianfrom-utsiracusagaeroclubmedecincinnativeamericanantiquest-" +
+ "mon-blogueurodirumadridnbloggerimo-i-rana4unjargafrom-vald-aosta" +
+ "rostwodzislawienfrom-vtrentin-sud-tirolfrom-wafrom-wiardwebspace" +
+ "from-wvalleeaosteinkjerusalempresashibetsukuis-a-doctorprojectre" +
+ "ntin-sudtirolfrom-wyfrosinonefrostaplesharis-a-financialadvisor-" +
+ "aurdalfroyaitakaharunusualpersonfstcgroupharmaciensharpharmacysh" +
+ "awaiijimarburgfujiiderafujikawaguchikonefujiminokamoenairlineen-" +
+ "rootaribeiraogashimadachicagoboatshellaspeziafujinomiyadattowebc" +
+ "ampinashikiminohostfoldnavyfujiokayamamurogawafujisatoshonairpor" +
+ "tland-4-salernoduminamiminowafujisawafujishiroishidakabiratoride" +
+ "bianfujitsurugashimandalfujiyoshidavvenjargap-northeast-3fukayab" +
+ "eatshimojis-a-geekatowicefukuchiyamadavvesiidappnodebalancertifi" +
+ "cationfukudomigawafukuis-a-greenfukumitsubishigakirovogradoyfuku" +
+ "okazakiryuohkurafukuroishikarikaturindalfukusakisarazure-mobilei" +
+ "rfjordfukuyamagatakahashimamakishiwadazaifudaigojomedio-campidan" +
+ "o-mediocampidanomediofunabashiriuchinadafunagatakahatakaishimogo" +
+ "senfunahashikamiamakusatsumasendaisennangonohejis-a-gurunzenfund" +
+ "aciofunkfeuerfuoiskujukuriyamangooglecodespotrentin-sued-tirolfu" +
+ "osskoczowiiheyakumodernfurnitureggio-calabriafurubirafurudonosti" +
+ "aafurukawairtelebitbridgestonekobayashikaoirmitakeharackmazeplay" +
+ "fusodegaurafussagamiharafutabayamaguchinomihachimanagementrentin" +
+ "-suedtirolfutboldlygoingnowhere-for-morenakatombetsumitakagiizef" +
+ "uttsurugimperiafuturecmshimokawafuturehostingfuturemailingfvghan" +
+ "gglidinghangoutsystemscloudsitehannanmokuizumodenaklodzkochikush" +
+ "inonsenergyhannorthwesternmutualhanyuzenhapmircloudletshimonitay" +
+ "anagitapphdfcbankatsuyamarugame-hostyhostinghappousrcfastly-terr" +
+ "ariumetacentrumeteorappassenger-associationharstadharvestcelebra" +
+ "tionhasamansionshimonosekikawahasaminami-alpshimosuwalkis-a-land" +
+ "scaperugiahashbanghasudahasura-apphiladelphiaareadmyblogsytehasv" +
+ "ikaufentigerhatoyamazakitahiroshimanxn--1lqs03nhatsukaichikaisei" +
+ "yoichippubetsubetsugarustkanmakiwakunigamiharutwentehattfjelldal" +
+ "hayashimamotobungotakadancehazuminobusells-for-uhelsinkitakamiiz" +
+ "umisanofidelitysvardontexistmein-iservebeerhembygdsforbundhemnes" +
+ "himotsukehemsedalhepforgeblockshimotsumaherokusslattuminamioguni" +
+ "5heroyhgtvalleedaostehidorahigashiagatsumagoianiahigashichichibu" +
+ "nkyonanaoshimakanegasakimobetsuldalhigashihiroshimanehigashiizum" +
+ "ozakitakatakaokalmykiahigashikagawahigashikagurasoedahigashikawa" +
+ "kitaaikitakyushuaiahigashikurumegurownproviderhigashimatsushimao" +
+ "ris-a-lawyerhigashimatsuyamakitaakitadaitoigawahigashimurayamamo" +
+ "torcycleshinichinanhigashinarusells-itrentino-aadigehigashinehig" +
+ "ashiomitamamurausukitamihamadahigashiosakasayamanakakogawahigash" +
+ "ishirakawamatakarazukaluganskygearapphilatelyhigashisumiyoshikaw" +
+ "aminamiaikitamotosumy-gatewayhigashitsunortonhigashiurawa-mazows" +
+ "zexnetrentino-alto-adigehigashiyamatokoriyamanashifteditorxn--1l" +
+ "qs71dhigashiyodogawahigashiyoshinogaris-a-liberalhiraizumisatohm" +
+ "apartmentshinjournalismailillehammerfeste-iphilipsynology-diskst" +
+ "ationhirakatashinagawahiranairtrafficplexus-1hirarahiratsukaeruh" +
+ "irayakagehistorichouseshinjukumamotoyamashikokuchuohitachiomiyag" +
+ "ildeskaliszhitachiotagoppdalhitraeumtgeradegreehjartdalhjelmelan" +
+ "dholeckodairaholidayhomegoodshinkamigototalhomeiphoenixn--1qqw23" +
+ "ahomelinkyard-cloudjiffylkesbiblackbaudcdn-edgestackhero-network" +
+ "inggroupowiathletajimageandsoundandvision-riopretochigiessensios" +
+ "itecnologiahomelinuxn--2m4a15ehomeofficehomesecuritymacaparecida" +
+ "homesecuritypchristmaseratinterhostsolutionsandnessjoenishiwakin" +
+ "ternationalfirearmsandoyhomesenseeringhomeunixn--2scrj9chromedic" +
+ "altanissettaishinomakinderoyhondahongotembaixadahonjyoitakasagot" +
+ "pantheonsitehornindalhorsellsyourhomeftphonefosshinshinotsurgery" +
+ "hortendofinternet-dnshinshirohospitalhoteleshintokushimahotelwit" +
+ "hflightshintomikasaharahotmailhoyangerhoylandetroitskypehumaniti" +
+ "eshinyoshitomiokamishihoronobeauxartsandcraftshiojirishirifujied" +
+ "ahurdalhurumajis-a-libertarianhyllestadhyogoris-a-linux-usershio" +
+ "yandexcloudhyugawarahyundaiwafuneis-uberleetrentino-stirolis-ver" +
+ "y-badajozis-a-painteractivestfoldis-very-evillageis-very-goodyea" +
+ "ris-very-niceis-very-sweetpepperis-with-thebandownloadisleofmana" +
+ "ustdaljenv-arubajddarchitecturealtoregontrailroadjeonnamerikawau" +
+ "ejetztrentino-sud-tiroljevnakershusdecorativeartshisognejewelryj" +
+ "ewishartgalleryjfkazteleportlligatrentino-sudtiroljgorajlljls-st" +
+ "o1jls-sto2jls-sto3jmphxn--30rr7yjnjaworznoshiroomgjoyentrentino-" +
+ "sued-tiroljoyokaichibalashovhadselburgjpnjprshisuifuettertdasnet" +
+ "zjurkosaigawakosakaerodromegallupaascolipiceno-ipifony-1koseis-a" +
+ "-photographerokuapphotographysiokosherbrookegawakoshimizumakiyos" +
+ "emitekoshunantankddiamondshizukuishimofusaitoshimatta-varjjatren" +
+ "tino-suedtirolkosugekotohiradomainsureggioemiliaromagnamsskogane" +
+ "is-a-playershiftcryptonomichigangwonkotourakouhokutamakiyosunnda" +
+ "lkounosupplieshopitsitekouyamashikekouzushimashikizunokunimilita" +
+ "rykozagawakozakis-a-republicancerresearchaeologicaliforniakozowi" +
+ "ldlifestylekpnkppspdnshoppingkrasnikahokutokamachintaifun-dnsali" +
+ "ashopwarendalenugkrasnodarkredstonekrelliankristiansandcatshouji" +
+ "s-a-rockstarachowicekristiansundkrodsheradkrokstadelvalle-aostat" +
+ "ic-accesshowakryminamisanrikubetsupportrentinoa-adigekumanottero" +
+ "ykumatorinow-dnshowtimelhusgardenkumejimasoykumenantokigawakunis" +
+ "akis-a-socialistdlibestadkunitachiarailwaykunitomigusukuleuvenet" +
+ "okashikis-a-soxfankunneppubtlshwilliamhillkunstsammlungkunstundd" +
+ "esignkuokgroupilotsienarviikamiokameokamakurazakitchenkuregruhos" +
+ "tingkurgankurobeepilepsykkylvenicekurogimimatakatsukis-a-student" +
+ "alkuroisoftwarezzokuromatsunais-a-teacherkassyno-dshirahamatonbe" +
+ "tsurnadalkurotakikawasakis-a-techietis-a-llamaritimoldell-oglias" +
+ "traderkushirogawakustanais-a-therapistoiakusupplynxn--3bst00mina" +
+ "mitanekutchanelkutnowruzhgorodeokuzumakis-an-accountantshirakoka" +
+ "miminershiranukamisunagawakvafjordkvalsundkvamlidlugolekadenagah" +
+ "amaroyerkvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspec" +
+ "truminamiuonumassivegridkzmisconfusedmishimasudamissilewismiller" +
+ "misugitokorozawamitourismilezajskfh-muenstermitoyoakemiuramiyazu" +
+ "recontainerdpolicemiyotamanomjondalenmlbfanmontrealestatefarmequ" +
+ "ipmentrentinoaadigemonza-brianzapposigdalmonza-e-della-brianzapt" +
+ "okuyamatsumaebashikshacknetrentinoalto-adigemonzabrianzaramonzae" +
+ "brianzamonzaedellabrianzamoonscaleforcemordoviamoriyamatsumotofu" +
+ "kemoriyoshiminamiashigaramormonstermoroyamatsunomortgagemoscowin" +
+ "barclaycards3-external-1moseushistorymosjoenmoskenesilkhakassiam" +
+ "ossimple-urlmosvikharkivanylvenneslaskerrylogisticshizuokamitsue" +
+ "moteginowaniigatakamatsukawamoviemovimientokyotangovtrentinoalto" +
+ "adigemozilla-iotrentinos-tirolmtranbymuginozawaonsenmuikaminoyam" +
+ "axunispacemukoebenhavnmulhouseoullensvanguardmultibaasirdalmunak" +
+ "atanemuncienciamuosattemupimientakinouemurmanskharkovaomurotorcr" +
+ "aftrentinostirolmusashinoharamuseetrentinosud-tirolmuseumverenig" +
+ "ingmusicarbonia-iglesias-carboniaiglesiascarboniamutsuzawamy-vig" +
+ "orgemy-wanggouvichurchaseljedugit-pagespeedmobilizeroticagliarik" +
+ "uzentakataipeidsvolluccaravantaarparochernigovernmentoyosatoyoka" +
+ "wamyactivedirectorymyasustor-elvdalmycdmycloudnslupskhersonmydat" +
+ "tolocalhistorymyddnskingmydissentrentinosudtirolmydobisshikis-an" +
+ "-artistgstagemydroboehringerikemydslzmyeffectrentinosued-tirolmy" +
+ "fastblogermyfirewallonieruchomoscienceandindustrynmyforuminamiya" +
+ "mashirokawanabelaudibleasingmyfritzmyftpaccessmolarvikhmelnitski" +
+ "yamarumorimachidamyhome-servermyjinomykolaivarggatrentinosuedtir" +
+ "olmymailermymediapcircustomer-ocimdbananarepublic66myokohamamats" +
+ "udamypepinbarclays3-fips-us-gov-west-1mypetsmushcdn77-sslingmyph" +
+ "otoshibalatinoipirangalsaceomypicturesnoasakakinokiamypsxn--3ds4" +
+ "43gmysecuritycamerakermyshopblocksokndalmyshopifyresdalmythic-be" +
+ "astsolarssonmytis-a-bookkeeperspectakashimarcheapigeelvinckhmeln" +
+ "ytskyivaporcloudmytuleaprendemasakievennodesabaerobaticketsologn" +
+ "emyvncistrondheimmobilienissandiegomywireitrentinsud-tirolplatte" +
+ "rpioneerplazaplcube-serverplumbingoplurinacionalpodhalepodlasiel" +
+ "laktyubinskiptveterinairealmpmnpodzonepohlpoivronpokerpokrovsknx" +
+ "-serversicherungpoliticarrdpolitiendapolkowicepoltavalle-d-aosta" +
+ "ticsomnarvikomaganepomorzeszowindmillponpesaro-urbino-pesarourbi" +
+ "nopesaromasvuotnaroyponypordenonepornporsangerporsangugeporsgrun" +
+ "nanyokoshibahikariwanumatakkofuefukihabororosoopoznanpraxis-a-br" +
+ "uinsfanprdpresidioprgmrprimetelemarkomakiyosatokaizukamikoaniiha" +
+ "matamakawajimarnardalprincipeprivatizehealthinsuranceprofesional" +
+ "progressivestnesopotrentinsudtirolpromombetsurfaststacksavannahg" +
+ "apropertyprotectionprotonetrentinsued-tirolprudentialpruszkowind" +
+ "owskrakowinnersor-odalprvcyberlevagangaviikanonjis-an-engineerin" +
+ "gprzeworskogpulawypupippugliapvhagebostadpvtrentinsuedtirolpwcit" +
+ "adeliverydyndns-iparsanfranciscofreakunemurorangecloudplatform0p" +
+ "ythonanywherepaircraftingvollolipopittsburghofficialpzqldqotoyoh" +
+ "ashimotoolsor-varangerqponiatowadaqslgbtrentoyonakagyokutoyakolo" +
+ "brzegersundqualifioappiwatequickconnectrevisohughesorfoldquicksy" +
+ "tesorocabalestrandabergamo-siemenscaledogawarabikomaezakirunombr" +
+ "esciaquipelementsorreisahayakawakamiichikawamisatottoris-an-ente" +
+ "rtainerqvcitichitosetoeigersundyndns-blogdnsampaleomutashinaindu" +
+ "striesteamfamberkeleyswidnikkokonoeswiebodzin-butterswiftcoversw" +
+ "inoujscienceandhistoryswissmarterthanyousynology-dsowatuvalleaos" +
+ "taverntuxfamilytwmailvevelstadvibo-valentiavibovalentiavideovill" +
+ "asphinxn--3e0b707evinnicasacamdvrcampinagrandebuilderschmidtre-g" +
+ "auldalvinnytsiavipsinaappixolinovirginiavirtual-userveexchangevi" +
+ "rtualcloudvirtualservervirtualuserveftpizzavirtueeldomein-vigorl" +
+ "icevirtuelvisakegawaviterboknowsitallvivolkenkundenvixn--3hcrj9c" +
+ "ivilizationisshingucciprianidyndns-mailukowestus2vlaanderenvladi" +
+ "kavkazimierz-dolnyvladimirvlogintoyonezawavminiservervologdansko" +
+ "mmunevolvolkswagentspjelkavikomatsushimarylandvolyngdalvoorloper" +
+ "auniterois-foundationvossevangenvotevotingvotoyonowithyoutubersp" +
+ "acekitagatargitlaborwiwatsukiyonosegawawixsitewloclawekomorotsuk" +
+ "agawawmcloudwmflabsrhtritonwnextdirectromsojamisonwoodsideloitte" +
+ "mpurlworldworse-thandawowiospydebergwpdevcloudwpenginepoweredwph" +
+ "ostedmailwpmucdnpklabudhabikinokawabarthaebaruericssongdalenvikn" +
+ "akatsugawawpmudevcdnaccessokamogawawritesthisblogwroclawitdkomon" +
+ "otogawawtcircleverappspotagerwtfastvps-serveronakasatsunairguard" +
+ "iannakadomarinedre-eikerwuozuwzmiuwajimaxn--45brj9civilwarmiasak" +
+ "uchinotsuchiurakawatchesangoxn--45q11clanbibaidarmeniaxn--4gbrim" +
+ "iningxn--4it168dxn--4it797kongsbergxn--4pvxs4allxn--54b7fta0ccld" +
+ "mailuroyxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49clic20001wwwfa" +
+ "rmsteadyndns-office-on-the-weberxn--5rtq34kongsvingerxn--5su34j9" +
+ "36bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn-" +
+ "-7t0a264clicketcloudcontrolappartintuitoyotapartsanjotoyotomiyaz" +
+ "akinuyamashinatsukigatakasakitashiobaraxn--80aaa0cvacationsrlxn-" +
+ "-80adxhksrvaroyxn--80ao21axn--80aqecdr1axn--80asehdbarefootballo" +
+ "oningjesdalimitediscourses3-sa-east-1xn--80aswgxn--80augustowith" +
+ "googleapiszxn--8ltr62koninjambylxn--8pvr4uxn--8y0a063axn--90a1af" +
+ "lakstadaokagakicks-assnasaarlandxn--90a3academiamicable-modemone" +
+ "yxn--90aeroportalaheadjudaicadaquestorebaselectroandinosaurepbod" +
+ "ynamic-dnsoruminanoxn--90aishobarakawagoexn--90amcdirxn--90azhyt" +
+ "omyravendbargainstantcloudfrontdoorlandiscoveryggeehimejiiyamano" +
+ "uchikuhokuryugasakitanakagusukumodumcpreservationayorovnoceanogr" +
+ "aphiquemrhcloudishakotanfshostrodawaraustraliamuneues3-ap-southe" +
+ "ast-1xn--9dbhblg6dietrusteexn--9dbq2axn--9et52uxn--9krt00axn--an" +
+ "dy-iraxn--aroport-byaotsurreyxn--asky-iraxn--aurskog-hland-jnbar" +
+ "reauctioncilla-speziaustrheimatunduhrennesoyokoteastasiamusement" +
+ "dllpages3-ap-southeast-2xn--avery-yuasakuhokksundxn--b-5gaxn--b4" +
+ "w605ferdxn--balsan-sdtirol-nsbstorfjordxn--bck1b9a5dre4clickrisi" +
+ "nglesannaniyodogawaxn--bdddj-mrabdxn--bearalvhki-y4axn--berlevg-" +
+ "jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachikatsuurax" +
+ "n--bievt-0qa2xn--bjarky-fyasakaiminatoyookanazawaxn--bjddar-ptar" +
+ "umizusawaxn--blt-elabourxn--bmlo-graingerxn--bod-2naturalhistory" +
+ "museumcenterxn--bozen-sdtirol-2obanazawaxn--brnny-wuacademy-fire" +
+ "wall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpage" +
+ "square7xn--brum-voagatrvestre-slidreportromsakatamayufuelverumin" +
+ "comcastresinstagingxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarrel-o" +
+ "f-knowledgeappleborkaracoldwarszawauthordalandds3-ca-central-1xn" +
+ "--c1avgxn--c2br7gxn--c3s14minnesotaketakazakis-an-actorxn--cck2b" +
+ "3barrell-of-knowledgecomputerhistoryofscience-fictionfabricafjs3" +
+ "-us-east-2xn--cckwcxetdxn--cesena-forl-mcbremangerxn--cesenaforl" +
+ "-i8axn--cg4bkis-gonexn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicae" +
+ "s-v6a2oxn--correios-e-telecomunicaes-ghc29axn--czr694barsycenter" +
+ "prisesakikonaikawachinaganoharamcoachampionshiphoptobamagazineat" +
+ "-urlimolisemineu-1xn--czrs0try-snowplowiczest-le-patronxn--czru2" +
+ "dxn--czrw28barsyonlineustargardiskussionsbereichattanooganordest" +
+ "e-idcasadelamonedapliernewspaperxn--d1acj3basicservercelliguriau" +
+ "tomotivelandeportenrittogitsulikes-piedmonticellocalzoneastcoast" +
+ "aldefenceastus2xn--d1alfaromeoxn--d1atrycloudflareplantationxn--" +
+ "d5qv7z876clinichofunatoriginstitutemasekd1xn--davvenjrga-y4axn--" +
+ "djrs72d6uyxn--djty4konskowolayangroupiemontexn--dnna-grajewolter" +
+ "skluwerxn--drbak-wuaxn--dyry-iraxn--e1a4cliniquenoharavennagasak" +
+ "indlecznagasukexn--eckvdtc9dxn--efvn9storjcloud-ver-jpchungnamda" +
+ "lseidfjordyndns-homednsandvikcoromantovalle-daostavangerxn--efvy" +
+ "88haibarakitahatakanezawaxn--ehqz56nxn--elqq16hair-surveillancex" +
+ "n--eveni-0qa01gaxn--f6qx53axn--fct429konsulatrobeeldengeluidvare" +
+ "serve-onlinexn--fhbeiarnxn--finny-yuaxn--fiq228c5hstpetersburgxn" +
+ "--fiq64basilicataniautoscanadaeguambulancentralus-2xn--fiqs8stre" +
+ "amscompute-1xn--fiqz9studioxn--fjord-lraxn--fjq720axn--fl-ziaxn-" +
+ "-flor-jraxn--flw351exn--forl-cesena-fcbsstudynamisches-dnsoundca" +
+ "stronomy-routerxn--forlcesena-c8axn--fpcrj9c3dxn--frde-grandrapi" +
+ "dstuff-4-salexn--frna-woaraisaijosoyrovigotsukisofukushimangyshl" +
+ "akasamatsudopaasnesoddenmarkhangelskjakdnepropetrovskiervaapstei" +
+ "ermarkonyvelohmusashimurayamarylhurstjordalshalsenxn--frya-hraxn" +
+ "--fzc2c9e2clintonoshoesannohelplfinancialutskarumaifarsundyndns-" +
+ "picsanokasaokamikitayamatsurinvestmentsantabarbaraxn--fzys8d69uv" +
+ "gmailxn--g2xx48clothingdustdataitogakushimotoganewyorkshirebungo" +
+ "onordkappartyxn--gckr3f0fauskedsmokorsetagayaseralingenoamishira" +
+ "satogliattis-a-conservativegasaveincloudynufcfanxn--gecrj9cn-nor" +
+ "thwest-1xn--ggaviika-8ya47hakatanorth-kazakhstanxn--gildeskl-g0a" +
+ "xn--givuotna-8yasugitpagefrontapplantsolundbeckmpspbar2xn--gjvik" +
+ "-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-into-animeinforumzxn" +
+ "--gmqw5axn--gnstigbestellen-zvbrplsbxn--3oq18vl8pn36axn--gnstigl" +
+ "iefern-wobihirosakikamijimatsushigexn--h-2failxn--h1aeghakodatex" +
+ "n--h1ahnxn--h1alizxn--h2breg3evenestufftoread-booksnesouthcaroli" +
+ "natalxn--h2brj9c8cngrondarxn--h3cuzk1discountysnestuttgartrogsta" +
+ "dxn--hbmer-xqaxn--hcesuolo-7ya35basketballfinanzgorzeleccogjovik" +
+ "aragandaveroykenflfanpachigasakids3-eu-central-1xn--hery-iraxn--" +
+ "hgebostad-g3axn--hkkinen-5waxn--hmmrfeasta-s4accident-prevention" +
+ "-k3susakis-bytomaritimekeepingxn--hnefoss-q1axn--hobl-iraxn--hol" +
+ "tlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54ax" +
+ "n--i1b6b1a6a2exn--imr513nxn--indery-fyasuokannamihokkaidovre-eik" +
+ "erxn--io0a7is-into-carshiraokamitondabayashiogamagoriziaxn--j1ad" +
+ "platformshangrilaquilanxessomaxn--j1aefbsbxn--12co0c3b4evalled-a" +
+ "ostaobaomoriguchiharag-cloud-charitychyattorneyagawakayamagnethn" +
+ "ologyxn--j1ael8batochiokinoshimaintenanceu-2xn--j1amhakonexn--j6" +
+ "w193gxn--jlq480n2rgxn--jlq61u9w7batsfjordisrechtranakaiwamizawav" +
+ "ocatanzarowbq-aukraanghkembuchikumagayagawakepnogatagajoboji234l" +
+ "ima-cityeatselinogradult3l3p0rtatamotorsitestingdyniabruzzoologi" +
+ "calabamagasakishimabaraogakibichuobiraetnaamesjevuemielnoboribet" +
+ "sucks3-ap-northeast-1xn--jlster-byatominamidaitomanchesterxn--jr" +
"peland-54axn--jvr189mintereisenxn--k7yn95exn--karmy-yuaxn--kbrq7" +
"oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dx" +
- "n--kltx9axn--klty5xn--3oq18vl8pn36axn--koluokta-7ya57hakubahcavu" +
- "otnagaivuotnagaokakyotambabyenglandxn--kprw13dxn--kpry57dxn--kpu" +
- "t3is-into-gamessinazawaxn--krager-gyatsukanoyaltakasugais-leetre" +
- "ntino-aadigexn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--" +
- "krjohka-hwab49jdevcloudjiffylkesbiblackbaudcdn-edgestackhero-net" +
- "workinggroupaashorokanaiexn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-" +
- "fyatsushiroxn--kvnangen-k0axn--l-1fairwindstuff-4-salexn--l1acce" +
- "ntureklamborghinikolaeventstufftoread-booksnesor-odalxn--laheadj" +
- "u-7yawaraxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika" +
- "-52batochiokinoshimaintenanceobninskaragandavocatanzarowbq-aursk" +
- "og-holandingdyniajudaicadaquest-mon-blogueurovision-riopretobish" +
- "imagazinekobayashikshacknetnedalaheadjudygarlanddnslivelanddnss3" +
- "-ap-southeast-1xn--lesund-huaxn--lgbbat1ad8jdfastlylbanzaiclouda" +
- "ppscbgivingjemnes3-fips-us-gov-west-1xn--lgrd-poacctromsojamison" +
- "xn--lhppi-xqaxn--linds-pramericanartrusteexn--lns-qlaquilanstutt" +
- "gartrentoyonakagyokutoyakolobrzegersundxn--loabt-0qaxn--lrdal-sr" +
- "axn--lrenskog-54axn--lt-liacolonialwilliamsburgrondarxn--lten-gr" +
- "anexn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2dde" +
- "susakis-certifiedunetlifyis-a-musicianxn--mgb9awbfbxostrowwlkpmg" +
- "ruexn--mgba3a3ejtrvaroyxn--mgba3a4f16axn--mgba3a4fra1-dexn--mgba" +
- "7c0bbn0axn--mgbaakc7dvfedorainfracloudfrontdoorxn--mgbaam7a8haku" +
- "is-a-greenxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00batsfjor" +
- "diskussionsbereichattanooganordeste-idcasertairanzanhktcmemergen" +
- "cyahikobeardubaiduckdns3-us-west-2xn--mgbai9azgqp6jejuniperxn--m" +
- "gbayh7gpaleoxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgber" +
- "p4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgb" +
- "pl2fhappouxn--mgbqly7c0a67fbcoloradoplateaudiopsysantamariakexn-" +
- "-mgbqly7cvafr-1xn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhausp" +
- "osts-and-telecommunicationswedeniwaizumiotsukumiyamazonawsmpplan" +
- "etariumemorialillyombolzano-altoadigeometre-experts-comptables3-" +
- "website-ap-northeast-1xn--mgbx4cd0abbvieeexn--mix082fedorapeople" +
- "gallodingenxn--mix891fedoraprojectozsdeportevadsobetsulikes-pied" +
- "monticellocalzonexn--mjndalen-64axn--mk0axin-dslgbtrycloudflarep" +
- "bodynamic-dnsortlandxn--mk1bu44columbusheyxn--mkru45is-lostre-to" +
- "teneis-a-nascarfanxn--mlatvuopmi-s4axn--mli-tlarvikonyvelolipopu" +
- "sinteractivegashisuifuettertdasnetzxn--mlselv-iuaxn--moreke-juax" +
- "n--mori-qsakuragawaxn--mosjen-eyawatahamaxn--mot-tlavagiskexn--m" +
- "re-og-romsdal-qqbuseranishiaritakurashikis-not-certifiedxn--msy-" +
- "ula0hakusanagochijiwadellogliastradingxn--mtta-vrjjat-k7aflaksta" +
- "daokagakicks-assnasaarlandxn--muost-0qaxn--mxtq1misakis-an-accou" +
- "ntantshiojirishirifujiedaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3px" +
- "u8komvuxn--30rr7yxn--nit225kooris-a-personaltrainerxn--nmesjevue" +
- "mie-tcbalsan-sudtirollagdenesnaaseinet-freaksusonoxn--nnx388axn-" +
- "-nodessakurais-savedxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn" +
- "--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn-" +
- "-nyqy26axn--o1achernihivgubsuzakananiikappuboliviajessheimpertri" +
- "xcdn77-secureggiocalabriaxn--o3cw4haldenxn--o3cyx2axn--od0algxn-" +
- "-od0aq3beneventoeidskoguchikuzenvironmentalconservationionjukudo" +
- "yamaizuruovat-band-campaniavoues3-eu-west-3utilities-1kappchizip" +
- "6116-b-datacentermezgorabogadobeaemcloud-dealerimo-i-rana4u2-loc" +
- "alhostrodawarabruzzoologicalvinklein-addrammenuorochestereport3l" +
- "3p0rtashkentatamotors3-ap-northeast-1337xn--ogbpf8flekkefjordxn-" +
- "-oppegrd-ixaxn--ostery-fyaxn--osyro-wuaxn--otu796dxn--p1acfeiraq" +
- "uarelleaseeklogesaveincloudxn--p1ais-slickazteleportlligatrentin" +
- "o-alto-adigexn--pgbs0dhlxn--porsgu-sta26fermochizukirkenesaves-t" +
- "he-whalessandria-trani-barletta-andriatranibarlettaandriaxn--pss" +
- "u33lxn--pssy2uxn--q9jyb4communewyorkshirebungoonordkappartintuit" +
- "oyotomiyazakinuyamashinatsukigatakasakitauraxn--qcka1pmcdirxn--q" +
- "qqt11misasaguris-an-actorxn--qxa6axn--qxamsterdamnserverbaniaxn-" +
- "-rady-iraxn--rdal-poaxn--rde-ulavangenxn--rdy-0nabaris-uberleetr" +
- "entino-altoadigexn--rennesy-v1axn--rhkkervju-01aferraraxn--rholt" +
- "-mragowoodsidevelopmentrysiljanxn--rhqv96gxn--rht27zxn--rht3dxn-" +
- "-rht61exn--risa-5nativeamericanantiquesuzukanazawaxn--risr-iraxn" +
- "--rland-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31halsaitamatsuku" +
- "ris-a-gurusrcfastly-terrariuminamiechizenxn--rovu88bentleyomitan" +
- "observerxn--rros-granvindafjordxn--rskog-uuaxn--rst-0naturalhist" +
- "orymuseumcenterxn--rsta-franamizuholdingsmall-webhostingxn--rvc1" +
- "e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithammarfeastafricarbo" +
- "nia-iglesias-carboniaiglesiascarboniaxn--s9brj9community-prochow" +
- "icexn--sandnessjen-ogbeppublishproxyzjampagexlimanowarudaxarnetf" +
- "lixilovecollegefantasyleaguernseyokozeatonsbergivestbytemarkanza" +
- "kiwielunnerhcloudiscourses3-external-1xn--sandy-yuaxn--sdtirol-n" +
- "2axn--seral-lraxn--ses554gxn--sgne-graphoxn--42c2d9axn--skierv-u" +
- "tazasuzukis-foundationxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn" +
- "--sknland-fxaxn--slat-5naturalsciencesnaturellesvalbardunloppaci" +
- "ficivilizationxn--slt-elabcn-north-1xn--smla-hraxn--smna-gratang" +
- "entlentapisa-geekopervikfh-muensterxn--snase-nraxn--sndre-land-0" +
- "cbeskidyn-ip24xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fr" +
- "on-q1axn--sr-odal-q1axn--sr-varanger-ggbestbuyshouses3-website-a" +
- "p-southeast-1xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bull" +
- "s-fanxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbetainabo" +
- "xfusejnyanagawaltervistaikikugawashingtondclk3xn--stre-toten-zcb" +
- "hzcasinorddalimitedisrechtranaharimalselvendrellimoliseminempres" +
- "ashibetsukuibmdivtasvuodnakaiwamizawaweddingjesdalivornoceanogra" +
- "phiquemrxn--t60b56axn--tckwebspacexn--tiq49xqyjelasticbeanstalka" +
- "zunotteroyxn--tjme-hraxn--tn0agrinetbankoryokamikawanehonbetsuru" +
- "taharaxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tiro" +
- "l-rzbieidsvollombardynaliasnesoddenmarkhangelskjakdnepropetrovsk" +
- "iervaapsteiermarkarasjohkamikoaniihamatamakawajimarriottcp4xn--t" +
- "rentin-sdtirol-7vbrplsbxn--45br5cylxn--trentino-sd-tirol-c3biela" +
- "washtenawdev-myqnapcloudcontrolledekagaminogifts3-website-ap-sou" +
- "theast-2xn--trentino-sdtirol-szbiellaakesvuemielecceu-1xn--trent" +
- "inosd-tirol-rzbieszczadygeyachts3-website-eu-west-1xn--trentinos" +
- "dtirol-7vbievathletajimabaridagawakkanaibetsubamericanfamilydscl" +
- "ouderacingjovikarasjokarasuyamarshallstatebankarateu-2xn--trenti" +
- "nsd-tirol-6vbifukagawassamukawatarikuzentakatainaioirasebastopol" +
- "ogyeongnamegawafaicloudineat-urlomzaporizhzheguriitatebayashijon" +
- "awateu-3xn--trentinsdtirol-nsbigv-infolldalondonetskaratsuginami" +
- "katagamilanoticias3-website-sa-east-1xn--trgstad-r1axn--trna-woa" +
- "xn--troms-zuaxn--tysvr-vraxn--uc0atvestfoldxn--uc0ay4axn--uist22" +
- "hamurakamigoris-a-hard-workershawaiijimarcheapigeelvinckaufenxn-" +
- "-uisz3gxn--unjrga-rtarumizusawaxn--unup4yxn--uuwu58axn--vads-jra" +
- "xn--valle-aoste-ebbtunesorumincomcastresindevicenzaporizhzhiaxn-" +
- "-valle-d-aoste-ehbodoes-it1-eurxn--valleaoste-e7axn--valledaoste" +
- "-ebbvacationsvcivilwarmiastagets-itmparochernigovernmentoyosatoy" +
- "okawaxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctbihorolog" +
- "yonagoyaxn--vermgensberatung-pwblogoipizzaxn--vestvgy-ixa6oxn--v" +
- "g-yiabkhaziaxn--vgan-qoaxn--vgsy-qoa0jelenia-goraxn--vgu402comob" +
- "araxn--vhquvestnesouthcarolinarvikomakiyosatokamachintaifun-dnsa" +
- "liashishikuis-a-patsfanxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xq" +
- "adxn--vry-yla5gxn--vuq861bikedaemoneyonagunicloudivttasvuotnakam" +
- "agayahooguyoriikarelianceu-4xn--w4r85el8fhu5dnraxn--w4rs40lxn--w" +
- "cvs22dxn--wgbh1comparemarkerryhotelsantoandreamhostersanukinvest" +
- "mentsaobernardownloadyndns-workshopitsitexasaogoncasacamdvrcampi" +
- "nagrandebuilderschlesischesaotomelbournexn--wgbl6axn--xhq521bilb" +
- "aokinawashirosatochigiessensiositechnologyoshiokanumazuryukiiyam" +
- "anouchikuhokuryugasakitashiobaraxn--xkc2al3hye2axn--xkc2dl3a5ee0" +
- "handsonyoursidelmenhorstalbanshellaspeziaxn--y9a3aquariumisawaxn" +
- "--yer-znaturbruksgymnxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn-" +
- "-45brj9cldmailuzernxn--ystre-slidre-ujbillustrationredumbrellahp" +
- "piacenzachpomorskienhlfanhs3-website-us-east-1xn--zbx025dxn--zf0" +
- "ao64axn--zf0avxlxn--zfr164biocelotenkawaxnbayxz"
+ "n--kltx9axn--klty5xn--3pxu8komvuxn--32vp30hagakhanamigawaxn--kol" +
+ "uokta-7ya57hakubahcavuotnagaivuotnagaokakyotambabyenglandxn--kpr" +
+ "w13dxn--kpry57dxn--kput3is-into-cartoonshiratakahagithubusercont" +
+ "entrentino-altoadigexn--krager-gyatsukanoyaltakasugais-into-game" +
+ "ssinazawaxn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krj" +
+ "ohka-hwab49jdevcloudfunctionshishikuis-a-patsfanxn--ksnes-uuaxn-" +
+ "-kvfjord-nxaxn--kvitsy-fyatsushiroxn--kvnangen-k0axn--l-1fairwin" +
+ "dsusonoxn--l1accentureklamborghinikolaeventsuzakanagawaxn--lahea" +
+ "dju-7yawaraxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagavii" +
+ "ka-52bauhausposts-and-telecommunicationsncfditchyouripalmsprings" +
+ "akerxn--lesund-huaxn--lgbbat1ad8jdfastlylbanzaicloudappspaceuser" +
+ "contentatsunobninskanzakiwielunnereviewsaitamatsukuribmdevelopme" +
+ "ntattoolforgerockartuzyolasitebinordre-landgcanonoichinomiyakebi" +
+ "zenakanotoddenavuotnarashinobserverevistarnbergjerstadotsuruokak" +
+ "amigaharaustinnavigationavoizumizakibigawamswatch-and-clockeretr" +
+ "osnubaltimore-og-romsdalpha-myqnapcloud66xn--lgrd-poacctrysiljan" +
+ "xn--lhppi-xqaxn--linds-pramericanartunespeedpartnersortlandxn--l" +
+ "ns-qlavagiskexn--loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-li" +
+ "acnpyatigorskodjeepsondriodejaneirodoyxn--lten-granexn--lury-ira" +
+ "xn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddesuzukananiikapp" +
+ "uboliviajessheimpertrixcdn77-secureggiocalabriaxn--mgb9awbfbx-os" +
+ "trowwlkpmgujoinvilleirvikashiwazakiyokawaraxn--mgba3a3ejtunkommu" +
+ "nalforbundxn--mgba3a4f16axn--mgba3a4fra1-deltaiwanairforcechirea" +
+ "dthedocscbgxn--mgba7c0bbn0axn--mgbaakc7dvfbxosaves-the-whalessan" +
+ "dria-trani-barletta-andriatranibarlettaandriaxn--mgbaam7a8hakuis" +
+ "-a-hard-workershimokitayamayfirstockholmestrandxn--mgbab2bdxn--m" +
+ "gbah1a3hjkrdxn--mgbai9a5eva00bellunord-frontierxn--mgbai9azgqp6j" +
+ "ejuniperxn--mgbayh7gpalermomahachijolsterxn--mgbbh1a71exn--mgbc0" +
+ "a9azcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgber" +
+ "p4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskydivingxn--m" +
+ "gbqly7c0a67fbcnsantacruzsewhalingrongausdaluxuryxn--mgbqly7cvafr" +
+ "-1xn--mgbt3dhdxn--mgbtf8flapymnturystykaneyamazoexn--mgbtx2benev" +
+ "entodayombolzano-altoadigeometre-experts-comptables3-us-gov-west" +
+ "-1xn--mgbx4cd0abbvieeexn--mix082fedorainfraclouderaxn--mix891fed" +
+ "orapeoplegallodingenxn--mjndalen-64axn--mk0axin-dsldxn--mk1bu44c" +
+ "ntoyotsukaidoxn--mkru45is-leetrentino-s-tirolxn--mlatvuopmi-s4ax" +
+ "n--mli-tlavangenxn--mlselv-iuaxn--moreke-juaxn--mori-qsakuragawa" +
+ "xn--mosjen-eyawatahamaxn--mot-tlazioxn--mre-og-romsdal-qqbuseran" +
+ "ishiaritakurashikis-lostre-toteneis-a-nursembokukitauraxn--msy-u" +
+ "la0hakusanagochijiwadefinimamateramobaraxn--mtta-vrjjat-k7afedor" +
+ "aprojectrani-andria-barletta-trani-andriaxn--muost-0qaxn--mxtq1m" +
+ "isakis-an-actresshiraois-a-musicianxn--ngbc5azdxn--ngbe9e0axn--n" +
+ "gbrxn--41axn--nit225kooris-a-personaltrainerxn--nmesjevuemie-tcb" +
+ "alsan-sudtirollagdenesnaaseinet-freaksuzukis-certifiedunetlifyis" +
+ "-a-nascarfanxn--nnx388axn--nodessakurais-not-certifiedxn--nqv7fs" +
+ "00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaeserveg" +
+ "ame-serverxn--nvuotna-hwaxn--nyqy26axn--o1achernihivgubsvalbardu" +
+ "nloppacificivilaviationissayokkaichiropractichocolatelevisionthe" +
+ "wifiatmparmatsuzakinfinitintelligencexn--o3cw4haldenxn--o3cyx2ax" +
+ "n--od0algxn--od0aq3bentleyomitanocelotenkawavoues3-eu-west-1xn--" +
+ "ogbpf8flatangerxn--oppegrd-ixaxn--ostery-fyaxn--osyro-wuaxn--otu" +
+ "796dxn--p1acfeiraquarelleaseeklogesavonarutolgaxn--p1ais-savedxn" +
+ "--pgbs0dhlxn--porsgu-sta26fermochizukirkenesaxoxn--pssu33lxn--ps" +
+ "sy2uxn--q7ce6axn--q9jyb4collectionxn--qcka1pmckinseyxn--qqqt11mi" +
+ "sasaguris-an-anarchistoricalsocietyxn--qxa6axn--qxamsterdamnserv" +
+ "erbaniaxn--rady-iraxn--rdal-poaxn--rde-ulaxn--rdy-0nabaris-slick" +
+ "autokeinoticeablevangerxn--rennesy-v1axn--rhkkervju-01aferraraxn" +
+ "--rholt-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn-" +
+ "-rht61exn--risa-5naturalsciencesnaturellesvcivilisationissedaluc" +
+ "ernexn--risr-iraxn--rland-uuaxn--rlingen-mxaxn--rmskog-byaxn--rn" +
+ "y31halsaintlouis-a-anarchistoireggio-emilia-romagnakayamannorthf" +
+ "lankatsushikabeebyteapplinzis-a-hunterxn--rovu88beppublishproxyo" +
+ "nagoyaxarnetflixilovecollegefantasyleaguernseyokozeatonsbergivin" +
+ "gjemnes3-eu-west-2xn--rros-granvindafjordxn--rskog-uuaxn--rst-0n" +
+ "aturbruksgymnxn--rsta-framercanvasveioxn--rvc1e0am3exn--ryken-vu" +
+ "axn--ryrvik-byaxn--s-1faithammarfeastafricapitalonewportrentino-" +
+ "a-adigexn--s9brj9colognexus-3xn--sandnessjen-ogbeskidyn-ip24xn--" +
+ "sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgne-graphox" +
+ "n--42c2d9axn--skierv-utazasvelvikomforbarcelonagawakuyachimataij" +
+ "iitatebayashiibahccavuotnagaragusarts3-eu-west-3utilities-1xn--s" +
+ "kjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5natu" +
+ "rhistorischesvizzeraxn--slt-elabcn-north-1xn--smla-hraxn--smna-g" +
+ "ratangentlentapisa-geekopervikazunoticiashitaramaxn--snase-nraxn" +
+ "--sndre-land-0cbestbuyshouses3-us-west-1xn--snes-poaxn--snsa-roa" +
+ "xn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-g" +
+ "gbetainaboxfusejnyanagawalmartaxihuanhktcmembers3-us-west-2xn--s" +
+ "rfold-byaxn--srreisa-q1axn--srum-gratis-a-bulls-fanxn--stfold-9x" +
+ "axn--stjrdal-s1axn--stjrdalshalsen-sqbhzcasertairaholtalenhlfanh" +
+ "s3-website-ap-northeast-1xn--stre-toten-zcbieidskoguchikuzenviro" +
+ "nmentalconservationionjukudoyamaizuruhrxn--t60b56axn--tckwebthin" +
+ "gsvn-reposouthwest1-uslivinghistoryxn--tiq49xqyjelasticbeanstalk" +
+ "azoologyxn--tjme-hraxn--tn0agrinetbankoryokamikawanehonbetsuruta" +
+ "haraxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tirol-" +
+ "rzbielawaltervistainaioirasebastopologyeongnamegawafaicloudinebr" +
+ "askaunicommbankarasjohkameyamatotakadazurewebsiteshikagamiishibu" +
+ "kawakkanaibetsubamericanfamilydsmynasushiobaracingjerdrumcpebets" +
+ "uikiraurskog-holandingivestbytemark12xn--trentin-sdtirol-7vbiell" +
+ "ahppiacenzachpomorskienikonanporocpanamatsuuraxn--trentino-sd-ti" +
+ "rol-c3bieszczadygeyachiyodaejeonbukcoalwaysdatabaseballangenkain" +
+ "anaejrietisalatinabenonicasinorddalivornowtv-infolldalombardiade" +
+ "mbroideryonagunicloudivtasvuodnakamagayahooguyoriikarasjokarasuy" +
+ "amarriottcp4xn--trentino-sdtirol-szbievat-band-campaniaxn--trent" +
+ "inosd-tirol-rzbifukagawashingtondclk3xn--trentinosdtirol-7vbigva" +
+ "lledaostargetmyipanasonicateringebuildingladedyn-berlincolninohe" +
+ "kinannestadivttasvuotnakamuratajimidsundiyoshiokanumazuryukin-th" +
+ "e-bandain-vpncatholicaxiaskimitsubatamibudejjuedischesapeakebaye" +
+ "rnuorochesterxn--trentinsd-tirol-6vbihorologyukuhashimoichinosek" +
+ "igaharaxn--trentinsdtirol-nsbikedaemonmoutheworkpccweddinglassas" +
+ "sinationalheritagets-itgoryurihonjournalistjohninomiyakonojorpel" +
+ "andrangedalombardynalias3-website-ap-southeast-1xn--trgstad-r1ax" +
+ "n--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvestre-totennishia" +
+ "wakuraxn--uc0ay4axn--uist22hamurakamigoris-a-knightpointtohnosho" +
+ "ooshikamaishimodatexn--uisz3gxn--unjrga-rtashkentuscanyxn--unup4" +
+ "yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbtushuissier-justicexn" +
+ "--valle-d-aoste-ehbodoes-itvedestrandxn--valleaoste-e7axn--valle" +
+ "daoste-ebbvadsobetsuitaikikuchikuseihicampobassociatest-iserveco" +
+ "unterstrikeymachinewhampshirealtydalvdalaskanittedallasalleangav" +
+ "iikaasdaburxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctbit" +
+ "swidnicartoonartdecologiaxn--vermgensberatung-pwblogoiplatter-ap" +
+ "pinkhplaystation-cloudyclusterxn--vestvgy-ixa6oxn--vg-yiabkhazia" +
+ "xn--vgan-qoaxn--vgsy-qoa0jelenia-goraxn--vgu402colonialwilliamsb" +
+ "urgrossetouchihayaakasakawaharaxn--vhquvestvagoyxn--vler-qoaxn--" +
+ "vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bilbaokinawash" +
+ "irosatobishimagentositechnologyusuharaxn--w4r85el8fhu5dnraxn--w4" +
+ "rs40lxn--wcvs22dxn--wgbh1coloradoplateaudiopsysantafedjeffersonx" +
+ "n--wgbl6axn--xhq521billustrationredumbrellair-traffic-controlley" +
+ "usuisservehalflifeinsuranceu-3xn--xkc2al3hye2axn--xkc2dl3a5ee0ha" +
+ "ndsonyxn--y9a3aquariumisawaxn--yer-znatuurwetenschappenginexn--y" +
+ "fro4i67oxn--ygarden-p1axn--ygbi2ammxn--45br5cylxn--ystre-slidre-" +
+ "ujbioddaxn--zbx025dxn--zf0ao64axn--zf0avxlxn--zfr164biparachutin" +
+ "gleezeu-4xnbayxz"
// nodes is the list of nodes. Each node is represented as a uint32, which
// encodes the node's children, wildcard bit and node type (as an index into
@@ -535,9233 +542,9307 @@ const text = "9guacuiababia-goracleaningroks-theatree12hpalermomahachijolstere"
// [15 bits] text index
// [ 6 bits] text length
var nodes = [...]uint32{
- 0x20bc43,
- 0x25d9c4,
- 0x2f8cc6,
- 0x217243,
- 0x217246,
- 0x38e886,
- 0x3bb603,
- 0x2392c4,
- 0x3a15c7,
- 0x2f8908,
+ 0x329b43,
+ 0x2f0784,
+ 0x31f886,
+ 0x21a5c3,
+ 0x21a5c6,
+ 0x399386,
+ 0x3bf783,
+ 0x277104,
+ 0x2029c7,
+ 0x31f4c8,
0x1a000c2,
- 0x1f3cf47,
- 0x376f09,
- 0x397eca,
- 0x397ecb,
- 0x23a2c3,
- 0x23cf05,
- 0x22070c2,
- 0x2f5304,
- 0x2f8e43,
- 0x30eb85,
- 0x260ad42,
- 0x360f03,
- 0x2a58bc4,
- 0x30f345,
- 0x2e13602,
- 0x21638e,
- 0x25c3c3,
- 0x3b3dc6,
- 0x3202302,
- 0x3096c7,
- 0x23fa86,
- 0x3606a82,
- 0x28e183,
- 0x235e06,
- 0x2f4148,
- 0x295bc6,
- 0x3c7c04,
+ 0x1f3cd07,
+ 0x37f349,
+ 0x2ddb4a,
+ 0x2ddb4b,
+ 0x23d883,
+ 0x23f745,
+ 0x2202ac2,
+ 0x28c4c4,
+ 0x2c9743,
+ 0x3734c5,
+ 0x2602c02,
+ 0x354743,
+ 0x2a85584,
+ 0x374945,
+ 0x2e0f242,
+ 0x229d8e,
+ 0x260543,
+ 0x3b9946,
+ 0x3205b42,
+ 0x378ac7,
+ 0x242446,
+ 0x36041c2,
+ 0x293b03,
+ 0x232946,
+ 0x38ec88,
+ 0x298246,
+ 0x359944,
0x3a00ac2,
- 0x34b449,
- 0x220787,
- 0x32e5c6,
- 0x36ba09,
- 0x3ce888,
- 0x210944,
- 0x2acb06,
- 0x2076c6,
- 0x3e02002,
- 0x38cc46,
- 0x24d68f,
- 0x3cdb8e,
- 0x22b1c4,
- 0x234c85,
- 0x330d45,
- 0x3aaa09,
- 0x247e89,
- 0x236607,
- 0x2584c6,
- 0x267083,
- 0x422d0c2,
- 0x22d543,
- 0x29b5ca,
- 0x4609983,
- 0x3403c5,
- 0x30a8c2,
- 0x3a4f89,
- 0x4e03b42,
- 0x207a04,
- 0x354186,
- 0x243885,
- 0x36ebc4,
- 0x5626e04,
- 0x203b43,
- 0x23c4c4,
- 0x5a030c2,
- 0x25b344,
- 0x5f2d504,
- 0x316d0a,
+ 0x34b549,
+ 0x22d607,
+ 0x2094c6,
+ 0x3679c9,
+ 0x224748,
+ 0x210204,
+ 0x2f9546,
+ 0x207b46,
+ 0x3e03742,
+ 0x239b06,
+ 0x216b8f,
+ 0x3cd40e,
+ 0x22ff04,
+ 0x311205,
+ 0x32dbc5,
+ 0x3aec89,
+ 0x2494c9,
+ 0x233147,
+ 0x221b46,
+ 0x21da43,
+ 0x420b602,
+ 0x233843,
+ 0x2b200a,
+ 0x4602043,
+ 0x3402c5,
+ 0x30c842,
+ 0x3ab409,
+ 0x4e00ec2,
+ 0x207e84,
+ 0x346706,
+ 0x2c54c5,
+ 0x376bc4,
+ 0x5646644,
+ 0x2030c3,
+ 0x23a844,
+ 0x5a00b82,
+ 0x3e3104,
+ 0x5f35d04,
+ 0x3e1b0a,
0x6200882,
- 0x3cd347,
- 0x27b5c8,
- 0x7a08502,
- 0x336287,
- 0x2d36c4,
- 0x2d36c7,
- 0x38aa45,
- 0x38bf07,
- 0x34a906,
- 0x29ac84,
- 0x3633c5,
- 0x282507,
- 0x920c142,
- 0x38cdc3,
- 0x960b4c2,
- 0x3b5e03,
- 0x9a08742,
- 0x2691c5,
+ 0x2b82c7,
+ 0x36f9c8,
+ 0x7a01e02,
+ 0x335087,
+ 0x2f5404,
+ 0x2f5407,
+ 0x3ea985,
+ 0x381247,
+ 0x340886,
+ 0x349f84,
+ 0x3544c5,
+ 0x26d147,
+ 0x9205202,
+ 0x239c83,
+ 0x961a7c2,
+ 0x3b6143,
+ 0x9a04142,
+ 0x26e645,
0x9e00202,
- 0x371604,
- 0x387345,
- 0x22b107,
- 0x2e954e,
- 0x206984,
- 0x283b04,
- 0x2079c3,
- 0x30d489,
- 0x2c4e4b,
- 0x2e1248,
- 0x32b788,
- 0x3328c8,
- 0x20a888,
- 0xa36b84a,
- 0x38be07,
- 0x2f7086,
- 0xa617282,
- 0x35ca43,
- 0x3d6443,
- 0x3d8084,
- 0x35ca83,
- 0x3bb643,
- 0x1738b82,
- 0xaa04702,
- 0x28a385,
- 0x261e86,
- 0x252084,
- 0x3b0cc7,
- 0x25b186,
- 0x2d4704,
- 0x3be9c7,
- 0x204703,
- 0xb2dc982,
- 0xb728c42,
- 0xba13982,
- 0x230646,
- 0xbe00282,
- 0x26b385,
- 0x33a0c3,
- 0x3de644,
- 0x2fd584,
- 0x2fd585,
- 0x3e9683,
- 0xc253c43,
- 0xc606342,
- 0x20e9c5,
- 0x20e9cb,
- 0x223c8b,
- 0x20e804,
- 0x20ee49,
- 0x210404,
- 0xca10d82,
- 0x211a83,
- 0x2121c3,
- 0xce02502,
- 0x23020a,
- 0xd20bd42,
- 0x2f5585,
- 0x2ece4a,
- 0x246f44,
- 0x213f43,
- 0x2154c4,
- 0x2178c3,
- 0x2178c4,
- 0x2178c7,
- 0x218705,
- 0x219546,
- 0x21a186,
- 0x2172c3,
- 0x220f88,
- 0x215b03,
- 0xd604242,
- 0x2fc548,
- 0x295e4b,
- 0x229c88,
- 0x22ac46,
- 0x22b987,
- 0x22e908,
- 0xee016c2,
- 0xf2295c2,
- 0x278408,
- 0x20b947,
- 0x206e85,
- 0x3e2208,
- 0xf61c008,
- 0x26a0c3,
- 0x235a44,
- 0x38e902,
- 0xfa36c42,
- 0xfe07f42,
- 0x10637242,
- 0x237243,
- 0x10a04182,
- 0x312683,
- 0x2135c4,
- 0x210903,
- 0x210904,
- 0x3a264b,
- 0x204183,
- 0x2f27c6,
- 0x284a84,
- 0x2ccf8e,
- 0x240ec5,
- 0x257008,
- 0x2716c7,
- 0x2716ca,
- 0x21b9c3,
- 0x25d7c7,
- 0x2c5005,
- 0x239e44,
- 0x25ef06,
- 0x25ef07,
- 0x3601c4,
- 0x10f10344,
- 0x3169c4,
- 0x3169c6,
- 0x25d4c4,
- 0x3c2086,
- 0x206c43,
- 0x206c48,
- 0x20b2c8,
- 0x2b3843,
- 0x2301c3,
- 0x344544,
- 0x357203,
- 0x11604042,
- 0x11aea202,
- 0x217843,
- 0x203c06,
- 0x3796c3,
- 0x2fd344,
- 0x11efd0c2,
- 0x343583,
- 0x332f83,
- 0x21cdc2,
- 0x12200d42,
- 0x2d7946,
- 0x228b07,
- 0x27b347,
- 0x2c7cc5,
- 0x386404,
- 0x3d4a45,
- 0x3dcc47,
- 0x2b5ec9,
- 0x2cb106,
- 0x2c7bc6,
- 0x1320c602,
- 0x2b6688,
- 0x321346,
- 0x327b05,
- 0x2f7787,
- 0x2fafc4,
- 0x2fafc5,
- 0x1370e7c4,
- 0x30e7c8,
- 0x13a08d02,
- 0x13e00482,
- 0x24c3c6,
+ 0x379b84,
+ 0x239305,
+ 0x22fe47,
+ 0x2f78ce,
+ 0x2c4ac4,
+ 0x219684,
+ 0x207e43,
+ 0x3bc989,
+ 0x2e700b,
+ 0x2f8288,
+ 0x32acc8,
+ 0x330248,
+ 0x3d0bc8,
+ 0xa36780a,
+ 0x381147,
+ 0x3d7f06,
+ 0xa61a602,
+ 0x271d03,
+ 0x3dfa43,
+ 0x3e1204,
+ 0x271d43,
+ 0x396303,
+ 0x17385c2,
+ 0xaa02b82,
+ 0x28ffc5,
+ 0x266446,
+ 0x2a59c4,
+ 0x3a94c7,
+ 0x24f486,
+ 0x2d64c4,
+ 0x3c13c7,
+ 0x2194c3,
+ 0xb6e29c2,
+ 0xbb27082,
+ 0xbe27bc2,
+ 0x227bc6,
+ 0xc200282,
+ 0x269185,
+ 0x339b03,
+ 0x3d9704,
+ 0x2fe784,
+ 0x2fe785,
+ 0x3ef083,
+ 0xc658843,
+ 0xca06f02,
+ 0x20d3c5,
+ 0x20d3cb,
+ 0x20e18b,
+ 0x2045c4,
+ 0x20d7c9,
+ 0x20fcc4,
+ 0xce10602,
+ 0x210e43,
+ 0x2113c3,
+ 0xd20a182,
+ 0x21e78a,
+ 0xd602a02,
+ 0x28c745,
+ 0x2f348a,
+ 0x2510c4,
+ 0x212a43,
+ 0x213104,
+ 0x2151c3,
+ 0x2151c4,
+ 0x2151c7,
+ 0x217005,
+ 0x217c06,
+ 0x2183c6,
+ 0x21a643,
+ 0x21ffc8,
+ 0x213743,
+ 0xda037c2,
+ 0x230d08,
+ 0x2984cb,
+ 0x2284c8,
+ 0x229146,
+ 0x22a187,
+ 0x22d208,
+ 0xf205f42,
+ 0xf6272c2,
+ 0x27c848,
+ 0x2370c7,
+ 0x314b85,
+ 0xfb14b88,
+ 0xfe23848,
+ 0x2551c3,
+ 0x2319c4,
+ 0x399402,
+ 0x10232002,
+ 0x106083c2,
+ 0x10e32382,
+ 0x232383,
+ 0x11203702,
+ 0x30e183,
+ 0x220ec4,
+ 0x207243,
+ 0x2101c4,
+ 0x24f18b,
+ 0x203703,
+ 0x2fa346,
+ 0x28cfc4,
+ 0x2d06ce,
+ 0x384b05,
+ 0x277848,
+ 0x3b9a47,
+ 0x3b9a4a,
+ 0x223203,
+ 0x2f0587,
+ 0x2e71c5,
+ 0x238b84,
+ 0x25fc86,
+ 0x25fc87,
+ 0x36d4c4,
+ 0x117145c4,
+ 0x3c5a04,
+ 0x24ed84,
+ 0x3d1606,
+ 0x224dc3,
+ 0x3d5608,
+ 0x3d7348,
+ 0x29e303,
+ 0x21e743,
+ 0x343a04,
+ 0x356943,
+ 0x11e035c2,
+ 0x122b79c2,
+ 0x202546,
+ 0x2f9643,
+ 0x3b2fc4,
+ 0x12648fc2,
+ 0x29ed03,
+ 0x381a43,
+ 0x21ce82,
+ 0x12a02102,
+ 0x2dd246,
+ 0x21e247,
+ 0x36f747,
+ 0x2ef505,
+ 0x348b84,
+ 0x2fbb05,
+ 0x2d1bc7,
+ 0x2ba349,
+ 0x2bbdc6,
+ 0x2ef406,
+ 0x13a12fc2,
+ 0x318508,
+ 0x321246,
+ 0x30a6c5,
+ 0x309f47,
+ 0x310244,
+ 0x310245,
+ 0x373104,
+ 0x373108,
+ 0x13e0d482,
+ 0x14200482,
+ 0x254206,
0x200488,
- 0x325105,
- 0x3264c6,
- 0x329dc8,
- 0x34c608,
- 0x14203ec5,
- 0x16e2f004,
- 0x2b0f87,
- 0x1720fe82,
- 0x1762e702,
- 0x18a16542,
- 0x354285,
- 0x192904c5,
- 0x241c06,
- 0x3b6207,
- 0x368e07,
- 0x19616543,
- 0x3d6787,
- 0x283a08,
- 0x273b4bc9,
- 0x216547,
- 0x3e03c7,
- 0x238308,
- 0x238b06,
- 0x239946,
- 0x23a58c,
- 0x23b58a,
- 0x23ba87,
- 0x23cdcb,
- 0x23dd47,
- 0x23dd4e,
- 0x2763eb84,
- 0x23ec84,
- 0x240d87,
- 0x24be07,
- 0x246386,
- 0x246387,
- 0x3b74c7,
- 0x203643,
- 0x27a13b02,
- 0x248746,
- 0x24874a,
- 0x248acb,
- 0x249f07,
- 0x24aac5,
- 0x24b283,
- 0x24c646,
- 0x24c647,
- 0x2feac3,
- 0x27e00102,
- 0x24d30a,
- 0x28378742,
- 0x2863d842,
- 0x28a47402,
- 0x28e3fb82,
- 0x24f085,
- 0x24fdc4,
- 0x29a0c542,
- 0x25b3c5,
- 0x231943,
- 0x29d005,
- 0x20a784,
- 0x21e5c4,
- 0x2d9d06,
- 0x25cc06,
- 0x20ebc3,
- 0x3c1a44,
- 0x341883,
- 0x2aa03242,
- 0x2b1504,
- 0x3a1a46,
- 0x2b1505,
- 0x207106,
- 0x2f7888,
- 0x233d04,
- 0x2b0ac8,
- 0x2f3f05,
- 0x27ce88,
- 0x2d57c6,
- 0x21c787,
- 0x279ec4,
- 0x2be79ec6,
- 0x2c220a83,
- 0x3a6543,
- 0x2c05c8,
- 0x334684,
- 0x2c615587,
- 0x280dc6,
- 0x2e9b49,
- 0x362488,
- 0x32c448,
- 0x333004,
- 0x20d303,
- 0x249182,
- 0x2ce57f02,
- 0x2d226cc2,
- 0x20dd83,
- 0x2d615fc2,
- 0x2fea44,
- 0x285786,
- 0x23ca03,
- 0x2c72c7,
- 0x36ca43,
- 0x3e1348,
- 0x2253c5,
- 0x267d03,
- 0x3872c5,
- 0x387404,
- 0x3bad86,
- 0x22a386,
- 0x22b046,
- 0x2580c4,
- 0x23e103,
- 0x2da15282,
- 0x2de3d545,
+ 0x328205,
+ 0x34c246,
+ 0x34ea08,
+ 0x35d3c8,
+ 0x14602cc5,
+ 0x17243244,
+ 0x285687,
+ 0x1760f742,
+ 0x17ab90c2,
+ 0x18e05842,
+ 0x346805,
+ 0x19a96945,
+ 0x277e86,
+ 0x3b6547,
+ 0x3ba447,
+ 0x19e29f43,
+ 0x33f007,
+ 0x3cc1c8,
+ 0x27635149,
+ 0x229f47,
+ 0x235887,
+ 0x342548,
+ 0x236086,
+ 0x238686,
+ 0x23b74c,
+ 0x23cd0a,
+ 0x23d8c7,
+ 0x23f60b,
+ 0x240307,
+ 0x24030e,
+ 0x27a40ec4,
+ 0x241284,
+ 0x244887,
+ 0x253c47,
+ 0x248706,
+ 0x248707,
+ 0x32b4c7,
+ 0x261c03,
+ 0x27e0f1c2,
+ 0x249ec6,
+ 0x249eca,
+ 0x24ab0b,
+ 0x24c887,
+ 0x24d305,
+ 0x24d783,
+ 0x24df46,
+ 0x24df47,
+ 0x38f183,
+ 0x28200102,
+ 0x24eaca,
+ 0x28729c42,
+ 0x28ba8ac2,
+ 0x28e48e02,
+ 0x29238fc2,
+ 0x251805,
+ 0x252204,
+ 0x29e01bc2,
+ 0x3e3185,
+ 0x24b103,
+ 0x2a4585,
+ 0x202444,
+ 0x216384,
+ 0x2dfb06,
+ 0x2608c6,
+ 0x20d5c3,
+ 0x3d4804,
+ 0x340b43,
+ 0x2ae00d02,
+ 0x22a504,
+ 0x22a506,
+ 0x257a85,
+ 0x2b5a46,
+ 0x30a048,
+ 0x2138c4,
+ 0x31de08,
+ 0x38ea45,
+ 0x281d88,
+ 0x2d9f06,
+ 0x21ba87,
+ 0x27f784,
+ 0x2c27f786,
+ 0x2c605483,
+ 0x3ac1c3,
+ 0x2cc488,
+ 0x333444,
+ 0x2ca131c7,
+ 0x24c106,
+ 0x2f1289,
+ 0x366948,
+ 0x330988,
+ 0x332384,
+ 0x3d69c3,
+ 0x24b1c2,
+ 0x2d25d9c2,
+ 0x2d61c982,
+ 0x31f383,
+ 0x2da02b02,
+ 0x38f104,
+ 0x288c46,
+ 0x23eb43,
+ 0x2cd707,
+ 0x385d43,
+ 0x2c4b88,
+ 0x229545,
+ 0x26c9c3,
+ 0x239285,
+ 0x2393c4,
+ 0x3a6f86,
+ 0x22bb06,
+ 0x22fd86,
+ 0x25db84,
+ 0x2406c3,
+ 0x2de46882,
+ 0x2e23fd85,
0x200843,
- 0x2e603e82,
- 0x23a543,
- 0x3ca805,
- 0x2ea22bc3,
- 0x2f23c589,
- 0x2f600942,
- 0x2fe05342,
- 0x2973c5,
+ 0x2ea03402,
+ 0x220203,
+ 0x205a45,
+ 0x2ee24d03,
+ 0x2f63e6c9,
+ 0x2fa00942,
+ 0x30204f42,
+ 0x29bc85,
+ 0x21ecc6,
+ 0x29d146,
+ 0x308d88,
+ 0x308d8b,
+ 0x345ecb,
+ 0x38a445,
+ 0x2e2f49,
+ 0x1602642,
+ 0x31fb88,
+ 0x20dac4,
+ 0x30a03642,
+ 0x33dfc3,
+ 0x31253e06,
+ 0x3160ea82,
+ 0x3d11c8,
+ 0x31a06cc2,
+ 0x26f54a,
+ 0x322771c3,
+ 0x32b7f986,
+ 0x315d88,
+ 0x398846,
+ 0x3957c7,
+ 0x216d87,
+ 0x2076ca,
+ 0x251144,
+ 0x364a84,
+ 0x37ee49,
+ 0x32fb9585,
+ 0x229dc6,
+ 0x22e783,
+ 0x282a04,
+ 0x3320a6c4,
+ 0x20a6c7,
+ 0x33656c07,
+ 0x29ed44,
+ 0x2400c5,
+ 0x277f48,
+ 0x252d07,
+ 0x252f87,
+ 0x33a18b02,
+ 0x3a8084,
+ 0x2a51c8,
+ 0x2547c4,
+ 0x259344,
+ 0x259745,
+ 0x259887,
+ 0x34689bc9,
+ 0x25a444,
+ 0x25b309,
+ 0x25b9c8,
+ 0x25c604,
+ 0x25c607,
+ 0x25d7c3,
+ 0x25e587,
+ 0x34a00c02,
+ 0x16c7402,
+ 0x25f746,
+ 0x2bf047,
+ 0x2600c4,
+ 0x261687,
+ 0x263287,
+ 0x263883,
+ 0x34e62642,
+ 0x213802,
+ 0x2649c3,
+ 0x2649c4,
+ 0x2649cb,
+ 0x32adc8,
+ 0x213804,
+ 0x265e85,
+ 0x2676c7,
+ 0x2f4d05,
+ 0x31b2ca,
+ 0x26ac43,
+ 0x35202e42,
+ 0x215a44,
+ 0x271f49,
+ 0x275843,
+ 0x275907,
+ 0x330689,
+ 0x3929c8,
+ 0x20f283,
+ 0x28f107,
+ 0x27e1c3,
+ 0x295f04,
+ 0x2975c9,
+ 0x29a286,
+ 0x3a3f03,
+ 0x202a82,
+ 0x26dc83,
+ 0x2c7207,
+ 0x39a245,
+ 0x2ca6c6,
+ 0x29e6c4,
+ 0x37bf05,
+ 0x28fa83,
+ 0x21c186,
+ 0x218143,
+ 0x20d9c2,
+ 0x258804,
+ 0x356a5c02,
+ 0x35b10a03,
+ 0x35e038c2,
+ 0x2574c3,
+ 0x218844,
+ 0x242047,
0x21f406,
- 0x2b2986,
- 0x308cc8,
- 0x308ccb,
- 0x346d8b,
- 0x35b445,
- 0x2dcf09,
- 0x1600b42,
- 0x2d2908,
- 0x20f144,
- 0x30602bc2,
- 0x33e203,
- 0x30e4bfc6,
- 0x31200fc2,
- 0x20ae88,
- 0x31613242,
- 0x37aa4a,
- 0x32239383,
- 0x32b77546,
- 0x318348,
- 0x38db06,
- 0x389c87,
- 0x24d887,
- 0x20724a,
- 0x246fc4,
- 0x360c84,
- 0x376889,
- 0x32fb3a05,
- 0x2163c6,
- 0x20bb43,
- 0x263284,
- 0x33232d44,
- 0x32d187,
- 0x3365e987,
- 0x2edb44,
- 0x250145,
- 0x241cc8,
- 0x250387,
- 0x250607,
- 0x33a18242,
- 0x2a2704,
- 0x29e388,
- 0x251b04,
- 0x254744,
- 0x254b05,
- 0x254c47,
- 0x3468b8c9,
- 0x2555c4,
- 0x256b09,
- 0x256d48,
- 0x257604,
- 0x257607,
- 0x257d03,
- 0x259ac7,
- 0x34a01282,
- 0x16c0502,
- 0x25b506,
- 0x25bb47,
- 0x25c404,
- 0x25e347,
- 0x25f247,
- 0x25fc83,
- 0x34e5c082,
- 0x239fc2,
- 0x260743,
- 0x260744,
- 0x26074b,
- 0x32b888,
- 0x2891c4,
- 0x2618c5,
- 0x262fc7,
- 0x2ee845,
- 0x3b930a,
- 0x266b03,
- 0x3520eb02,
- 0x21dc84,
- 0x26b6c9,
- 0x26f443,
- 0x26f507,
- 0x384989,
- 0x211fc8,
- 0x213bc3,
- 0x286bc7,
- 0x288f89,
- 0x276a83,
- 0x290984,
- 0x291d49,
- 0x2951c6,
- 0x3825c3,
- 0x204982,
- 0x268803,
- 0x2c0307,
- 0x38f005,
- 0x2c4c46,
- 0x219a44,
- 0x372285,
- 0x289e43,
- 0x21abc6,
- 0x22e143,
- 0x20c342,
- 0x253c04,
- 0x35634402,
- 0x35a34403,
- 0x35e04342,
- 0x253283,
- 0x21a604,
- 0x323c87,
- 0x21fb46,
- 0x290942,
- 0x3620e8c2,
- 0x32c684,
- 0x36a17a42,
- 0x36e09ac2,
- 0x3caac4,
- 0x3caac5,
- 0x3b6b85,
- 0x37d146,
- 0x37207042,
- 0x207045,
- 0x20f745,
- 0x213dc3,
- 0x2267c6,
- 0x227105,
- 0x2305c2,
- 0x35ac85,
- 0x2305c4,
- 0x233c43,
- 0x233e83,
- 0x3760a302,
- 0x2318c7,
- 0x257784,
- 0x257789,
- 0x263184,
- 0x290343,
- 0x2bd008,
- 0x37a90344,
- 0x290346,
- 0x2b05c3,
- 0x262243,
- 0x343b43,
- 0x37f03e02,
- 0x30ad42,
+ 0x20a682,
+ 0x36204682,
+ 0x330bc4,
+ 0x36a15342,
+ 0x36e05d02,
+ 0x205d04,
+ 0x205d05,
+ 0x3ce545,
+ 0x3b6ec6,
+ 0x37208442,
+ 0x3d5a05,
+ 0x3d9e45,
+ 0x296883,
+ 0x239d46,
+ 0x212005,
+ 0x227b42,
+ 0x35d005,
+ 0x227b44,
+ 0x230783,
+ 0x2309c3,
+ 0x3760ccc2,
+ 0x26d347,
+ 0x267884,
+ 0x267889,
+ 0x282904,
+ 0x2967c3,
+ 0x2c3e48,
+ 0x37a967c4,
+ 0x2967c6,
+ 0x2b5543,
+ 0x266803,
+ 0x2e9c43,
+ 0x37f003c2,
+ 0x392ec2,
0x38200642,
- 0x33bfc8,
- 0x2158c8,
- 0x3bfcc6,
- 0x385145,
- 0x323e05,
- 0x202347,
- 0x386823c5,
- 0x2038c2,
- 0x38aa0a82,
+ 0x33b848,
+ 0x213508,
+ 0x3c4846,
+ 0x2916c5,
+ 0x234b85,
+ 0x209fc7,
+ 0x3868a905,
+ 0x21e682,
+ 0x38aa71c2,
0x38e00042,
- 0x2832c8,
- 0x2b65c5,
- 0x302f84,
- 0x250d45,
- 0x2514c7,
- 0x3b0184,
- 0x24d202,
- 0x3923b502,
- 0x350984,
- 0x22fec7,
- 0x297b47,
- 0x38bec4,
- 0x3d7403,
- 0x2b3784,
- 0x2b3788,
- 0x239c86,
- 0x25ed8a,
- 0x358e44,
- 0x29ddc8,
- 0x24ffc4,
- 0x22ba86,
- 0x2a0a44,
- 0x354586,
- 0x257a49,
- 0x221247,
- 0x39d543,
- 0x39605102,
- 0x386d03,
- 0x210f82,
- 0x39a027c2,
- 0x268f86,
- 0x3b2848,
- 0x2b2b07,
- 0x2331c9,
- 0x2b2cc9,
- 0x2b5585,
- 0x2b6f09,
- 0x2b7705,
- 0x2b8545,
- 0x2b94c8,
- 0x39e17a84,
- 0x3a25fdc7,
- 0x2b96c3,
- 0x2b96c7,
- 0x3e0786,
- 0x2b9c87,
- 0x2af945,
- 0x2d0843,
- 0x3a63b342,
- 0x214184,
- 0x3aa11402,
- 0x3ae1ec82,
- 0x31e946,
- 0x27b545,
- 0x2bbd87,
- 0x3c32c3,
- 0x20ccc4,
- 0x21e103,
- 0x2f6883,
- 0x3b2042c2,
- 0x3ba08e82,
- 0x38e984,
- 0x25c043,
- 0x308985,
- 0x3be05502,
- 0x3c602102,
- 0x222f86,
- 0x2e9484,
- 0x2f0284,
- 0x2f028a,
- 0x3ce005c2,
- 0x20e103,
- 0x23498a,
- 0x26a7c8,
- 0x3d2b1b84,
+ 0x321ec8,
+ 0x318445,
+ 0x302d04,
+ 0x24da05,
+ 0x2562c7,
+ 0x295d04,
+ 0x262442,
+ 0x3922cf82,
+ 0x351b84,
+ 0x230607,
+ 0x29c207,
+ 0x381204,
+ 0x3e0443,
+ 0x29e244,
+ 0x29e248,
+ 0x396389c6,
+ 0x25fb0a,
+ 0x35b6c4,
+ 0x2a4c08,
+ 0x23ff44,
+ 0x22a286,
+ 0x2a7184,
+ 0x346b06,
+ 0x267b49,
+ 0x223d07,
+ 0x3a6c43,
+ 0x39a04d02,
+ 0x3c3943,
+ 0x210802,
+ 0x39e0a442,
+ 0x26e406,
+ 0x24bc88,
+ 0x2b6347,
+ 0x233549,
+ 0x2b6509,
+ 0x2b9a05,
+ 0x2bb609,
+ 0x2bc705,
+ 0x2bd545,
+ 0x2be748,
+ 0x3a207304,
+ 0x3a634307,
+ 0x235c43,
+ 0x2be947,
+ 0x235c46,
+ 0x2bf5c7,
+ 0x2b4445,
+ 0x2354c3,
+ 0x3aa3cac2,
+ 0x212c84,
+ 0x3ae05302,
+ 0x3b21d7c2,
+ 0x30db46,
+ 0x36f945,
+ 0x2c2507,
+ 0x383d03,
+ 0x238404,
+ 0x20f583,
+ 0x236e03,
+ 0x3b603842,
+ 0x3be075c2,
+ 0x399484,
+ 0x262603,
+ 0x308a45,
+ 0x3c209c42,
+ 0x3ca08102,
+ 0x39f646,
+ 0x2f7804,
+ 0x2fd3c4,
+ 0x2fd3ca,
+ 0x3d2005c2,
+ 0x203e83,
+ 0x310f0a,
+ 0x3a8488,
+ 0x3d658104,
0x2005c3,
- 0x3d687643,
- 0x326909,
- 0x280609,
- 0x2c73c6,
- 0x3da43543,
- 0x2887cd,
- 0x3a8e86,
- 0x3e0e8b,
- 0x3de087c2,
- 0x2ac948,
- 0x42221082,
- 0x42601e02,
- 0x398285,
- 0x42a02642,
- 0x2b3187,
- 0x202983,
- 0x2272c8,
- 0x42e06002,
- 0x3a9984,
- 0x22a003,
- 0x3532c5,
- 0x2491c6,
- 0x22cf04,
- 0x230183,
- 0x44205b42,
- 0x35b3c4,
- 0x2beb45,
- 0x2bff07,
- 0x285203,
- 0x2c1443,
- 0x1619e82,
- 0x2c1b03,
- 0x2c2103,
- 0x44600e02,
- 0x239104,
- 0x23e306,
- 0x288d83,
- 0x2c2a83,
- 0x44a54202,
- 0x254208,
- 0x2c3a04,
- 0x2052c6,
- 0x387d07,
- 0x3d4dc6,
- 0x2c0544,
- 0x52e025c2,
- 0x3e064b,
- 0x30624e,
- 0x2201cf,
- 0x3bc5c3,
- 0x536687c2,
- 0x161ee02,
- 0x53a01f42,
- 0x2f9843,
- 0x20b603,
- 0x2732c6,
- 0x2cb846,
- 0x2bc847,
- 0x3b7004,
- 0x53e1f542,
- 0x542258c2,
- 0x302645,
- 0x32a647,
- 0x2c6106,
- 0x5463d782,
- 0x382f04,
- 0x2cc083,
- 0x54a07bc2,
- 0x54f73803,
- 0x2cd984,
- 0x2d2249,
- 0x552da042,
- 0x55611b82,
- 0x2876c5,
- 0x55ada802,
- 0x56205542,
- 0x35fb87,
- 0x37718b,
- 0x24d645,
- 0x264489,
- 0x275d46,
- 0x56608004,
- 0x208009,
- 0x2f9cc7,
- 0x349887,
- 0x205543,
- 0x2f1a46,
- 0x351887,
- 0x24c243,
- 0x2a4106,
- 0x56e1f002,
- 0x57225e82,
- 0x217443,
- 0x3a5145,
- 0x21c307,
- 0x23f286,
- 0x38ef85,
- 0x263104,
- 0x2aee85,
- 0x390bc4,
- 0x5760b402,
- 0x2d8d84,
- 0x2cbe44,
- 0x39c84d,
- 0x2cbe49,
- 0x237848,
- 0x262c84,
- 0x38d345,
- 0x3c2307,
- 0x3c2bc4,
- 0x273847,
- 0x228f05,
- 0x57ab4484,
- 0x2c5b45,
- 0x26e104,
- 0x316546,
- 0x3b6005,
- 0x57e6b2c2,
- 0x225e43,
- 0x333e43,
- 0x2c8784,
- 0x2c8785,
- 0x208c86,
- 0x235585,
- 0x263944,
- 0x58392e03,
- 0x587d1a86,
- 0x219405,
- 0x21b385,
- 0x3b6104,
- 0x2f93c3,
- 0x358ecc,
- 0x58ac0002,
- 0x58e00e82,
- 0x59209d42,
- 0x21b283,
- 0x21b284,
- 0x59610442,
- 0x308108,
- 0x2c4d05,
- 0x2dafc4,
- 0x359186,
- 0x59a205c2,
- 0x59e109c2,
- 0x5a200c42,
- 0x2a3c05,
- 0x354806,
- 0x232c84,
- 0x236346,
- 0x213186,
- 0x25aa03,
- 0x5a694b4a,
- 0x2853c5,
- 0x29b583,
- 0x20f546,
- 0x5aa0f549,
- 0x22c4c7,
- 0x3c8c08,
- 0x3ce749,
- 0x2b6048,
- 0x209146,
- 0x207cc3,
- 0x5af1de42,
- 0x32bd88,
- 0x5b256e02,
- 0x5b601582,
- 0x233243,
- 0x2efe85,
- 0x280f44,
- 0x3e27c9,
- 0x386e04,
- 0x38d188,
- 0x5be10fc3,
- 0x5c3a2ac4,
- 0x21f448,
- 0x5c70df02,
- 0x2cf1c2,
- 0x330cc5,
- 0x34af09,
- 0x216443,
- 0x31b884,
- 0x36e504,
- 0x20b683,
- 0x28bf8a,
- 0x5cb0f082,
- 0x5ce13fc2,
- 0x2dc903,
- 0x3939c3,
- 0x1609382,
- 0x35c243,
- 0x5d228882,
- 0x5d600bc2,
- 0x5da8d4c4,
- 0x28d4c6,
- 0x276e84,
- 0x283103,
- 0x28f583,
- 0x5de00bc3,
- 0x248e46,
- 0x3de805,
- 0x2e0947,
- 0x2e0886,
- 0x2e0e48,
- 0x2e1046,
- 0x2239c4,
- 0x2a6a8b,
- 0x2e30c3,
- 0x2e30c5,
- 0x2165c2,
- 0x35fe82,
- 0x5e24f102,
- 0x5e603742,
- 0x20a083,
- 0x5ea77782,
- 0x277783,
- 0x2e4103,
- 0x5f2093c2,
- 0x5f6e8306,
- 0x35e3c6,
- 0x5fae8442,
- 0x5fe12202,
- 0x60233ec2,
- 0x60ea9542,
- 0x61345342,
- 0x61602802,
- 0x20b0c3,
- 0x3da086,
- 0x61a1b544,
- 0x2b130a,
- 0x3b1d46,
- 0x285084,
- 0x202703,
- 0x62606c02,
- 0x204cc2,
- 0x26f843,
- 0x62a296c3,
- 0x3c5847,
- 0x3b5f07,
- 0x67e60847,
- 0x341607,
- 0x232403,
- 0x23240a,
- 0x257204,
- 0x31e544,
- 0x31e54a,
- 0x24a905,
- 0x6823a382,
- 0x2583c3,
- 0x68600602,
- 0x257743,
- 0x386cc3,
- 0x68e00582,
- 0x283984,
- 0x202544,
- 0x2032c5,
- 0x3301c5,
- 0x236e86,
- 0x2fb4c6,
- 0x6924ba82,
- 0x69601cc2,
- 0x2f97c5,
- 0x35e0d2,
- 0x298a06,
- 0x291c43,
- 0x2b4ac6,
- 0x2cf8c5,
- 0x1603442,
- 0x71a056c2,
- 0x341143,
- 0x212bc3,
- 0x29c403,
- 0x71e01102,
- 0x21e803,
- 0x7222d4c2,
- 0x201d03,
- 0x3b1008,
- 0x241c43,
- 0x2b5406,
- 0x3e3047,
- 0x34dbc6,
- 0x34dbcb,
- 0x284fc7,
- 0x33ee44,
- 0x72a00c02,
- 0x2c4b85,
- 0x72e2f483,
- 0x23b843,
- 0x39fd45,
- 0x348ec3,
- 0x73748ec6,
- 0x3e514a,
- 0x2ade43,
- 0x213a04,
+ 0x249bc3,
+ 0x34c689,
+ 0x27ddc9,
+ 0x2cd806,
+ 0x3da5e043,
+ 0x2baf8d,
+ 0x328846,
+ 0x35c70b,
+ 0x3de0f002,
+ 0x2f9388,
+ 0x42a200c2,
+ 0x42e019c2,
+ 0x2c0c85,
+ 0x43203382,
+ 0x2b2507,
+ 0x2121c3,
+ 0x2121c8,
+ 0x43605fc2,
+ 0x39ec44,
+ 0x3e0643,
+ 0x24b206,
+ 0x2274c4,
+ 0x21e703,
+ 0x44a06702,
+ 0x38a3c4,
+ 0x2c6045,
+ 0x2c6e07,
+ 0x28d743,
+ 0x2c7dc3,
+ 0x161a742,
+ 0x2c8483,
+ 0x2c8803,
+ 0x44e00c42,
+ 0x276f44,
+ 0x2408c6,
+ 0x328cc3,
+ 0x2c8c83,
+ 0x45258e02,
+ 0x258e08,
+ 0x2c9a44,
+ 0x204ec6,
+ 0x393047,
+ 0x2a2046,
+ 0x2cc404,
+ 0x53604842,
+ 0x235b0b,
+ 0x2e894e,
+ 0x21fa8f,
+ 0x2e1803,
+ 0x53e6dc42,
+ 0x161d942,
+ 0x54203e42,
+ 0x2a94c3,
+ 0x28d243,
+ 0x2bc506,
+ 0x34efc6,
+ 0x2d8bc7,
+ 0x3835c4,
+ 0x5461ee02,
+ 0x54a17682,
+ 0x240d85,
+ 0x31a707,
+ 0x2cb806,
+ 0x54e78102,
+ 0x38d184,
+ 0x2d12c3,
+ 0x55208042,
+ 0x5577c743,
+ 0x2d2684,
+ 0x2d8149,
+ 0x55adfe42,
+ 0x55e19f42,
+ 0x254b45,
+ 0x562e0602,
+ 0x56a065c2,
+ 0x362607,
+ 0x37f5cb,
+ 0x216b45,
+ 0x2610c9,
+ 0x268b06,
+ 0x56e08484,
+ 0x208489,
+ 0x36e507,
+ 0x3e2d07,
+ 0x225903,
+ 0x2f9206,
+ 0x352a87,
+ 0x21b643,
+ 0x2ab186,
+ 0x5762cbc2,
+ 0x57a2b342,
+ 0x215703,
+ 0x3ab5c5,
+ 0x223b47,
+ 0x241886,
+ 0x39a1c5,
+ 0x267804,
+ 0x2b3985,
+ 0x30c904,
+ 0x57e04442,
+ 0x2deb84,
+ 0x2d1084,
+ 0x3ec38d,
+ 0x2d1089,
+ 0x25c088,
+ 0x267384,
+ 0x209c05,
+ 0x32b287,
+ 0x3470c4,
+ 0x3d5d07,
+ 0x242f45,
+ 0x582b7144,
+ 0x2b2b85,
+ 0x20c444,
+ 0x3c8586,
+ 0x3b6345,
+ 0x58601a82,
+ 0x22b303,
+ 0x3018c3,
+ 0x244bc4,
+ 0x244bc5,
+ 0x386dc6,
+ 0x255d45,
+ 0x2680c4,
+ 0x58b0b703,
+ 0x58e12686,
+ 0x222705,
+ 0x222bc5,
+ 0x3b6444,
+ 0x2fde43,
+ 0x35b74c,
+ 0x592c5b02,
+ 0x59601742,
+ 0x59a0b982,
+ 0x2280c3,
+ 0x2280c4,
+ 0x59e0fd02,
+ 0x3619c8,
+ 0x227904,
+ 0x396a86,
+ 0x5a22d442,
+ 0x5a609cc2,
+ 0x5aa00b42,
+ 0x28ae85,
+ 0x286446,
+ 0x35bc04,
+ 0x232e86,
+ 0x211c46,
+ 0x2097c3,
+ 0x5ae99c0a,
+ 0x296705,
+ 0x2b1fc3,
+ 0x20e986,
+ 0x5b20e989,
+ 0x22a9c7,
+ 0x3d3048,
+ 0x224609,
+ 0x2ba4c8,
+ 0x2503c6,
+ 0x208143,
+ 0x5b602c82,
+ 0x3adb08,
+ 0x5ba54902,
+ 0x5be026c2,
+ 0x2335c3,
+ 0x2f7305,
+ 0x24c284,
+ 0x245489,
+ 0x238dc4,
+ 0x2472c8,
+ 0x5c610843,
+ 0x5ca643c4,
+ 0x21ed08,
+ 0x5ce08f02,
+ 0x23f002,
+ 0x32db45,
+ 0x270a09,
+ 0x219c03,
+ 0x319ac4,
+ 0x376504,
+ 0x267c43,
+ 0x29190a,
+ 0x5d20bdc2,
+ 0x5d612ac2,
+ 0x2e2943,
+ 0x39c503,
+ 0x1635002,
+ 0x271503,
+ 0x5da1dfc2,
+ 0x5de0dec2,
+ 0x5e292e44,
+ 0x292e46,
+ 0x27e5c4,
+ 0x28bc83,
+ 0x3d8d43,
+ 0x5e706943,
+ 0x24ae86,
+ 0x32df05,
+ 0x2e6707,
+ 0x2e6646,
+ 0x2e6c08,
+ 0x2e6e06,
+ 0x20dec4,
+ 0x2abf8b,
+ 0x2e9703,
+ 0x2e9705,
+ 0x226e42,
+ 0x362902,
+ 0x5ea51882,
+ 0x5ee0f782,
+ 0x21ee43,
+ 0x5f27eec2,
+ 0x27eec3,
+ 0x2ea783,
+ 0x5fa03b02,
+ 0x5feedcc6,
+ 0x29d686,
+ 0x60246542,
+ 0x60611402,
+ 0x60a30a02,
+ 0x60e05582,
+ 0x6120d082,
+ 0x61604342,
+ 0x21a083,
+ 0x3b6006,
+ 0x61a22d84,
+ 0x33bc86,
+ 0x28d5c4,
+ 0x20a383,
+ 0x62603bc2,
+ 0x2048c2,
+ 0x2350c3,
+ 0x62a127c3,
+ 0x3c97c7,
+ 0x3b6247,
+ 0x67e582c7,
+ 0x348507,
+ 0x2166c3,
+ 0x68277a44,
+ 0x31d704,
+ 0x31d70a,
+ 0x3ba585,
+ 0x6863b542,
+ 0x261643,
+ 0x68a00602,
+ 0x25c743,
+ 0x3c3903,
+ 0x69200582,
+ 0x3cc144,
+ 0x20a1c4,
+ 0x3cf585,
+ 0x32c5c5,
+ 0x2fd606,
+ 0x3a7586,
+ 0x69616602,
+ 0x69a01242,
+ 0x2f9bc5,
+ 0x29d392,
+ 0x2af9c6,
+ 0x209843,
+ 0x2dd486,
+ 0x3d19c5,
+ 0x161e7c2,
+ 0x71e09f02,
+ 0x209f03,
+ 0x211683,
+ 0x3a5bc3,
+ 0x72214542,
+ 0x21d343,
+ 0x7261c682,
+ 0x249c83,
+ 0x3856c8,
+ 0x25d543,
+ 0x2b9886,
+ 0x3e8dc7,
+ 0x34d686,
+ 0x34d68b,
+ 0x28d507,
+ 0x30b684,
+ 0x72e07c42,
+ 0x2ca605,
+ 0x73212783,
+ 0x22d043,
+ 0x3c7445,
+ 0x2165c3,
+ 0x73a165c6,
+ 0x3ddfc3,
+ 0x20f0c4,
0x2003c6,
- 0x327f06,
- 0x73a0cb83,
- 0x20cb87,
- 0x326807,
- 0x2a8485,
- 0x239706,
- 0x217303,
- 0x76626a03,
- 0x76a00a82,
- 0x76ec8044,
- 0x2114c9,
- 0x22f7c5,
- 0x361cc4,
- 0x31e288,
- 0x24ac45,
- 0x7724ccc5,
- 0x255849,
- 0x32e683,
- 0x23d7c4,
- 0x77608402,
- 0x21f783,
- 0x77a96dc2,
- 0x296dc6,
- 0x169a902,
- 0x77e15982,
- 0x2a3b08,
- 0x2b3743,
- 0x2c5a87,
- 0x2c1b85,
- 0x2c5645,
- 0x34de4b,
- 0x2f17c6,
- 0x34e046,
- 0x277304,
- 0x219d06,
- 0x782f1e48,
- 0x28e543,
- 0x265043,
- 0x265044,
- 0x2fa884,
- 0x309447,
- 0x3da945,
- 0x786f8842,
- 0x78a059c2,
- 0x792059c5,
- 0x2ca784,
- 0x2fa9cb,
- 0x2fd488,
- 0x24bd04,
- 0x796376c2,
- 0x79a06bc2,
- 0x206bc3,
- 0x2ff644,
- 0x2ff905,
- 0x300487,
- 0x79f02ac4,
- 0x38bfc4,
- 0x7a2037c2,
- 0x37e5c9,
- 0x303fc5,
- 0x24d905,
- 0x304b45,
- 0x7a61f6c3,
- 0x240644,
- 0x24064b,
- 0x305b04,
- 0x305dcb,
- 0x306745,
- 0x22030a,
- 0x307108,
- 0x30730a,
- 0x307b83,
- 0x307b8a,
- 0x7ae1a782,
- 0x7b24cec2,
- 0x7b604683,
- 0x7bad3b02,
+ 0x30aac6,
+ 0x73e1f483,
+ 0x2382c7,
+ 0x34c587,
+ 0x2ad945,
+ 0x31cec6,
+ 0x21a683,
+ 0x76ac9683,
+ 0x76e00a82,
+ 0x7723e044,
+ 0x3d5409,
+ 0x218b85,
+ 0x30a444,
+ 0x388b08,
+ 0x328b05,
+ 0x7775e205,
+ 0x24d489,
+ 0x209583,
+ 0x3d9c04,
+ 0x77a0f102,
+ 0x21f043,
+ 0x77e78302,
+ 0x278306,
+ 0x162e6c2,
+ 0x782135c2,
+ 0x28ad88,
+ 0x29e203,
+ 0x2b2ac7,
+ 0x2bd9c5,
+ 0x2cb045,
+ 0x2cb48b,
+ 0x2f8f86,
+ 0x2cb686,
+ 0x27ea44,
+ 0x215506,
+ 0x786f9788,
+ 0x293ec3,
+ 0x26b483,
+ 0x26b484,
+ 0x3e5004,
+ 0x2fe047,
+ 0x316985,
+ 0x78b1f402,
+ 0x78e06582,
+ 0x79606585,
+ 0x298f04,
+ 0x3e514b,
+ 0x2fe688,
+ 0x253b44,
+ 0x79a58e42,
+ 0x79e53ac2,
+ 0x3d72c3,
+ 0x2ff984,
+ 0x2ffc45,
+ 0x3006c7,
+ 0x7a302844,
+ 0x381304,
+ 0x7a602782,
+ 0x3885c9,
+ 0x303d45,
+ 0x216e05,
+ 0x3045c5,
+ 0x7aa02783,
+ 0x244084,
+ 0x24408b,
+ 0x305d44,
+ 0x30600b,
+ 0x306885,
+ 0x21fbca,
+ 0x307048,
+ 0x30724a,
+ 0x307ac3,
+ 0x307aca,
+ 0x7b2189c2,
+ 0x7b685042,
+ 0x7baa31c3,
+ 0x7bed2102,
0x309ec3,
- 0x7bef57c2,
- 0x7c33a842,
- 0x30a904,
- 0x2210c6,
- 0x236085,
- 0x30ccc3,
- 0x3ce106,
- 0x219045,
- 0x35a504,
- 0x7c600902,
- 0x2b4004,
- 0x2dcb8a,
- 0x2c3687,
- 0x349246,
- 0x25d607,
- 0x248783,
- 0x2cd9c8,
- 0x3e7ccb,
- 0x221e45,
- 0x36e645,
- 0x36e646,
- 0x2f8384,
- 0x3df448,
- 0x205703,
- 0x2075c4,
- 0x2075c7,
- 0x33ea86,
- 0x3a2e06,
- 0x2ccdca,
- 0x256b84,
- 0x2c244a,
- 0x7ca08dc6,
- 0x208dc7,
- 0x261947,
- 0x266584,
- 0x266589,
- 0x336705,
- 0x2f9c43,
- 0x22a543,
- 0x7ce264c3,
- 0x23a044,
- 0x7d200682,
- 0x3d8986,
- 0x7d6d05c5,
- 0x2b4d05,
- 0x25b746,
- 0x31d704,
- 0x7da12742,
- 0x24b2c4,
- 0x7de04a02,
- 0x20c2c5,
- 0x336884,
- 0x7f22ccc3,
- 0x7f609742,
- 0x209743,
- 0x21e946,
- 0x7fa01ec2,
- 0x397488,
- 0x22c344,
- 0x22c346,
- 0x394246,
- 0x7fe63084,
- 0x21a7c5,
- 0x22ef08,
- 0x231dc7,
- 0x326fc7,
- 0x326fcf,
- 0x29e286,
- 0x23cc03,
- 0x241684,
- 0x20f843,
- 0x22bbc4,
- 0x252e44,
- 0x80207f02,
- 0x3747c3,
- 0x337cc3,
- 0x80602b02,
- 0x204143,
- 0x37d083,
- 0x21878a,
- 0x27eb47,
- 0x258ecc,
- 0x80a59186,
- 0x25abc6,
- 0x25bcc7,
- 0x80e38747,
- 0x262389,
- 0x812fc684,
- 0x8160a0c2,
- 0x81a01702,
- 0x2cd186,
- 0x20c984,
- 0x39e1c6,
- 0x267ec8,
- 0x3a5204,
- 0x2f8ec6,
- 0x2b2945,
- 0x81e7c4c8,
- 0x24c743,
- 0x28a485,
- 0x35d1c3,
- 0x24da03,
- 0x24da04,
- 0x21dc43,
- 0x82254642,
- 0x826014c2,
- 0x2f9b09,
- 0x296cc5,
- 0x3d4744,
- 0x3e5745,
- 0x20f244,
- 0x37b3c7,
- 0x338685,
- 0x82ed1984,
- 0x2d1988,
- 0x2dd986,
- 0x2e1dc4,
- 0x2e1fc8,
- 0x83204ac2,
- 0x2f0d84,
- 0x20f904,
- 0x2d38c7,
- 0x83605fc4,
- 0x2171c2,
- 0x83a0b5c2,
- 0x20b5c3,
- 0x2875c4,
- 0x2512c3,
- 0x2ba385,
- 0x83e35542,
- 0x30ac45,
- 0x279c42,
- 0x311f85,
- 0x2db805,
- 0x842010c2,
- 0x332f04,
- 0x84602d82,
- 0x30dd46,
- 0x2192c6,
- 0x34b048,
- 0x2d49c8,
- 0x31e8c4,
- 0x301805,
- 0x2c0d09,
- 0x2d2a44,
- 0x3e5104,
- 0x21f203,
- 0x207383,
- 0x84a07385,
- 0x26fac5,
- 0x269544,
- 0x337d4d,
- 0x352902,
- 0x352903,
- 0x84e04102,
- 0x85200ec2,
- 0x396f45,
- 0x354c47,
- 0x22d144,
- 0x3ce949,
- 0x2dccc9,
- 0x282303,
- 0x282308,
- 0x246809,
- 0x227d47,
- 0x85755b45,
- 0x3615c6,
- 0x362786,
- 0x365cc5,
- 0x2cbf45,
- 0x85a01c42,
- 0x2930c5,
- 0x2c9448,
- 0x2d6a06,
- 0x85ed7247,
- 0x306984,
- 0x2b9ac7,
- 0x3b9106,
- 0x8624b302,
- 0x208986,
- 0x31160a,
- 0x311e85,
- 0x86615a82,
- 0x86a14442,
- 0x278b86,
- 0x86e97d07,
- 0x8720c4c2,
- 0x20a803,
- 0x2250c6,
- 0x2d5884,
- 0x27ac86,
- 0x32fa86,
- 0x3a32ca,
- 0x32e805,
- 0x30d8c6,
- 0x36c343,
- 0x36c344,
- 0x87603bc2,
- 0x321303,
- 0x87a1b2c2,
- 0x31fec3,
- 0x87e34c04,
- 0x2d8284,
- 0x883e380a,
- 0x209203,
- 0x326ac7,
- 0x315106,
- 0x38fa84,
- 0x236d42,
- 0x2b0982,
- 0x886007c2,
- 0x232a43,
- 0x261707,
+ 0x7c30afc2,
+ 0x7c73a282,
+ 0x30c584,
+ 0x220106,
+ 0x232bc5,
+ 0x3101c3,
+ 0x3cdb06,
+ 0x20ef45,
+ 0x255884,
+ 0x7ca00902,
+ 0x2a1b84,
+ 0x2e2bca,
+ 0x2c5747,
+ 0x3e26c6,
+ 0x24eec7,
+ 0x249f03,
+ 0x2d26c8,
+ 0x3eb80b,
+ 0x2282c5,
+ 0x376645,
+ 0x376646,
+ 0x2fd9c4,
+ 0x21cb08,
+ 0x207a43,
+ 0x207a44,
+ 0x207a47,
+ 0x30b2c6,
+ 0x33e886,
+ 0x2d050a,
+ 0x25b384,
+ 0x27d94a,
+ 0x7cf83846,
+ 0x383847,
+ 0x265f07,
+ 0x2696c4,
+ 0x2696c9,
+ 0x220a45,
+ 0x36e343,
+ 0x22bcc3,
+ 0x7d225f83,
+ 0x298ac4,
+ 0x7d600682,
+ 0x2f08c6,
+ 0x7dad3105,
+ 0x2dd6c5,
+ 0x245d86,
+ 0x2c8b44,
+ 0x7de01082,
+ 0x245e84,
+ 0x7e209942,
+ 0x237a05,
+ 0x3c78c4,
+ 0x7f62cac3,
+ 0x7fa116c2,
+ 0x2116c3,
+ 0x21d486,
+ 0x7fe01782,
+ 0x32d608,
+ 0x22a844,
+ 0x22a846,
+ 0x39cd86,
+ 0x80267784,
+ 0x21fe05,
+ 0x243148,
+ 0x255547,
+ 0x350587,
+ 0x35058f,
+ 0x2a50c6,
+ 0x248083,
+ 0x24d684,
+ 0x215c83,
+ 0x22a3c4,
+ 0x3acac4,
+ 0x80608382,
+ 0x2b76c3,
+ 0x337703,
+ 0x80a036c2,
+ 0x2036c3,
+ 0x38f1c3,
+ 0x21708a,
+ 0x314d47,
+ 0x25cbcc,
+ 0x25ce86,
+ 0x25e406,
+ 0x262287,
+ 0x80e65507,
+ 0x269d89,
+ 0x81230e44,
+ 0x81a1ee82,
+ 0x81e033c2,
+ 0x2d08c6,
+ 0x2380c4,
+ 0x38c746,
+ 0x26cb88,
+ 0x3ab684,
+ 0x32ea46,
+ 0x29d105,
+ 0x82280408,
+ 0x24e043,
+ 0x282ac5,
+ 0x396603,
+ 0x216f03,
+ 0x216f04,
+ 0x215a03,
+ 0x82639d02,
+ 0x82a04082,
+ 0x36e209,
+ 0x28ac85,
+ 0x28af84,
+ 0x28c845,
+ 0x204084,
+ 0x2e43c7,
+ 0x35b485,
+ 0x8324a3c4,
+ 0x2d1548,
+ 0x2d2e86,
+ 0x2d4204,
+ 0x2d53c8,
+ 0x83605f82,
+ 0x2e7cc4,
+ 0x315484,
+ 0x337f87,
+ 0x83a05f84,
+ 0x21a542,
+ 0x83e12882,
+ 0x254a43,
+ 0x254a44,
+ 0x2ae6c3,
+ 0x2bfcc5,
+ 0x8420c402,
+ 0x2f8dc5,
+ 0x246f82,
+ 0x312685,
+ 0x2e15c5,
+ 0x8460c582,
+ 0x3819c4,
+ 0x84a04942,
+ 0x208d46,
+ 0x25b846,
+ 0x270b48,
+ 0x2da1c8,
+ 0x30dac4,
+ 0x2fb0c5,
+ 0x2ba8c9,
+ 0x31fcc4,
+ 0x3ed084,
+ 0x224b03,
+ 0x207803,
+ 0x84e07805,
+ 0x268285,
+ 0x2800c4,
+ 0x29ec82,
+ 0x329e83,
+ 0x85203682,
+ 0x85601402,
+ 0x32d0c5,
+ 0x289807,
+ 0x286f44,
+ 0x224809,
+ 0x2e2d09,
+ 0x28a843,
+ 0x28a848,
+ 0x3917c9,
+ 0x222207,
+ 0x85b2e885,
+ 0x354f06,
+ 0x355546,
+ 0x356a05,
+ 0x2d1185,
+ 0x85e01882,
+ 0x375005,
+ 0x2cf188,
+ 0x2dcac6,
+ 0x862d4807,
+ 0x306ac4,
+ 0x2bde47,
+ 0x3a3946,
+ 0x866088c2,
+ 0x386ac6,
+ 0x311d0a,
+ 0x312585,
+ 0x86a136c2,
+ 0x86e14cc2,
+ 0x27cfc6,
+ 0x8729c3c7,
+ 0x87601b42,
+ 0x237fc3,
+ 0x2f0206,
+ 0x2d9fc4,
+ 0x36f086,
+ 0x3d51c6,
+ 0x37378a,
+ 0x200e05,
+ 0x384046,
+ 0x3c3743,
+ 0x3c3744,
+ 0x87a03142,
+ 0x321203,
+ 0x87e28102,
+ 0x320e43,
+ 0x88311184,
+ 0x2db744,
+ 0x887e954a,
+ 0x229c83,
+ 0x34c847,
+ 0x3dcdc6,
+ 0x268644,
+ 0x243502,
+ 0x2b5902,
+ 0x88a007c2,
+ 0x231403,
+ 0x265cc7,
0x2007c7,
- 0x292704,
- 0x258d47,
- 0x300586,
- 0x20ba87,
- 0x230744,
- 0x2b61c5,
- 0x221c45,
- 0x88a0d782,
- 0x219e46,
- 0x230bc3,
- 0x29d6c2,
- 0x2fc146,
- 0x88e12682,
- 0x89213402,
- 0x213405,
- 0x8962bdc2,
- 0x89a02a02,
- 0x351e45,
- 0x2e3405,
- 0x30a705,
- 0x8a268b83,
- 0x285845,
- 0x2f1887,
- 0x2b9385,
- 0x32e9c5,
- 0x257104,
- 0x361b46,
- 0x24e044,
- 0x8a6008c2,
- 0x8b2510c5,
- 0x3967c7,
- 0x213c08,
- 0x27d046,
- 0x27d04d,
- 0x2803c9,
- 0x2803d2,
- 0x37e8c5,
- 0x383403,
- 0x8b6091c2,
- 0x32f684,
- 0x3a8f03,
- 0x3d64c5,
- 0x3136c5,
- 0x8ba2a042,
- 0x267d43,
- 0x8be32982,
- 0x8c629742,
- 0x8ca00082,
- 0x2ead45,
- 0x39d643,
- 0x8ce04942,
- 0x8d206502,
- 0x283946,
- 0x2484ca,
- 0x201c83,
- 0x2638c3,
- 0x2f2d43,
- 0x8ee04a42,
- 0x9d666342,
- 0x9de0e002,
- 0x205002,
- 0x3d8109,
- 0x2d9444,
- 0x2e5488,
- 0x9e308542,
- 0x9ea017c2,
- 0x393285,
- 0x23d208,
- 0x2f8088,
- 0x30500c,
- 0x241403,
- 0x9ee6dac2,
- 0x9f208e42,
- 0x39dbc6,
- 0x315f85,
- 0x2e8c43,
- 0x24cb06,
- 0x3160c6,
- 0x251403,
- 0x317703,
- 0x317dc6,
- 0x319884,
- 0x2a2446,
- 0x34cd04,
- 0x319f44,
- 0x31aa0a,
- 0x9f603582,
- 0x257e85,
- 0x31bfca,
- 0x31bf05,
- 0x31ce84,
- 0x31cf86,
- 0x31d104,
- 0x21fa46,
- 0x9fa16ec2,
- 0x216ec6,
- 0x271385,
- 0x30d747,
- 0x3c1346,
- 0x25bec4,
- 0x2e8ec7,
- 0x2089c5,
- 0x242c07,
- 0x228947,
- 0x22894e,
- 0x2849c6,
- 0x2b6dc5,
- 0x205f07,
- 0x3c3947,
- 0x212d85,
- 0x229b84,
- 0x3235c2,
- 0x23d887,
- 0x249e04,
- 0x35a784,
- 0x2cf04b,
- 0x9fe246c3,
- 0x301387,
- 0x2246c4,
- 0x301687,
- 0x310883,
- 0x34e54d,
- 0x3ad188,
- 0xa0233984,
- 0x3e16c5,
- 0x31f985,
- 0x31fdc3,
- 0xa0608f02,
- 0x3212c3,
- 0x321a83,
- 0x215ac4,
- 0x289085,
- 0x219fc7,
- 0x36c3c6,
- 0x390a43,
- 0x233f0b,
- 0x35be8b,
- 0x2b504b,
- 0x2cae8b,
- 0x3991ca,
- 0x2d6bcb,
- 0x2f228b,
- 0x32178c,
- 0x31a34b,
- 0x370491,
- 0x398e4a,
- 0x3b8a4b,
- 0x3c95cc,
- 0x3e6f4b,
- 0x3230ca,
- 0x323f4a,
- 0x324dce,
- 0x325a4b,
- 0x325d0a,
- 0x328911,
- 0x328d4a,
- 0x32924b,
- 0x32978e,
- 0x32a14c,
- 0x32ae8b,
- 0x32b14e,
- 0x32b4cc,
- 0x32ef0a,
- 0x33068c,
- 0xa0b3098a,
- 0x331288,
- 0x331e49,
- 0x3348ca,
- 0x334b4a,
- 0x334dcb,
- 0x33744e,
- 0x338091,
- 0x341cc9,
- 0x341f0a,
- 0x342c8b,
- 0x343dcd,
- 0x344c4a,
- 0x345616,
- 0x34698b,
- 0x34844a,
- 0x34888a,
- 0x34a48b,
- 0x34b2c9,
- 0x34eec9,
- 0x34f44d,
- 0x34fc0b,
- 0x3514cb,
- 0x351f89,
- 0x3525ce,
- 0x3529ca,
- 0x3550ca,
- 0x35590a,
- 0x3562cb,
- 0x356b0b,
- 0x35798d,
- 0x359fcd,
- 0x35a910,
- 0x35adcb,
- 0x35bacc,
- 0x35cc8b,
- 0x35f68b,
- 0x3611ce,
- 0x3617cb,
- 0x3617cd,
- 0x36740b,
- 0x367e8f,
- 0x36824b,
- 0x36918a,
- 0x369f49,
- 0x36ab49,
- 0xa0f6aecb,
- 0x36b18e,
- 0x36b50e,
- 0x36e28b,
- 0x36f04f,
- 0x3718cb,
- 0x371b8b,
- 0x371e4a,
- 0x376d89,
- 0x37c74f,
- 0x381d4c,
- 0x38298c,
- 0x3830ce,
- 0x3835cf,
- 0x38398e,
- 0x383e10,
- 0x38420f,
- 0x384bce,
- 0x38528c,
- 0x385591,
- 0x3859d2,
- 0x387891,
- 0x387ece,
- 0x38830b,
- 0x38830e,
- 0x38868f,
- 0x388a4e,
- 0x388dd3,
- 0x389291,
- 0x3896cc,
- 0x3899ce,
- 0x389e4c,
- 0x38a293,
- 0x38af50,
- 0x38b3cc,
- 0x38b6cc,
- 0x38bb8b,
- 0x38e58e,
- 0x38ea8b,
- 0x38f2cb,
- 0x39150c,
- 0x3979ca,
- 0x39864c,
- 0x39894c,
- 0x398c49,
- 0x39ac8b,
- 0x39af48,
- 0x39b509,
- 0x39b50f,
- 0x39cf4b,
- 0xa139e64a,
- 0x3a3a0c,
- 0x3a49cb,
- 0x3a4c89,
- 0x3a56c8,
- 0x3a630b,
- 0x3a810a,
- 0x3a838b,
- 0x3a9b0c,
- 0x3aa649,
- 0x3aa888,
- 0x3ad7cb,
- 0x3b0a4b,
- 0x3b2e0e,
- 0x3b494b,
- 0x3b83cb,
- 0x3c420b,
- 0x3c44c9,
- 0x3c488d,
- 0x3d57ca,
- 0x3d9857,
- 0x3da218,
- 0x3dc0c9,
- 0x3de3cb,
- 0x3df714,
- 0x3dfc0b,
- 0x3e018a,
- 0x3e2a0a,
- 0x3e2c8b,
- 0x3e4810,
- 0x3e4c11,
- 0x3e5a4a,
- 0x3e654d,
- 0x3e6c4d,
- 0x3e940b,
- 0x219f43,
- 0xa17b5883,
- 0x3cc686,
- 0x3df0c5,
- 0x27a587,
- 0x2ddec6,
- 0x164bf82,
- 0x2729c9,
- 0x20c004,
- 0x2f0788,
- 0x226403,
- 0x32f5c7,
- 0x247f82,
- 0x2bbdc3,
- 0xa1a0e042,
- 0x2dd846,
- 0x2defc4,
- 0x2c8404,
- 0x3a0f43,
- 0xa22da842,
- 0xa262f444,
- 0x2664c7,
- 0xa2a35b02,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x117bc8,
- 0x20d903,
+ 0x297f84,
+ 0x2fcd07,
+ 0x3007c6,
+ 0x237207,
+ 0x227cc4,
+ 0x221705,
+ 0x201985,
+ 0x88e15642,
+ 0x21a706,
+ 0x226243,
+ 0x228882,
+ 0x228886,
+ 0x89227202,
+ 0x89608ec2,
+ 0x220d05,
+ 0x89a01c82,
+ 0x89e00fc2,
+ 0x398085,
+ 0x2e9a45,
+ 0x30c185,
+ 0x8a66e003,
+ 0x224e45,
+ 0x2f9047,
+ 0x2b6985,
+ 0x200fc5,
+ 0x277944,
+ 0x328986,
+ 0x24c344,
+ 0x8aa008c2,
+ 0x8b6dc005,
+ 0x213b47,
+ 0x20f2c8,
+ 0x278606,
+ 0x27860d,
+ 0x27db89,
+ 0x27db92,
+ 0x333505,
+ 0x33e543,
+ 0x8ba10702,
+ 0x31be44,
+ 0x3288c3,
+ 0x3888c5,
+ 0x3dfac5,
+ 0x8be6ca02,
+ 0x26ca03,
+ 0x8c231342,
+ 0x8ca27442,
+ 0x8ce00082,
+ 0x219645,
+ 0x3a6d43,
+ 0x8d205182,
+ 0x8d609e42,
+ 0x3cc106,
+ 0x27988a,
+ 0x24e2c3,
+ 0x244b43,
+ 0x2f1c43,
+ 0x8f201b02,
+ 0x9da55202,
+ 0x9e20d682,
+ 0x204c02,
+ 0x329c89,
+ 0x2df244,
+ 0x2eb948,
+ 0x9e708602,
+ 0x9ee08602,
+ 0x35f645,
+ 0x23fa48,
+ 0x23b2c8,
+ 0x30010c,
+ 0x2450c3,
+ 0x9f273ec2,
+ 0x9f612182,
+ 0x38c146,
+ 0x313dc5,
+ 0x2eef43,
+ 0x256186,
+ 0x313f06,
+ 0x24f243,
+ 0x3153c3,
+ 0x315806,
+ 0x317284,
+ 0x26f646,
+ 0x240fc4,
+ 0x317944,
+ 0x318c4a,
+ 0x9fa52ec2,
+ 0x25d945,
+ 0x31a20a,
+ 0x31a145,
+ 0x31b804,
+ 0x31b906,
+ 0x31ba84,
+ 0x21f306,
+ 0x9fe08902,
+ 0x21a246,
+ 0x23ab05,
+ 0x3c35c7,
+ 0x3cb1c6,
+ 0x262484,
+ 0x2ef1c7,
+ 0x224045,
+ 0x323447,
+ 0x21e087,
+ 0x21e08e,
+ 0x28cf06,
+ 0x3266c5,
+ 0x205ec7,
+ 0x3d9cc7,
+ 0x211845,
+ 0x213e04,
+ 0x325f42,
+ 0x24bb47,
+ 0x287304,
+ 0x249b04,
+ 0x2d77cb,
+ 0xa0225103,
+ 0x307f07,
+ 0x225104,
+ 0x308207,
+ 0x22f403,
+ 0x34de8d,
+ 0x31dc88,
+ 0xa06348c4,
+ 0x24a2c5,
+ 0x31e145,
+ 0x31e583,
+ 0xa0a2a742,
+ 0x3211c3,
+ 0x321743,
+ 0x213704,
+ 0x2262c5,
+ 0x2263c7,
+ 0x3c37c6,
+ 0x39ab03,
+ 0x22b7cb,
+ 0x27114b,
+ 0x2b6d8b,
+ 0x2bbb4b,
+ 0x2c858a,
+ 0x2dcc8b,
+ 0x2f9e0b,
+ 0x31418c,
+ 0x317d4b,
+ 0x363911,
+ 0x37848a,
+ 0x3bbfcb,
+ 0x3ee8cc,
+ 0x322a0b,
+ 0x32370a,
+ 0x323d8a,
+ 0x324c0e,
+ 0x32520b,
+ 0x3254ca,
+ 0x326d51,
+ 0x32718a,
+ 0x32768b,
+ 0x327bce,
+ 0x329f4c,
+ 0x32a3cb,
+ 0x32a68e,
+ 0x32aa0c,
+ 0x32b94a,
+ 0x32ca8c,
+ 0xa0f2d80a,
+ 0x32e048,
+ 0x32f4c9,
+ 0x3336ca,
+ 0x33394a,
+ 0x333bcb,
+ 0x336e8e,
+ 0x3379d1,
+ 0x340f89,
+ 0x3411ca,
+ 0x341dcb,
+ 0x34328d,
+ 0x34410a,
+ 0x344756,
+ 0x345acb,
+ 0x34748a,
+ 0x347dca,
+ 0x34980b,
+ 0x34b3c9,
+ 0x34e809,
+ 0x34f3cd,
+ 0x350e0b,
+ 0x3526cb,
+ 0x353309,
+ 0x35394e,
+ 0x353f8a,
+ 0x354cca,
+ 0x35530a,
+ 0x355a0b,
+ 0x35624b,
+ 0x35784d,
+ 0x35af8d,
+ 0x35cc90,
+ 0x35d14b,
+ 0x35e34c,
+ 0x35fc0b,
+ 0x36210b,
+ 0x36548e,
+ 0x36614b,
+ 0x36614d,
+ 0x36b54b,
+ 0x36bfcf,
+ 0x36c38b,
+ 0x36d08a,
+ 0x36e789,
+ 0x370b09,
+ 0xa1370e8b,
+ 0x37114e,
+ 0x3714ce,
+ 0x37628b,
+ 0x37704f,
+ 0x379e4b,
+ 0x37a10b,
+ 0x37a3ca,
+ 0x37f1c9,
+ 0x38248f,
+ 0x38b98c,
+ 0x38cbcc,
+ 0x38dace,
+ 0x38e28f,
+ 0x38e64e,
+ 0x38f2d0,
+ 0x38f6cf,
+ 0x390b4e,
+ 0x391bcc,
+ 0x391ed1,
+ 0x392312,
+ 0x392bd1,
+ 0x39320e,
+ 0x393a4b,
+ 0x393a4e,
+ 0x393dcf,
+ 0x39418e,
+ 0x394510,
+ 0x394913,
+ 0x394dd1,
+ 0x39520c,
+ 0x39550e,
+ 0x39598c,
+ 0x395ed3,
+ 0x396c10,
+ 0x39708c,
+ 0x39738c,
+ 0x397c4b,
+ 0x39908e,
+ 0x39958b,
+ 0x399ccb,
+ 0x39ad0c,
+ 0x3a0d8a,
+ 0x3a18cc,
+ 0x3a1bcc,
+ 0x3a1ec9,
+ 0x3a430b,
+ 0x3a45c8,
+ 0x3a4d89,
+ 0x3a4d8f,
+ 0x3a664b,
+ 0xa17a894a,
+ 0x3a9f0c,
+ 0x3aae4b,
+ 0xa1bab109,
+ 0x3abbc8,
+ 0x3abf8b,
+ 0x3ace8a,
+ 0x3ad10a,
+ 0x3ad38b,
+ 0x3ad88c,
+ 0x3ae8c9,
+ 0x3aeb08,
+ 0x3b17cb,
+ 0x3b598b,
+ 0x3b898e,
+ 0x3ba1cb,
+ 0x3bb94b,
+ 0x3c79cb,
+ 0x3c7c89,
+ 0x3c88cd,
+ 0x3dedca,
+ 0x3e39d7,
+ 0x3e4658,
+ 0x3e77c9,
+ 0x3e8a0b,
+ 0x3e9994,
+ 0x3e9e8b,
+ 0x3ea40a,
+ 0x3eafca,
+ 0x3eb24b,
+ 0x3ec790,
+ 0x3ecb91,
+ 0x3ed18a,
+ 0x3edecd,
+ 0x3ee5cd,
+ 0x3efa8b,
+ 0x21a803,
+ 0xa1e02843,
+ 0x2181c6,
+ 0x3d2985,
+ 0x2eaf47,
+ 0x2c2006,
+ 0xa2209302,
+ 0x2700c9,
+ 0x237744,
+ 0x2f7d08,
+ 0x225ec3,
+ 0x31bd87,
+ 0xa2601c42,
+ 0x2c2543,
+ 0xa2a04182,
+ 0x2e3786,
+ 0x2e4d84,
+ 0x2efc44,
+ 0x2021c3,
+ 0xa32e0642,
+ 0xa3632284,
+ 0x269607,
+ 0xa3a32642,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x10bb08,
+ 0x20bc03,
0x2000c2,
- 0x793c8,
- 0x216542,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x202b03,
- 0x33d956,
- 0x365753,
- 0x258bc9,
- 0x2b0e88,
- 0x2c4a09,
- 0x31c146,
- 0x3509d0,
- 0x218053,
- 0x33eb48,
- 0x285c87,
- 0x2929c7,
- 0x2aebca,
- 0x363749,
- 0x333bc9,
- 0x25dd0b,
- 0x34a906,
- 0x32b98a,
- 0x22ac46,
- 0x238c43,
- 0x231805,
- 0x206c48,
- 0x28b04d,
- 0x35434c,
- 0x271047,
- 0x309f4d,
- 0x22f004,
- 0x23a30a,
- 0x23b0ca,
- 0x23b58a,
- 0x218347,
- 0x2461c7,
- 0x249d44,
- 0x279ec6,
- 0x34abc4,
- 0x222bc8,
- 0x386e49,
- 0x209a46,
- 0x308cc8,
- 0x24dd4d,
- 0x2dcf09,
- 0x318348,
- 0x24d887,
- 0x21364a,
- 0x25bb46,
- 0x34bbc4,
- 0x2298c7,
- 0x3d8b8a,
- 0x242f8e,
- 0x2823c5,
- 0x29788b,
- 0x232789,
- 0x280609,
- 0x20d547,
- 0x20d54a,
- 0x2d3807,
- 0x306389,
- 0x37b048,
- 0x37948b,
- 0x2efe85,
- 0x23770a,
- 0x233c89,
- 0x33324a,
- 0x22654b,
- 0x2297cb,
- 0x25da95,
- 0x2f0c45,
- 0x24d905,
- 0x24064a,
- 0x26ba4a,
- 0x390f47,
- 0x23d343,
- 0x2cd108,
- 0x2e640a,
- 0x22c346,
- 0x261289,
- 0x27c4c8,
- 0x2e1dc4,
- 0x2512c9,
- 0x2d49c8,
- 0x2d5707,
- 0x2510c6,
- 0x3967c7,
- 0x399b07,
- 0x248c45,
- 0x37500c,
- 0x3e16c5,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x216542,
- 0x216543,
- 0x2296c3,
- 0x20d903,
- 0x20cb83,
- 0x216543,
- 0x2296c3,
- 0xd903,
- 0x241c43,
- 0x20cb83,
- 0x1d5b83,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x793c8,
- 0x216542,
- 0x216543,
- 0x3a8607,
- 0x17b1c4,
- 0x2296c3,
- 0xbbc4,
- 0x20cb83,
- 0x19045,
- 0x216542,
- 0x2104c2,
- 0x31d0c2,
- 0x206002,
- 0x205c02,
- 0x2160c2,
- 0x9a6c6,
- 0x5c549,
- 0x182487,
- 0x1550e,
- 0x99049,
- 0x482ccc3,
- 0x95c87,
- 0x152e06,
- 0x1643,
- 0x11e505,
+ 0x7ffc8,
+ 0x205842,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x217083,
+ 0x33d716,
+ 0x369b53,
+ 0x2fcb89,
+ 0x285588,
+ 0x2ca489,
+ 0x31a386,
+ 0x351bd0,
+ 0x3eba93,
+ 0x30b388,
+ 0x28bd87,
+ 0x28de87,
+ 0x2b36ca,
+ 0x354849,
+ 0x335dc9,
+ 0x29f80b,
+ 0x340886,
+ 0x32aeca,
+ 0x229146,
+ 0x2361c3,
+ 0x26d285,
+ 0x3d5608,
+ 0x290e4d,
+ 0x3468cc,
+ 0x23a7c7,
+ 0x3a728d,
+ 0x243244,
+ 0x23b4ca,
+ 0x23c84a,
+ 0x23cd0a,
+ 0x205847,
+ 0x248547,
+ 0x24ba84,
+ 0x27f786,
+ 0x384a84,
+ 0x224d08,
+ 0x238e09,
+ 0x308d86,
+ 0x308d88,
+ 0x24fa4d,
+ 0x2e2f49,
+ 0x315d88,
+ 0x216d87,
+ 0x220f4a,
+ 0x2bf046,
+ 0x33ed44,
+ 0x211e87,
+ 0x2f0aca,
+ 0x23cf4e,
+ 0x28a905,
+ 0x29bf4b,
+ 0x231149,
+ 0x27ddc9,
+ 0x2b2347,
+ 0x3da84a,
+ 0x2f5547,
+ 0x2e8a89,
+ 0x346d88,
+ 0x37078b,
+ 0x2f7305,
+ 0x25bf4a,
+ 0x2307c9,
+ 0x38638a,
+ 0x3efd8b,
+ 0x211d8b,
+ 0x29f595,
+ 0x2d8345,
+ 0x216e05,
+ 0x24408a,
+ 0x2722ca,
+ 0x32ee87,
+ 0x216e43,
+ 0x2d0848,
+ 0x2ece4a,
+ 0x22a846,
+ 0x266949,
+ 0x280408,
+ 0x2d4204,
+ 0x395c89,
+ 0x2da1c8,
+ 0x2d9e47,
+ 0x2dc006,
+ 0x213b47,
+ 0x3a2947,
+ 0x24ac85,
+ 0x2b7f0c,
+ 0x24a2c5,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x205842,
+ 0x229f43,
+ 0x2127c3,
+ 0x20bc03,
+ 0x21f483,
+ 0x229f43,
+ 0x2127c3,
+ 0xbc03,
+ 0x25d543,
+ 0x21f483,
+ 0x1df183,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x7ffc8,
+ 0x205842,
+ 0x229f43,
+ 0x234f87,
+ 0x98704,
+ 0x2127c3,
+ 0x37344,
+ 0x21f483,
+ 0xef45,
+ 0x205842,
+ 0x201902,
+ 0x30b602,
+ 0x205fc2,
+ 0x202a42,
+ 0x229ac2,
+ 0x164ca,
+ 0x14244b,
+ 0x5b547,
+ 0x1b8586,
+ 0xa1606,
+ 0x60209,
+ 0xebb49,
+ 0x1a3dc7,
+ 0x15b4e8a,
+ 0x1314e,
+ 0x10ad89,
+ 0x482cac3,
+ 0x98307,
+ 0x149c86,
+ 0x5ec3,
+ 0x11d6c5,
0xc1,
- 0x5216543,
- 0x222bc3,
- 0x2f5503,
- 0x343b43,
- 0x243543,
- 0x216443,
- 0x2e8706,
- 0x2296c3,
- 0x20cb83,
- 0x202883,
- 0x793c8,
- 0x209b84,
- 0x3a2887,
- 0x3a0f83,
- 0x25e704,
- 0x20d3c3,
- 0x20d5c3,
- 0x343b43,
- 0xb46c7,
+ 0x5229f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x2e9c43,
+ 0x25e043,
+ 0x219c03,
+ 0x2ee0c6,
+ 0x2127c3,
+ 0x21f483,
+ 0x236f03,
+ 0x7ffc8,
+ 0x20a944,
+ 0x264187,
+ 0x202203,
+ 0x261a44,
+ 0x225f43,
+ 0x2455c3,
+ 0x2e9c43,
+ 0xf1a47,
0x9c4,
- 0x12db83,
- 0x10e645,
+ 0x14c3,
+ 0x172f85,
0x66000c2,
- 0x53c43,
- 0x6a16542,
- 0x6e90b89,
- 0x7096ac9,
- 0x96f4d,
- 0x9728d,
- 0x31d0c2,
- 0xb1b84,
- 0x10e689,
+ 0x58843,
+ 0x6a05842,
+ 0x6e96109,
+ 0x709b3c9,
+ 0x9b80d,
+ 0x9bb4d,
+ 0x30b602,
+ 0x58104,
+ 0x172fc9,
0x2003c2,
- 0x76b1a88,
- 0x105504,
- 0x320b43,
- 0x793c8,
- 0x49e04,
- 0x1407242,
+ 0x7658008,
+ 0x105744,
+ 0x320a03,
+ 0x7ffc8,
+ 0x87304,
+ 0x14076c2,
0x14005c2,
- 0x1407242,
- 0x151a146,
- 0x23bb83,
- 0x2cc803,
- 0x7e16543,
- 0x23a304,
- 0x8622bc3,
- 0x8f43b43,
- 0x2042c2,
- 0x2b1b84,
- 0x2296c3,
- 0x38c643,
- 0x203c82,
- 0x20cb83,
- 0x221a42,
- 0x30a303,
- 0x201ec2,
- 0x26a603,
- 0x220b03,
- 0x2089c2,
- 0x793c8,
- 0x82fdcc9,
- 0x27b43,
- 0x23bb83,
- 0x20b2c8,
- 0x8b8c643,
- 0x203c82,
- 0x30a303,
- 0x201ec2,
- 0x26a603,
- 0x220b03,
- 0x2089c2,
- 0x259187,
- 0x30a303,
- 0x201ec2,
- 0x26a603,
- 0x220b03,
- 0x2089c2,
- 0x216543,
- 0x4702,
- 0x6c43,
- 0x2bc2,
- 0x13242,
- 0xe8c2,
- 0x11de42,
- 0x4a42,
- 0x4da82,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x243543,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x204642,
- 0x21f6c3,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x8503,
- 0x2d4c2,
- 0x253c43,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x2296c3,
- 0x20cb83,
- 0x355b45,
- 0x22a042,
+ 0x14076c2,
+ 0x1517b46,
+ 0x23d9c3,
+ 0x2c9ec3,
+ 0x7e29f43,
+ 0x23b4c4,
+ 0x8624d03,
+ 0x8ee9c43,
+ 0x203842,
+ 0x258104,
+ 0x2127c3,
+ 0x239503,
+ 0x200f82,
+ 0x21f483,
+ 0x222402,
+ 0x30bd83,
+ 0x201782,
+ 0x2b32c3,
+ 0x221943,
+ 0x205242,
+ 0x7ffc8,
+ 0x829db89,
+ 0x22003,
+ 0x23d9c3,
+ 0x3d7348,
+ 0x8a39503,
+ 0x200f82,
+ 0x30bd83,
+ 0x201782,
+ 0x2b32c3,
+ 0x221943,
+ 0x205242,
+ 0x25ce87,
+ 0x30bd83,
+ 0x201782,
+ 0x2b32c3,
+ 0x221943,
+ 0x205242,
+ 0x229f43,
+ 0x2b82,
+ 0x24dc3,
+ 0x3642,
+ 0x6cc2,
+ 0x4682,
+ 0x2c82,
+ 0x1b02,
+ 0x2842,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x25e043,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x202082,
+ 0x202783,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x9a03,
+ 0x1c682,
+ 0x258843,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x2127c3,
+ 0x21f483,
+ 0x32e885,
+ 0x26ca02,
0x2000c2,
- 0x793c8,
- 0xaec0ad2,
- 0x1472588,
- 0x1b2b8a,
- 0x3ec5,
- 0x343b43,
- 0x230d41,
+ 0x7ffc8,
+ 0xaeba692,
+ 0xb2d6d88,
+ 0x1475dc8,
+ 0x3424a,
+ 0x2cc5,
+ 0x2707,
+ 0x2e9c43,
+ 0x228ac1,
0x2009c1,
0x200a01,
- 0x202c41,
- 0x201b41,
- 0x211101,
- 0x209c01,
- 0x230e41,
- 0x2fd181,
+ 0x201101,
+ 0x200dc1,
+ 0x218341,
+ 0x202281,
+ 0x202f81,
+ 0x249081,
0x200001,
0x2000c1,
0x200201,
- 0x146c05,
- 0x793c8,
+ 0x145d45,
+ 0x7ffc8,
0x200101,
- 0x201381,
+ 0x200d01,
0x200501,
- 0x201281,
+ 0x200c01,
0x200041,
0x200801,
0x200181,
- 0x200e01,
+ 0x200c41,
0x200701,
0x2004c1,
- 0x200bc1,
+ 0x200b41,
0x200581,
0x2003c1,
0x200a81,
- 0x2210c1,
+ 0x205601,
0x200401,
0x200741,
0x2007c1,
0x200081,
- 0x2017c1,
- 0x201641,
- 0x207281,
- 0x2024c1,
- 0x208481,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x216542,
- 0x216543,
- 0x222bc3,
+ 0x204c01,
+ 0x205241,
+ 0x201541,
+ 0x201c41,
+ 0x201b81,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
0x2003c2,
- 0x20cb83,
- 0x22a83,
- 0xb46c7,
- 0x1cdf07,
- 0x32f46,
- 0x4280a,
- 0x95748,
- 0x60c88,
- 0x61607,
- 0xbc3c4,
- 0x15c246,
- 0xeec85,
- 0x10f7c5,
- 0x129643,
- 0x30846,
- 0x13906,
- 0x25dd04,
- 0x336147,
- 0x793c8,
- 0x2e8fc4,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x16542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x330b88,
- 0x202304,
- 0x23c4c4,
- 0x20e804,
- 0x39dac7,
- 0x2e59c7,
- 0x216543,
- 0x23ec8b,
- 0x33100a,
- 0x38f947,
- 0x300288,
- 0x353348,
- 0x222bc3,
- 0x3c2e87,
- 0x2f5503,
- 0x214fc8,
- 0x224309,
- 0x2b1b84,
- 0x243543,
- 0x244688,
- 0x216443,
- 0x2e320a,
- 0x2e8706,
- 0x3b1d47,
- 0x2296c3,
- 0x2f1b46,
- 0x3d2288,
- 0x20cb83,
- 0x275546,
- 0x2fd6cd,
- 0x2ffe48,
- 0x305b0b,
- 0x223bc6,
- 0x354b47,
- 0x21d985,
- 0x22e68a,
- 0x2fce05,
- 0x26f9ca,
- 0x22a042,
- 0x201643,
- 0x35a784,
+ 0x21f483,
+ 0xf1a47,
+ 0x84447,
+ 0x332c6,
+ 0x46aca,
+ 0x9a808,
+ 0x64f08,
+ 0x65bc7,
+ 0xc3184,
+ 0x71506,
+ 0xf58c5,
+ 0xcab05,
+ 0xb0e03,
+ 0x18a46,
+ 0x5b646,
+ 0x29f804,
+ 0x334f47,
+ 0x7ffc8,
+ 0x2ef2c4,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x5842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x32da08,
+ 0x209f84,
+ 0x23a844,
+ 0x2045c4,
+ 0x38c047,
+ 0x2ec207,
+ 0x229f43,
+ 0x24128b,
+ 0x3b154a,
+ 0x34a2c7,
+ 0x3e4448,
+ 0x220208,
+ 0x224d03,
+ 0x2886c7,
+ 0x28c6c3,
+ 0x214688,
+ 0x22f089,
+ 0x258104,
+ 0x25e043,
+ 0x247608,
+ 0x219c03,
+ 0x2e984a,
+ 0x2ee0c6,
+ 0x33bc87,
+ 0x2127c3,
+ 0x30eec6,
+ 0x3c0848,
+ 0x21f483,
+ 0x25a6c6,
+ 0x2fe8cd,
+ 0x300408,
+ 0x305d4b,
+ 0x20e0c6,
+ 0x385887,
+ 0x22ab45,
+ 0x2b904a,
+ 0x22b685,
+ 0x26818a,
+ 0x26ca02,
+ 0x205ec3,
+ 0x249b04,
0x200006,
- 0x3bb603,
- 0x2b4083,
- 0x28bb03,
- 0x202303,
- 0x37a403,
- 0x202002,
- 0x39d805,
- 0x2b5949,
- 0x209983,
- 0x2492c3,
- 0x203b43,
- 0x216c43,
+ 0x3bf783,
+ 0x2a1c03,
+ 0x289e03,
+ 0x209f83,
+ 0x20c083,
+ 0x203742,
+ 0x38bd85,
+ 0x2b9dc9,
+ 0x202043,
+ 0x24b303,
+ 0x2030c3,
+ 0x219243,
0x200201,
- 0x2d2807,
- 0x2eaa85,
- 0x3c1fc3,
- 0x26b383,
- 0x3e9683,
- 0x20e804,
- 0x3c3303,
- 0x2271c8,
- 0x35bdc3,
- 0x3e1ecd,
- 0x284a88,
- 0x20b486,
- 0x2e9443,
- 0x35a2c3,
- 0x361ac3,
- 0xda16543,
- 0x23bdc8,
- 0x23ec84,
- 0x247203,
- 0x249f03,
+ 0x31fa87,
+ 0x219385,
+ 0x3c5943,
+ 0x269183,
+ 0x3ef083,
+ 0x2045c4,
+ 0x383d43,
+ 0x2120c8,
+ 0x36e9c3,
+ 0x31484d,
+ 0x28cfc8,
+ 0x3d7506,
+ 0x2f77c3,
+ 0x366443,
+ 0x39afc3,
+ 0xde29f43,
+ 0x23dc08,
+ 0x241284,
+ 0x248c03,
+ 0x24c883,
0x200106,
- 0x24e888,
- 0x266943,
- 0x228fc3,
- 0x2ba1c3,
- 0x220a83,
- 0x22e6c3,
- 0x23a543,
- 0x222bc3,
- 0x22d743,
- 0x255ec3,
- 0x209a43,
- 0x290583,
- 0x325243,
- 0x20ae83,
- 0x232d43,
- 0x3a4e85,
- 0x25c504,
- 0x25dfc7,
- 0x25c082,
- 0x260183,
- 0x263c46,
- 0x265743,
- 0x266c03,
- 0x2822c3,
- 0x35cb03,
- 0x21fb43,
- 0x32d103,
- 0x2a1807,
- 0xe743b43,
- 0x2d3103,
- 0x207c83,
- 0x20e443,
- 0x26a7c3,
- 0x217203,
- 0x3b5945,
- 0x37cac3,
- 0x252749,
- 0x2012c3,
- 0x3139c3,
- 0xea53203,
- 0x2daf43,
- 0x20e843,
- 0x214808,
- 0x2b5886,
- 0x35c8c6,
- 0x2be186,
- 0x267347,
- 0x202143,
- 0x233243,
- 0x216443,
- 0x295846,
- 0x2165c2,
- 0x2e69c3,
- 0x33c405,
- 0x2296c3,
- 0x31c887,
- 0x160d903,
- 0x29ae43,
- 0x2183c3,
- 0x23c9c3,
- 0x23b843,
- 0x20cb83,
- 0x21de86,
- 0x202fc6,
- 0x37db83,
- 0x29a8c3,
- 0x21f6c3,
- 0x259143,
- 0x317783,
- 0x309603,
- 0x30ac03,
- 0x219045,
- 0x24c343,
- 0x250046,
- 0x21b103,
- 0x2f4f88,
- 0x22a543,
- 0x22a549,
- 0x37ad08,
- 0x220548,
- 0x22eac5,
- 0x38ac4a,
- 0x3e08ca,
- 0x3e110b,
- 0x3e1ac8,
- 0x2aa6c3,
- 0x230143,
- 0x390b83,
- 0x2f34c3,
- 0x312588,
- 0x355303,
- 0x36c344,
- 0x203bc2,
+ 0x250bc8,
+ 0x24dac3,
+ 0x22f903,
+ 0x2bfb03,
+ 0x205483,
+ 0x2b9083,
+ 0x220203,
+ 0x224d03,
+ 0x233a43,
+ 0x254583,
+ 0x209343,
+ 0x296a03,
+ 0x328343,
+ 0x20ea83,
+ 0x20a6c3,
+ 0x3ab305,
+ 0x2601c4,
+ 0x261307,
+ 0x262642,
+ 0x263d83,
+ 0x268406,
+ 0x269fc3,
+ 0x26ad43,
+ 0x28a803,
+ 0x271dc3,
+ 0x21f403,
+ 0x20a643,
+ 0x2a7a87,
+ 0xeae9c43,
+ 0x2421c3,
+ 0x208103,
+ 0x204203,
+ 0x258103,
+ 0x21a583,
+ 0x226dc5,
+ 0x382803,
+ 0x38d2c9,
+ 0x200c43,
+ 0x3dfdc3,
+ 0xee57443,
+ 0x227883,
+ 0x204603,
+ 0x217388,
+ 0x2b9d06,
+ 0x271b86,
+ 0x2c4f06,
+ 0x26bf87,
+ 0x22ea83,
+ 0x2335c3,
+ 0x219c03,
+ 0x29a906,
+ 0x226e42,
+ 0x2ed403,
+ 0x366005,
+ 0x2127c3,
+ 0x31b087,
+ 0x160bc03,
+ 0x219d03,
+ 0x2058c3,
+ 0x23eb03,
+ 0x22d043,
+ 0x21f483,
+ 0x215c46,
+ 0x200a86,
+ 0x387c83,
0x22e683,
- 0x24c0c3,
+ 0x202783,
+ 0x227d43,
+ 0x315443,
+ 0x309743,
+ 0x30c883,
+ 0x20ef45,
+ 0x23ffc3,
+ 0x23ffc6,
+ 0x21ad03,
+ 0x28c148,
+ 0x22bcc3,
+ 0x22bcc9,
+ 0x2b8a88,
+ 0x22d3c8,
+ 0x310ac5,
+ 0x235d8a,
+ 0x23ed4a,
+ 0x24430b,
+ 0x244cc8,
+ 0x31c843,
+ 0x21e6c3,
+ 0x30c8c3,
+ 0x2f3883,
+ 0x30e088,
+ 0x32a203,
+ 0x3c3744,
+ 0x203142,
+ 0x23c7c3,
+ 0x253f03,
0x2007c3,
- 0x3d8883,
- 0x281003,
- 0x202883,
- 0x22a042,
- 0x2d3703,
- 0x241403,
- 0x31a2c3,
- 0x31b444,
- 0x35a784,
- 0x227083,
- 0x793c8,
- 0xdf1854c,
- 0xe2ac245,
- 0xbb705,
+ 0x3a8143,
+ 0x280183,
+ 0x236f03,
+ 0x26ca02,
+ 0x2f5443,
+ 0x2450c3,
+ 0x317cc3,
+ 0x319684,
+ 0x249b04,
+ 0x231a83,
+ 0x7ffc8,
+ 0xe315f8c,
+ 0xe6e5745,
+ 0xc1e05,
0x2000c2,
0x200ac2,
- 0x202002,
- 0x202cc2,
+ 0x203742,
+ 0x201182,
0x200202,
- 0x202402,
- 0x250cc2,
- 0x202bc2,
+ 0x202542,
+ 0x25a282,
+ 0x203642,
0x200382,
- 0x200c42,
- 0x30df02,
- 0x203742,
- 0x277782,
+ 0x200b42,
+ 0x208f02,
+ 0x20f782,
+ 0x27eec2,
0x200a82,
- 0x2160c2,
- 0x208402,
- 0x219d02,
- 0x2037c2,
- 0x2cb042,
- 0x205d42,
+ 0x229ac2,
+ 0x20f102,
+ 0x215502,
+ 0x202782,
+ 0x2bbd02,
+ 0x206902,
0x200682,
- 0x214f42,
- 0x212742,
- 0x202b02,
- 0x201702,
- 0x203782,
- 0x202a02,
+ 0x214602,
+ 0x201082,
+ 0x2036c2,
+ 0x2033c2,
+ 0x207802,
+ 0x200fc2,
0xc2,
0xac2,
- 0x2002,
- 0x2cc2,
+ 0x3742,
+ 0x1182,
0x202,
- 0x2402,
- 0x50cc2,
- 0x2bc2,
+ 0x2542,
+ 0x5a282,
+ 0x3642,
0x382,
- 0xc42,
- 0x10df02,
- 0x3742,
- 0x77782,
+ 0xb42,
+ 0x8f02,
+ 0xf782,
+ 0x7eec2,
0xa82,
- 0x160c2,
- 0x8402,
- 0x19d02,
- 0x37c2,
- 0xcb042,
- 0x5d42,
+ 0x29ac2,
+ 0xf102,
+ 0x15502,
+ 0x2782,
+ 0xbbd02,
+ 0x6902,
0x682,
- 0x14f42,
- 0x12742,
- 0x2b02,
- 0x1702,
- 0x3782,
- 0x2a02,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x1642,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x16542,
- 0x216542,
- 0x20cb83,
- 0x10216543,
- 0x343b43,
- 0x216443,
- 0xeb2c7,
- 0x7ca83,
- 0x2386c2,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x30103,
- 0x2296c3,
- 0xd903,
- 0x7ca83,
- 0x20cb83,
- 0xe042,
+ 0x14602,
+ 0x1082,
+ 0x36c2,
+ 0x33c2,
+ 0x7802,
+ 0xfc2,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x5ec2,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x9c589,
+ 0x5842,
+ 0x205842,
+ 0x21f483,
+ 0x10a29f43,
+ 0x2e9c43,
+ 0x219c03,
+ 0xf19c7,
+ 0x81983,
+ 0x247f42,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x1e683,
+ 0x2127c3,
+ 0xbc03,
+ 0x81983,
+ 0x21f483,
+ 0x4182,
0x2001c2,
- 0x15ca1c5,
- 0x146c05,
- 0x20cd42,
- 0x793c8,
- 0x16542,
- 0x23dec2,
- 0x204202,
- 0x202702,
- 0x23a382,
- 0x24ba82,
- 0x10f7c5,
- 0x201482,
- 0x203c82,
- 0x201102,
- 0x203382,
- 0x208402,
- 0x2473c2,
- 0x20b5c2,
- 0x21c282,
- 0x11278384,
+ 0x1405405,
+ 0x145d45,
+ 0x212d02,
+ 0x7ffc8,
+ 0x5842,
+ 0x240482,
+ 0x203782,
+ 0x20a382,
+ 0x23b542,
+ 0x216602,
+ 0xcab05,
+ 0x20ad82,
+ 0x200f82,
+ 0x214542,
+ 0x203fc2,
+ 0x20f102,
+ 0x248dc2,
+ 0x212882,
+ 0x223ac2,
+ 0x11a7c7c4,
0x142,
- 0xb46c7,
- 0x15a43,
- 0x1b63cd,
- 0xeed09,
- 0xef94b,
- 0xf1748,
- 0x64f09,
- 0x114786,
- 0x343b43,
- 0x793c8,
+ 0xf1a47,
+ 0x13683,
+ 0x1b670d,
+ 0xf5949,
+ 0x1a5fcb,
+ 0xf8f08,
+ 0x6b349,
+ 0x1133c6,
+ 0x2e9c43,
+ 0x7ffc8,
0x9c4,
- 0x12db83,
- 0x10e645,
- 0x793c8,
- 0xebe47,
- 0x12455f47,
- 0x12a5f244,
- 0x62246,
- 0x10e689,
- 0xb448e,
- 0x13e247,
- 0x15d8303,
- 0x12e0ad42,
- 0x9989,
- 0xa144,
+ 0x14c3,
+ 0x172f85,
+ 0x7ffc8,
+ 0xf2447,
+ 0x12c5a847,
+ 0x13263284,
+ 0x66806,
+ 0x172fc9,
+ 0xb714e,
+ 0x13e007,
+ 0x15b2a43,
+ 0x13602c02,
+ 0x1edc89,
+ 0x1f04,
0x2000c2,
- 0x25dd04,
- 0x216542,
- 0x216543,
- 0x2104c2,
- 0x222bc3,
- 0x1a003,
+ 0x29f804,
+ 0x205842,
+ 0x229f43,
+ 0x201902,
+ 0x224d03,
+ 0x26403,
0x200382,
- 0x2e8fc4,
- 0x243543,
- 0x256e02,
- 0x2296c3,
- 0x4ba82,
+ 0x2ef2c4,
+ 0x25e043,
+ 0x254902,
+ 0x2127c3,
+ 0x16602,
0x2003c2,
- 0x20cb83,
- 0x24d906,
- 0x33538f,
- 0x602,
- 0x723543,
- 0x2f5dca,
- 0x793c8,
- 0x216542,
- 0x2f5503,
- 0x343b43,
- 0x216443,
- 0xd903,
- 0x147b5e07,
- 0x157cd06,
- 0x13f046,
- 0x14bc4b88,
- 0x1db944,
- 0x14ebe40a,
- 0x15abe40d,
- 0xb4488,
- 0x142e44b,
- 0x147888a,
- 0x15c66b43,
- 0xf3949,
- 0x16104b48,
- 0x1664c347,
- 0x15e360a,
- 0x1513e47,
- 0xaec8b,
- 0x16a9068c,
- 0xa5545,
- 0xcf9c5,
- 0x11c5c9,
- 0x1a0c84,
- 0x117703,
- 0x152be545,
- 0x124443,
- 0x15635c43,
- 0x124443,
- 0x1d7607,
- 0x2bdc2,
- 0x6502,
- 0x6502,
- 0x4182,
- 0x6502,
- 0x4a42,
- 0xd42,
- 0x3242,
- 0x146c05,
- 0xb46c7,
- 0x1db944,
- 0x102784,
- 0x216542,
- 0x216543,
- 0x343b43,
- 0x2296c3,
+ 0x21f483,
+ 0x216e06,
+ 0x33418f,
+ 0x725ec3,
+ 0x2fc58a,
+ 0x7ffc8,
+ 0x205842,
+ 0x28c6c3,
+ 0x2e9c43,
+ 0x219c03,
+ 0xbc03,
+ 0x14bb6147,
+ 0x1582a46,
+ 0x1d1ec6,
+ 0x14fc8bc8,
+ 0x1e6644,
+ 0x152c518a,
+ 0x15c34147,
+ 0xd6d88,
+ 0xb7148,
+ 0x15e930b,
+ 0x147ccca,
+ 0x1606ac83,
+ 0xfb6c9,
+ 0x165045c8,
+ 0x16a54187,
+ 0x14b8e4a,
+ 0x1500f47,
+ 0xb378b,
+ 0x16e81f4c,
+ 0xaa845,
+ 0xfc185,
+ 0x11adc9,
+ 0x1bddc4,
+ 0x1153c3,
+ 0x156c52c5,
+ 0x124283,
+ 0x15a32783,
+ 0x124283,
+ 0x13682,
+ 0x1c82,
+ 0x9e42,
+ 0x9e42,
+ 0x3702,
+ 0x9e42,
+ 0x1b02,
+ 0x2102,
+ 0xd02,
+ 0x145d45,
+ 0xf1a47,
+ 0x1e6644,
+ 0x102504,
+ 0x205842,
+ 0x229f43,
+ 0x2e9c43,
+ 0x2127c3,
0x2000c2,
- 0x200c82,
- 0x206342,
- 0x17a16543,
- 0x247382,
- 0x222bc3,
- 0x201282,
- 0x234402,
- 0x343b43,
- 0x2038c2,
- 0x271cc2,
- 0x22f402,
- 0x200cc2,
- 0x29a402,
+ 0x204cc2,
+ 0x206f02,
+ 0x17e29f43,
+ 0x248d82,
+ 0x224d03,
+ 0x200c02,
+ 0x2a5c02,
+ 0x2e9c43,
+ 0x21e682,
+ 0x271102,
+ 0x232242,
+ 0x2086c2,
+ 0x2a1342,
0x200802,
- 0x200d82,
- 0x205102,
- 0x2870c2,
- 0x2027c2,
- 0x132a0c,
- 0x2c1442,
- 0x25adc2,
- 0x230c02,
- 0x253582,
- 0x216443,
- 0x200bc2,
- 0x2296c3,
- 0x20f502,
- 0x298642,
- 0x20cb83,
- 0x249342,
- 0x202b02,
- 0x20a0c2,
- 0x2014c2,
- 0x2010c2,
- 0x215a82,
- 0x20d782,
- 0x232982,
- 0x22cec2,
- 0x325d0a,
- 0x36918a,
- 0x39ecca,
- 0x3e9b42,
- 0x20cec2,
- 0x2be702,
- 0x17f8cc49,
- 0x183bb68a,
- 0x14380c7,
- 0x18601682,
- 0x1430483,
- 0x2c02,
- 0x1bb68a,
- 0x14f0ce,
- 0x21d684,
- 0xe8805,
- 0x18e16543,
- 0x48383,
- 0x222bc3,
- 0x256d44,
- 0x343b43,
- 0x2b1b84,
- 0x243543,
- 0x13e049,
- 0x133e86,
- 0x216443,
- 0xf1dc4,
- 0x1b03,
- 0x2296c3,
- 0x149f05,
- 0x20d903,
- 0x20cb83,
- 0x1561c04,
- 0x24c343,
- 0x114bc4,
- 0x201643,
- 0x793c8,
- 0x154db43,
- 0x123486,
- 0x155c1c4,
- 0x1a0d45,
- 0x1a0a8a,
- 0x130602,
- 0x199a16cd,
- 0x1b3dc6,
- 0x147f11,
- 0x19f8cc49,
- 0x1a0dc8,
- 0x42008,
- 0x20869487,
- 0x3b42,
- 0x18cdc7,
- 0x208ce,
- 0x146c0b,
- 0x148d8b,
- 0x1c0dca,
- 0x34347,
- 0x793c8,
- 0xb4188,
- 0xfd87,
- 0x20c1fe0b,
- 0x22a87,
- 0x4242,
- 0x3288d,
- 0x163907,
- 0x127b0a,
- 0x12510c,
- 0x1252cf,
- 0x1ca4cf,
- 0x212eb34d,
- 0x2e702,
- 0x16542,
- 0x904c8,
- 0x214e91cc,
- 0x1aab8a,
- 0xeb94a,
- 0x7d54a,
- 0x84888,
- 0x1db88,
- 0x68608,
- 0xebe08,
- 0x17bbc8,
- 0x3242,
- 0x1ca24f,
- 0xcaa8b,
- 0x1dcf08,
- 0x3e1c7,
- 0x874ca,
- 0x3aa4b,
- 0x51b89,
- 0x873c7,
- 0x136f46,
- 0x1da88,
- 0x1e0a8c,
- 0xf4547,
- 0x31a0a,
- 0x1c74c8,
- 0x32f4e,
- 0x3370e,
- 0x3418b,
- 0x3518b,
- 0x3678b,
- 0xfc849,
- 0x880cb,
- 0xb688d,
- 0x158a8b,
- 0xf7a8d,
- 0xf7e0d,
- 0x12378a,
- 0x15a5cb,
- 0x1e150b,
- 0x3f545,
- 0x219c4bd0,
- 0x21c41a88,
- 0x3610f,
- 0x7854f,
- 0x2254d,
- 0x17a710,
- 0x13242,
- 0x22258908,
- 0x1cdd88,
- 0x1b0350,
- 0x106a4e,
- 0x2275bd85,
- 0x555cb,
- 0x13d150,
- 0x1dc8a,
- 0x35349,
- 0x6ff47,
- 0x70287,
- 0x70447,
- 0x71587,
- 0x72407,
- 0x72787,
- 0x734c7,
- 0x73a07,
- 0x73f07,
- 0x74287,
- 0x74947,
- 0x74b07,
- 0x74cc7,
- 0x74e87,
- 0x75207,
- 0x756c7,
- 0x75ec7,
- 0x76287,
- 0x768c7,
- 0x76b87,
- 0x76d47,
- 0x77047,
- 0x77647,
- 0x77847,
- 0x78d07,
- 0x78ec7,
- 0x79087,
- 0x79807,
- 0x7a047,
- 0x7a8c7,
- 0x7d387,
- 0x7d7c7,
- 0x7db47,
- 0x7dd07,
- 0x7e107,
- 0x7e547,
- 0x7ea07,
+ 0x202142,
+ 0x204d02,
+ 0x227e02,
+ 0x20a442,
+ 0x13038c,
+ 0x2c7dc2,
+ 0x2803c2,
+ 0x226282,
+ 0x240e42,
+ 0x219c03,
+ 0x20dec2,
+ 0x2127c3,
+ 0x20e942,
+ 0x2a28c2,
+ 0x21f483,
+ 0x24b382,
+ 0x2036c2,
+ 0x21ee82,
+ 0x204082,
+ 0x20c582,
+ 0x2136c2,
+ 0x215642,
+ 0x231342,
+ 0x226d82,
+ 0x3254ca,
+ 0x36d08a,
+ 0x3a8fca,
+ 0x3f0382,
+ 0x2102c2,
+ 0x227482,
+ 0x18239b09,
+ 0x187bf80a,
+ 0x1542547,
+ 0x18a05f02,
+ 0x142cb83,
+ 0x10c2,
+ 0x1bf80a,
+ 0x15fe8e,
+ 0x259b44,
+ 0x100585,
+ 0x19229f43,
+ 0x498c3,
+ 0x224d03,
+ 0x25b9c4,
+ 0x2e9c43,
+ 0x258104,
+ 0x25e043,
+ 0x13de09,
+ 0x136086,
+ 0x219c03,
+ 0xf9704,
+ 0xd83,
+ 0x2127c3,
+ 0x8e345,
+ 0x20bc03,
+ 0x21f483,
+ 0x1528a44,
+ 0x23ffc3,
+ 0x1954bc04,
+ 0x205ec3,
+ 0x7ffc8,
+ 0x3842,
+ 0x154d603,
+ 0x125e06,
+ 0x1471484,
+ 0x1fc5,
+ 0x1bdbca,
+ 0x86a42,
+ 0x1a002acd,
+ 0x1b9946,
+ 0x187591,
+ 0x1a639b09,
+ 0x15500a,
+ 0x2048,
+ 0x1b5508,
+ 0x6e90e,
+ 0x182d13,
+ 0x21121487,
+ 0xec2,
+ 0x39c94,
+ 0x46f07,
+ 0x2d74e,
+ 0x145d4b,
+ 0x1482cb,
+ 0x1c304a,
+ 0x110947,
+ 0x7ffc8,
+ 0xa1d08,
+ 0xf647,
+ 0x2141f6cb,
+ 0x21646,
+ 0x24bc7,
+ 0x37c2,
+ 0x3124d,
+ 0x142e85,
+ 0x18ee07,
+ 0x10a6ca,
+ 0x12820c,
+ 0x1283cf,
+ 0x570f,
+ 0xb90c2,
+ 0x5842,
+ 0x96948,
+ 0x218f754c,
+ 0x1aee0a,
+ 0xf1f4a,
+ 0x8240a,
+ 0x8cdc8,
+ 0x15948,
+ 0x6da88,
+ 0xf2408,
+ 0xc348,
+ 0xd02,
+ 0x548f,
+ 0x152038d,
+ 0x181acb,
+ 0xd1e88,
+ 0x40787,
+ 0x5494a,
+ 0x3bc0b,
+ 0xa54c9,
+ 0x54847,
+ 0x159286,
+ 0x15848,
+ 0x3ef0c,
+ 0x1cd787,
+ 0x2f5ca,
+ 0x1db408,
+ 0x332ce,
+ 0x3464e,
+ 0x11078b,
+ 0x5594b,
+ 0x15024b,
+ 0x10a249,
+ 0x11870b,
+ 0x12618d,
+ 0x15be4b,
+ 0x3accd,
+ 0x3b04d,
+ 0x41b4a,
+ 0x4994b,
+ 0x4a10b,
+ 0x50ec5,
+ 0x21dc8c10,
+ 0x32c4f,
+ 0x7c98f,
+ 0x147a8d,
+ 0x85f10,
+ 0x6cc2,
+ 0x222fc8c8,
+ 0x1cd608,
+ 0x9ed50,
+ 0x1217ce,
+ 0x2276e985,
+ 0x5a44b,
+ 0x13cf10,
+ 0xa650b,
+ 0x1b858c,
+ 0x15a4a,
+ 0x55b09,
+ 0x6f248,
+ 0x762c7,
+ 0x76607,
+ 0x767c7,
+ 0x77707,
+ 0x78487,
+ 0x78947,
+ 0x79607,
+ 0x79b07,
+ 0x7a007,
+ 0x7a387,
+ 0x7aa47,
+ 0x7ac07,
+ 0x7adc7,
+ 0x7af87,
+ 0x7b307,
+ 0x7b847,
+ 0x7d147,
+ 0x7d587,
+ 0x7e007,
+ 0x7e2c7,
+ 0x7e487,
+ 0x7e787,
+ 0x7ed87,
0x7ef87,
- 0x7f147,
- 0x7f307,
- 0x7f747,
- 0x7fd07,
+ 0x7f907,
+ 0x7fac7,
+ 0x7fc87,
0x80247,
- 0x80847,
- 0x80a07,
- 0x810c7,
- 0x81607,
- 0xc342,
- 0x6870a,
- 0x1a608,
- 0x1bbfcc,
- 0x12fb47,
- 0x44405,
- 0xc3d91,
- 0x13dc6,
- 0x12100a,
- 0x9034a,
- 0x62246,
- 0xb7f4b,
+ 0x80887,
+ 0x81247,
+ 0x82247,
+ 0x82687,
+ 0x82e87,
+ 0x83047,
+ 0x83687,
+ 0x83a07,
+ 0x83ec7,
+ 0x842c7,
+ 0x84607,
+ 0x847c7,
+ 0x85187,
+ 0x86c47,
+ 0x87407,
+ 0x879c7,
+ 0x87b87,
+ 0x88007,
+ 0x89347,
+ 0xd9c2,
+ 0x6db8a,
+ 0x18848,
+ 0x1c014c,
+ 0x1d5287,
+ 0x9ae85,
+ 0x17ac91,
+ 0x1f0006,
+ 0x12c00a,
+ 0x967ca,
+ 0x66806,
+ 0xbcf4b,
0x642,
- 0x39c91,
- 0xc5889,
- 0xa0689,
- 0xa12c6,
- 0x5102,
- 0x9c50a,
- 0xb4e49,
- 0xb558f,
- 0xb5b8e,
- 0xb7288,
- 0x22a17a92,
- 0x19b88,
- 0x22f2fd07,
- 0x1ec82,
- 0x15c709,
- 0x15490a,
- 0x23347589,
- 0x19de09,
- 0x19de0c,
- 0x15f4b,
- 0x436ce,
- 0xe6cc,
- 0xf364f,
- 0x1bfdce,
- 0x4594c,
- 0x5e789,
- 0x658d1,
- 0x65e88,
- 0x7bd12,
- 0x7cd4d,
- 0x7e6cd,
- 0x8564b,
- 0x8b795,
- 0x932c9,
- 0x18500a,
- 0x1b0049,
- 0x1d4350,
- 0x99acb,
- 0x9ee0f,
- 0xa3fcb,
- 0xad6cc,
- 0xbac90,
- 0xd844a,
- 0x18264d,
- 0x19210e,
- 0xbc48a,
- 0xc090c,
- 0x1997d4,
- 0xc5511,
- 0xca64b,
- 0xccc8f,
- 0xd048d,
- 0xd42ce,
- 0xd55cc,
- 0xd5dcc,
- 0xd814b,
- 0x14284e,
- 0x197d50,
- 0x1aa38b,
- 0xddacd,
- 0xe730f,
- 0xec90c,
- 0x108b4e,
- 0x10c891,
- 0x18214c,
- 0x11ca07,
- 0x144e8d,
- 0x15ffcc,
- 0x1693d0,
- 0x17208d,
- 0x172dc7,
- 0x195a10,
- 0x1a5888,
- 0x1abd0b,
- 0xbd9cf,
- 0x1bc248,
- 0x68e8d,
- 0x111f10,
- 0x174389,
- 0x237c4b88,
- 0x23ac2a86,
- 0xc3943,
- 0x52a89,
- 0x54c9,
- 0xcbc45,
- 0x7bc2,
- 0x18fd89,
- 0x62c8a,
- 0x23e7c1c6,
- 0x147c1cd,
- 0x24363b04,
- 0x1da806,
- 0x2630a,
- 0x2778d,
- 0x246da54b,
- 0x2484f809,
- 0x2b203,
- 0x11b88a,
- 0xe9951,
- 0xe9d89,
- 0xeb8c7,
- 0xec648,
- 0xecd07,
- 0x12fc08,
- 0x14808b,
- 0x1326c9,
- 0xf2550,
- 0xf2a0c,
- 0x24ef31cd,
- 0xf5c48,
- 0xf7685,
- 0x1d0608,
- 0x19a8ca,
- 0x16c507,
- 0x1cc2,
- 0x25239155,
- 0x13de4a,
- 0x1363c9,
- 0x5688,
- 0xa2549,
- 0x1df185,
- 0x11c70a,
- 0x97c4f,
- 0xa55cb,
- 0x15ee8c,
- 0xc8052,
- 0x1b5a06,
- 0x9a905,
- 0x15f148,
- 0xfa0cb,
- 0xfa9d1,
- 0x143847,
- 0x5788a,
- 0x25704a05,
- 0x1b560c,
- 0x13a843,
- 0x1953c6,
- 0x473c2,
- 0x10ad8b,
- 0x10b8ca,
- 0x150bc4c,
- 0xf48c8,
- 0xf7c48,
- 0x25a05706,
- 0x1b7287,
- 0x4a02,
- 0x1ec2,
- 0x1a6e50,
- 0x67dc7,
- 0x67ecf,
- 0x30846,
- 0x12270e,
- 0x9d3cb,
- 0x46c88,
- 0x51f49,
- 0x117052,
- 0x11820d,
- 0x118d88,
- 0xef809,
- 0x19c60d,
- 0x112c9,
- 0x6824b,
- 0x69d88,
- 0x73d08,
- 0x75388,
- 0x771c9,
- 0x773ca,
- 0x799cc,
- 0x1e17ca,
- 0xf14ca,
- 0x1177c7,
- 0xa38ca,
- 0x738d,
- 0x174cd1,
- 0x25ed45c6,
- 0x17768b,
- 0xbe0c,
- 0x414c8,
- 0x3d609,
- 0x14c6cd,
- 0x57110,
- 0x190c8d,
- 0x6502,
- 0x6540d,
- 0x4a42,
- 0x66342,
- 0x11770a,
- 0x263d034a,
- 0x25c4a,
- 0x26680b48,
- 0x120f0a,
- 0x12f4cb,
- 0x3398c,
- 0x1203ca,
- 0x2692064f,
- 0x120a0e,
- 0x26de9a05,
- 0x12bf48,
- 0xe042,
- 0x1420a83,
- 0x1a38e20e,
- 0x1ab2eb8e,
- 0x1b202cca,
- 0x1bb7c04e,
- 0x1c32d84e,
- 0x1cb3408c,
- 0x14380c7,
- 0x14380c9,
- 0x1430483,
- 0x1d3419cc,
- 0x1db54e89,
- 0x1e36d309,
- 0x1eba0889,
- 0x2c02,
- 0x1a3511,
- 0x12ead1,
- 0x2c0d,
- 0x17bf91,
- 0x12d791,
- 0x133fcf,
- 0x14190f,
- 0x154dcc,
- 0x16d24c,
- 0x1a07cc,
- 0x1b764d,
- 0x17d415,
- 0xc510c,
- 0xe140c,
- 0x1439d0,
- 0x14a18c,
- 0x18758c,
- 0x18df59,
- 0x1bed19,
- 0x1cabd9,
- 0x1cc7d4,
- 0x1d2454,
- 0x1e8694,
- 0x5e54,
- 0xff14,
- 0x1f2c51c9,
- 0x1f9e8949,
- 0x202e14c9,
- 0x1a666089,
- 0x2c02,
- 0x1ae66089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
- 0x1b666089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
- 0x1be66089,
- 0x2c02,
- 0x1c666089,
- 0x2c02,
- 0x1ce66089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
- 0x1d666089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
- 0x1de66089,
- 0x2c02,
- 0x1e666089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
- 0x1ee66089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
- 0x1f666089,
- 0x2c02,
- 0x1fe66089,
- 0x2c02,
- 0x20666089,
- 0x2c02,
- 0x5e4a,
- 0x2c02,
+ 0x389d1,
+ 0xcb289,
+ 0xa6a09,
+ 0xa7546,
+ 0x4d02,
+ 0x6b04a,
+ 0xb92c9,
+ 0xb9a0f,
+ 0xba00e,
+ 0xbb988,
+ 0x22a6eb12,
+ 0x15388,
+ 0x22e6f447,
+ 0xbee0f,
+ 0x1d7c2,
+ 0x719c9,
+ 0x8654a,
+ 0x23217d09,
+ 0x18c389,
+ 0x18c38c,
+ 0x2994b,
+ 0x1b438e,
+ 0x448c,
+ 0xfb3cf,
+ 0x1c494e,
+ 0x3f30c,
+ 0x56a09,
+ 0x15f291,
+ 0x61ac8,
+ 0x6a152,
+ 0x81c4d,
+ 0x83b8d,
+ 0x88b0b,
+ 0x89a95,
+ 0x90249,
+ 0x9158a,
+ 0x95bc9,
+ 0x190f90,
+ 0x1b56cb,
+ 0xa0dcf,
+ 0xab04b,
+ 0xb194c,
+ 0xc1390,
+ 0xdb90a,
+ 0x1a158d,
+ 0x1a3f8e,
+ 0x19e84a,
+ 0xc324c,
+ 0x1a2614,
+ 0xcaf11,
+ 0xce00b,
+ 0xd03cf,
+ 0xd2fcd,
+ 0xd608e,
+ 0xd9d0c,
+ 0xda74c,
+ 0xdb60b,
+ 0xdc60e,
+ 0xdd9d0,
+ 0x141b0b,
+ 0x1a110d,
+ 0x1ae1cf,
+ 0xf2ecc,
+ 0x108c0e,
+ 0x10fd91,
+ 0x1a3a8c,
+ 0x144347,
+ 0x162a4d,
+ 0x16d2cc,
+ 0x17a610,
+ 0x17bd0d,
+ 0x19b5c7,
+ 0x1a4990,
+ 0x1afe08,
+ 0xc284b,
+ 0xc480f,
+ 0x1c03c8,
+ 0x6e30d,
+ 0x112610,
+ 0x17d2c9,
+ 0x237c8bc8,
+ 0x23ac8c86,
+ 0xc9983,
+ 0x61ec9,
+ 0x25889,
+ 0xd0e85,
+ 0x8042,
+ 0x14a749,
+ 0x6738a,
+ 0x23e6a606,
+ 0x146a60d,
+ 0x242ff684,
+ 0x1e4c46,
+ 0x25dca,
+ 0x2c60d,
+ 0x246e034b,
+ 0x98e08,
+ 0x2489f389,
+ 0x2f443,
+ 0x119aca,
+ 0xebb49,
+ 0xf1091,
+ 0xf14c9,
+ 0xf1ec7,
+ 0xf2c08,
+ 0xf3347,
+ 0x6f348,
+ 0x558b,
+ 0x130049,
+ 0xfa0d0,
+ 0xfa58c,
+ 0xfaa09,
+ 0x24efadcd,
+ 0xfc408,
+ 0xfd045,
+ 0x146f08,
+ 0x1a370a,
+ 0x1325c7,
+ 0x1242,
+ 0x25276f95,
+ 0x13dc0a,
+ 0x142cc9,
+ 0x25a48,
+ 0x1a7ec9,
+ 0x1d2a45,
+ 0x11af0a,
+ 0x173947,
+ 0x9c30f,
+ 0xaa8cb,
+ 0x16154c,
+ 0xef892,
+ 0x3e046,
+ 0x1409588,
+ 0x7b645,
+ 0x115608,
+ 0x1e4d8b,
+ 0x1e5151,
+ 0x17587,
+ 0x6798a,
+ 0x25704485,
+ 0x1b5ccc,
+ 0x2590afce,
+ 0x13a283,
+ 0x19de06,
+ 0x48dc2,
+ 0x10d2cb,
+ 0x10de4a,
+ 0x150f14c,
+ 0x98d08,
+ 0x3ae88,
+ 0x25e25ac6,
+ 0x152f8e,
+ 0x132207,
+ 0x9942,
+ 0x1782,
+ 0x18fb50,
+ 0x6ca87,
+ 0x6cb8f,
+ 0x18a46,
+ 0x5c88e,
+ 0xa494b,
+ 0x566c8,
+ 0xa5889,
+ 0x1e1e52,
+ 0x115c4d,
+ 0x1167c8,
+ 0x1a5e89,
+ 0x1ec14d,
+ 0x6cf09,
+ 0x6d6cb,
+ 0x6fe48,
+ 0x79e08,
+ 0x7b488,
+ 0x7e909,
+ 0x7eb0a,
+ 0x7f28c,
+ 0xcf34a,
+ 0xe808a,
+ 0x115487,
+ 0xae6ca,
+ 0xf8ac8,
+ 0x780d,
+ 0xb7bd1,
+ 0x262d6386,
+ 0x16588b,
+ 0x3754c,
+ 0x45188,
+ 0x1d9a49,
+ 0x15d48d,
+ 0x77950,
+ 0x1476cc,
+ 0x14b94d,
+ 0x9e42,
+ 0x8a4cd,
+ 0x1b02,
+ 0x55202,
+ 0x1153ca,
+ 0x267cbc4a,
+ 0x2b10a,
+ 0x26a87cc8,
+ 0x12bf0a,
+ 0x11bc8b,
+ 0x11c9c7,
+ 0x1b134c,
+ 0x348cc,
+ 0x11e90a,
+ 0x26d1eb8f,
+ 0x11ef4c,
+ 0x11f247,
+ 0x1208ce,
+ 0x271f0245,
+ 0x184588,
+ 0x4182,
+ 0x1405483,
+ 0x1ab751ce,
+ 0x1b20118e,
+ 0x1ba0c98a,
+ 0x1c332dce,
+ 0x1ca060ce,
+ 0x1d340c8c,
+ 0x1542547,
+ 0x15550c9,
+ 0x142cb83,
+ 0x1db6890c,
+ 0x1e206cc9,
+ 0x1ebb7249,
+ 0x1f3bd9c9,
+ 0x10c2,
+ 0x175111,
+ 0x10d1,
+ 0xc8cd,
+ 0x132d11,
+ 0x1361d1,
+ 0x140bcf,
+ 0x16884f,
+ 0x1a9c0c,
+ 0x1b718c,
+ 0x1bd90c,
+ 0xe72cd,
+ 0xf8455,
+ 0x12b64c,
+ 0x142f8c,
+ 0x198c90,
+ 0x1c170c,
+ 0x1c3bcc,
+ 0x1c6019,
+ 0x1db5d9,
+ 0x5e19,
+ 0x6a14,
+ 0xf7d4,
+ 0x10954,
+ 0x10ed4,
+ 0x17714,
+ 0x1fa0fa89,
+ 0x20010c09,
+ 0x20b43049,
+ 0x1ae61cc9,
+ 0x10c2,
+ 0x1b661cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
+ 0x1be61cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
+ 0x1c661cc9,
+ 0x10c2,
+ 0x1ce61cc9,
+ 0x10c2,
+ 0x1d661cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
+ 0x1de61cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
+ 0x1e661cc9,
+ 0x10c2,
+ 0x1ee61cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
+ 0x1f661cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
+ 0x1fe61cc9,
+ 0x10c2,
+ 0x20661cc9,
+ 0x10c2,
+ 0x20e61cc9,
+ 0x10c2,
+ 0x5e0a,
+ 0x10c2,
0x1400401,
- 0x147f05,
- 0x1c0dc4,
- 0x8903,
- 0x8502,
- 0x54642,
- 0x1419303,
- 0x1403603,
- 0x14fea83,
- 0x18e20e,
- 0x12eb8e,
- 0x89e8e,
- 0x2cca,
- 0x17c04e,
- 0x12d84e,
- 0x13408c,
- 0x1419cc,
- 0x154e89,
- 0x16d309,
- 0x1a0889,
- 0xc51c9,
- 0x1e8949,
- 0xe14c9,
- 0x143a8d,
- 0x6109,
- 0x101c9,
- 0x3d1c2,
- 0x1cbcc4,
- 0x1cec84,
- 0x1d1104,
- 0x1df604,
- 0xaef44,
- 0xacdc4,
- 0x4a9c4,
- 0x35644,
- 0x1a704,
- 0x136fc4,
- 0x7b0c9,
- 0x7b0cc,
- 0x158286,
- 0x15828e,
- 0x7ce84,
- 0x155cf03,
- 0x14a007,
- 0x148ae0c,
- 0x9983,
- 0x136fc4,
- 0x13242,
- 0xe91c8,
- 0xd6b04,
- 0x1e9706,
- 0xdd5c4,
- 0x121646,
- 0x1f8c2,
- 0x7281,
- 0x27c44,
- 0x69306,
- 0x15b83,
- 0x9983,
- 0x71703,
- 0xc7e43,
- 0x14803,
- 0xf7a03,
- 0xc8045,
- 0x5adc2,
- 0x148a42,
- 0x1a1e88,
- 0xee7c7,
- 0x132747,
- 0x3242,
+ 0x187585,
+ 0x1c3044,
+ 0x145b883,
+ 0x15cf803,
+ 0x158f143,
+ 0x1751ce,
+ 0x118e,
+ 0x8face,
+ 0xc98a,
+ 0x132dce,
+ 0x60ce,
+ 0x140c8c,
+ 0x16890c,
+ 0x6cc9,
+ 0x1b7249,
+ 0x1bd9c9,
+ 0xfa89,
+ 0x10c09,
+ 0x143049,
+ 0xf864d,
+ 0x11189,
+ 0x179c9,
+ 0x147384,
+ 0x170a04,
+ 0x1ec684,
+ 0x1f0144,
+ 0xb3a44,
+ 0x154bc4,
+ 0x1ba644,
+ 0x55e04,
+ 0x18944,
+ 0x212c4,
+ 0x16f4c9,
+ 0x16f4cc,
+ 0x14fa46,
+ 0x14fa4e,
+ 0x81d84,
+ 0x1596343,
+ 0x1c3a47,
+ 0x1490c0c,
+ 0x2043,
+ 0x212c4,
+ 0x6cc2,
+ 0x4f087,
+ 0xf7548,
+ 0xa2108,
+ 0xdcbc4,
+ 0x1a9806,
+ 0x1351c7,
+ 0xe3504,
+ 0x114046,
+ 0x1f182,
+ 0x1541,
+ 0x22104,
+ 0x6e786,
+ 0x1a883,
+ 0x6cc2,
+ 0x2043,
+ 0xdc843,
+ 0xef683,
+ 0x12683,
+ 0x10a1c3,
+ 0xef885,
+ 0x803c2,
+ 0x7102,
+ 0x7108,
+ 0xf4c87,
+ 0x1300c7,
+ 0xd02,
0x2000c2,
- 0x216542,
- 0x2104c2,
- 0x218242,
+ 0x205842,
+ 0x201902,
+ 0x218b02,
0x200382,
0x2003c2,
- 0x201ec2,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x26a7c3,
- 0x2296c3,
- 0x20cb83,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x2296c3,
- 0x20cb83,
- 0xb303,
- 0x343b43,
- 0xb1b84,
+ 0x201782,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258103,
+ 0x2127c3,
+ 0x21f483,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2127c3,
+ 0x21f483,
+ 0x12c03,
+ 0x2e9c43,
+ 0x58104,
0x2000c2,
- 0x253c43,
- 0x29216543,
- 0x3a5287,
- 0x343b43,
- 0x21b283,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x23098a,
- 0x24d905,
- 0x21f6c3,
- 0x213402,
- 0x793c8,
- 0x296df98a,
- 0xe01,
- 0x793c8,
- 0x16542,
- 0x138402,
- 0x29e4f58b,
- 0x2a2093c4,
- 0x163a45,
- 0x1403ec5,
- 0xe91c6,
- 0x2a603ec5,
- 0x5fa83,
- 0x1b0243,
+ 0x258843,
+ 0x29629f43,
+ 0x3ab707,
+ 0x2e9c43,
+ 0x2280c3,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x22600a,
+ 0x216e05,
+ 0x202783,
+ 0x208ec2,
+ 0x7ffc8,
+ 0x29ae574a,
+ 0xc41,
+ 0x7ffc8,
+ 0x5842,
+ 0x137d42,
+ 0x2a29f10b,
+ 0x2a635204,
+ 0xff5c5,
+ 0x1402cc5,
+ 0xf7546,
+ 0x2aa02cc5,
+ 0x635c3,
+ 0x9ec43,
0x9c4,
- 0x12db83,
- 0x10e645,
- 0x146c05,
- 0x793c8,
- 0x22a87,
- 0x16543,
- 0x1b4bcd,
- 0x2ae42647,
- 0x1386,
- 0x2b17be85,
- 0x186012,
- 0x1447,
- 0x1e48a,
- 0x17588,
- 0x1e387,
- 0x7368a,
- 0x1bd188,
- 0x110a47,
- 0x165d8f,
- 0x3db87,
- 0x4bb86,
- 0x13d150,
- 0x19350f,
- 0x1b009,
- 0x1da884,
- 0x2b40150e,
- 0x5b0c9,
- 0x74fc6,
- 0x1113c9,
- 0x190a86,
- 0x6ac6,
- 0xb8e4c,
- 0x3ac4a,
- 0x51d07,
- 0x14140a,
- 0x1909,
- 0x25e8c,
- 0x2954a,
- 0x6b44a,
- 0x10e689,
- 0x1da806,
- 0x51dca,
- 0x11934a,
- 0xa954a,
- 0x114309,
- 0xe8b88,
- 0xe8e06,
- 0xef08d,
- 0x5b88b,
- 0xcc205,
- 0x2bb1e14c,
- 0x13e247,
- 0x10fcc9,
- 0xd6187,
- 0xc5c14,
- 0x11230b,
- 0x1dcd4a,
- 0x116eca,
- 0xb080d,
- 0x152f6c9,
- 0x117fcc,
- 0x118b8b,
- 0x31a03,
- 0x31a03,
- 0x32f46,
- 0x31a03,
- 0xe91c8,
- 0x157243,
- 0x4ebc4,
- 0x5fc83,
- 0x14a9607,
- 0x51f05,
- 0x15186c3,
- 0x5c549,
- 0xc8045,
- 0xfa0cb,
- 0x14ecb83,
- 0x152e06,
- 0x1523947,
- 0x1d45c7,
- 0x2c97ce89,
- 0x1d1a86,
- 0x53c43,
- 0x793c8,
- 0x16542,
- 0x56d44,
- 0x43ac3,
- 0x155b45,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x203b43,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x2a0843,
- 0x201643,
- 0x203b43,
- 0x25dd04,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x20e603,
- 0x2192c3,
- 0x213402,
- 0x2e17cf85,
- 0x1438003,
- 0x216543,
- 0x222bc3,
- 0x21a003,
- 0x2f5503,
- 0x343b43,
- 0x2b1b84,
- 0x34b203,
- 0x233243,
- 0x216443,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x21f6c3,
- 0x2ee0fc03,
- 0xc7f49,
- 0x16542,
- 0x225103,
- 0x2fa16543,
- 0x222bc3,
- 0x252183,
- 0x343b43,
- 0x2207c3,
- 0x233243,
- 0x20cb83,
- 0x2037c3,
- 0x3df304,
- 0x793c8,
- 0x30216543,
- 0x222bc3,
- 0x2b7343,
- 0x343b43,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x238743,
- 0x793c8,
- 0x30a16543,
- 0x222bc3,
- 0x2f5503,
- 0x20d903,
- 0x20cb83,
- 0x793c8,
- 0x14380c7,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x146c05,
- 0xb46c7,
- 0xc5e4b,
- 0x31a3ca06,
- 0x31efdb4b,
- 0xea184,
- 0xcc205,
- 0x1472588,
- 0x2f20d,
- 0x1c4b88,
- 0x136fc4,
- 0x3264ccc5,
- 0x27804,
- 0x16542,
- 0x1a143,
- 0x158185,
- 0x386c2,
- 0x34aac5,
- 0x793c8,
- 0x33e98f0d,
- 0x343a11ca,
- 0x24642,
- 0x5483,
- 0x164f4f,
- 0x18242,
- 0x7ce84,
- 0x136fc4,
- 0x16542,
+ 0x14c3,
+ 0x172f85,
+ 0x145d45,
+ 0x7ffc8,
+ 0x24bc7,
+ 0x29f43,
+ 0x3514d,
+ 0x2b246907,
+ 0xac86,
+ 0x2b40c7c5,
+ 0x148792,
+ 0xad47,
+ 0x1624a,
+ 0x14e88,
+ 0x16147,
+ 0x1d5b4a,
+ 0x1bad08,
+ 0x6d487,
+ 0x156acf,
+ 0x4dd87,
+ 0x539c6,
+ 0x13cf10,
+ 0xc9c8f,
+ 0x1ac09,
+ 0x1e4cc4,
+ 0x2b80ae0e,
+ 0x4f3c9,
+ 0x7b0c6,
+ 0x111ac9,
+ 0x19ab46,
+ 0x1d71c6,
+ 0xbe24c,
+ 0x3be0a,
+ 0xa5647,
+ 0x1e224a,
+ 0xb209,
+ 0xfe38c,
+ 0x2724a,
+ 0x6b68a,
+ 0x172fc9,
+ 0x1e4c46,
+ 0xa570a,
+ 0x116d4a,
+ 0xaf4ca,
+ 0x157189,
+ 0xeee88,
+ 0xef106,
+ 0xf644d,
+ 0x5fe0b,
+ 0xd1445,
+ 0x2bf889cc,
+ 0x13e007,
+ 0x1c8049,
+ 0xdab07,
+ 0xb2c54,
+ 0x112a0b,
+ 0xd1cca,
+ 0x1e1cca,
+ 0xb578d,
+ 0x151be89,
+ 0x115a0c,
+ 0x1165cb,
+ 0x163217,
+ 0x163d55,
+ 0x2f5c3,
+ 0x2f5c3,
+ 0x332c6,
+ 0x2f5c3,
+ 0xf7548,
+ 0x156983,
+ 0x51384,
+ 0x1c244,
+ 0x1c24c,
+ 0x63883,
+ 0x14af587,
+ 0xa5845,
+ 0x142b343,
+ 0x142b348,
+ 0x60209,
+ 0xef885,
+ 0x1e4d8b,
+ 0xce2cb,
+ 0x14f3143,
+ 0x14f3148,
+ 0x149c86,
+ 0x1441d07,
+ 0x191207,
+ 0x2cd82bc9,
+ 0x12686,
+ 0x58843,
+ 0x7ffc8,
+ 0x5842,
+ 0x5b9c4,
+ 0x97783,
+ 0x12e885,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x2030c3,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x39ac43,
+ 0x205ec3,
+ 0x2030c3,
+ 0x29f804,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x2043c3,
+ 0x208d43,
+ 0x208ec2,
+ 0x2e582cc5,
+ 0x14325c3,
+ 0x229f43,
+ 0x224d03,
+ 0x226403,
+ 0x28c6c3,
+ 0x2e9c43,
+ 0x258104,
+ 0x3ce883,
+ 0x2335c3,
+ 0x219c03,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x202783,
+ 0x2f2265c3,
+ 0xef789,
+ 0x5842,
+ 0x2f0243,
+ 0x2fe29f43,
+ 0x224d03,
+ 0x255f03,
+ 0x2e9c43,
+ 0x22d643,
+ 0x2335c3,
+ 0x21f483,
+ 0x203303,
+ 0x3d2bc4,
+ 0x7ffc8,
+ 0x30629f43,
+ 0x224d03,
+ 0x2bba43,
+ 0x2e9c43,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x265503,
+ 0x7ffc8,
+ 0x30e29f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x20bc03,
+ 0x21f483,
+ 0x7ffc8,
+ 0x1542547,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x145d45,
+ 0xf1a47,
+ 0xb2e8b,
+ 0x31e3eb46,
+ 0xf18c4,
+ 0xd1445,
+ 0x1475dc8,
+ 0x3204d,
+ 0x1c8bc8,
+ 0x3275e205,
+ 0x2c684,
+ 0x5842,
+ 0xb8c3,
+ 0x14f945,
+ 0x47f42,
+ 0x340a45,
+ 0x7ffc8,
+ 0x33f0ac4d,
+ 0x3420244a,
+ 0xc142,
+ 0x5083,
+ 0x16934f,
+ 0x18b02,
+ 0x81d84,
+ 0x212c4,
+ 0x5842,
0x2000c2,
- 0x253c43,
- 0x216543,
- 0x343b43,
- 0x2b1b84,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x21f6c3,
- 0x216543,
- 0x222bc3,
- 0x2296c3,
- 0x20cb83,
- 0x19045,
- 0x331408,
- 0x25dd04,
- 0x379ac6,
- 0x3a0686,
- 0x793c8,
- 0x2b6643,
- 0x2f6689,
- 0x21c495,
- 0x1c49f,
- 0x216543,
- 0xf4d87,
- 0x38db12,
- 0x16a146,
- 0x182c45,
- 0x1dc8a,
- 0x35349,
- 0x38d8cf,
- 0x2e8fc4,
- 0x237a05,
- 0x313790,
- 0x2b1087,
- 0x20d903,
- 0x2c2308,
- 0x13846,
- 0x29fc4a,
- 0x26fb04,
- 0x304443,
- 0x213402,
- 0x2fe64b,
- 0x222bc3,
- 0x343b43,
- 0xd903,
- 0x15b044,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
+ 0x258843,
+ 0x229f43,
+ 0x2e9c43,
+ 0x258104,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x202783,
+ 0x229f43,
+ 0x224d03,
+ 0x2127c3,
+ 0x21f483,
+ 0xef45,
+ 0x32e1c8,
+ 0x29f804,
+ 0x371f86,
+ 0x3a9ac6,
+ 0x7ffc8,
+ 0x3184c3,
+ 0x236c09,
+ 0x21b795,
+ 0x1b79f,
+ 0x229f43,
+ 0x8bf47,
+ 0x398852,
+ 0x18ce86,
+ 0x18fa45,
+ 0x15a4a,
+ 0x55b09,
+ 0x39860f,
+ 0x2ef2c4,
+ 0x231b05,
+ 0x3dfb90,
+ 0x285787,
+ 0x20bc03,
+ 0x219d08,
+ 0x21146,
+ 0x28aa0a,
+ 0x257fc4,
+ 0x3041c3,
+ 0x208ec2,
+ 0x2ff38b,
+ 0x224d03,
+ 0x2e9c43,
+ 0xbc03,
+ 0x18a044,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
0x309a43,
- 0x216542,
- 0x187003,
- 0x149c04,
- 0x2296c3,
- 0x20cb83,
- 0x364419c5,
- 0x1de746,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x21b283,
- 0x233c83,
- 0x20cb83,
- 0x53c43,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x19f42,
+ 0x205842,
+ 0x38fc3,
+ 0x1e3084,
+ 0x2127c3,
+ 0x21f483,
+ 0x36426b85,
+ 0x1d9806,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2280c3,
+ 0x2307c3,
+ 0x21f483,
+ 0x58843,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x1a802,
0x2000c2,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x3ec5,
- 0x63a09,
- 0x9983,
- 0x25dd04,
- 0x216543,
- 0x222bc3,
- 0x28d4c4,
- 0x2296c3,
- 0x20cb83,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x1b7409,
- 0xe804,
- 0x216543,
- 0x3242,
- 0x222bc3,
- 0x2f5503,
- 0x20e443,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x2a02,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x3636c4,
- 0x2b1b84,
- 0x2296c3,
- 0x20cb83,
- 0x201643,
- 0x4702,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x284103,
- 0xe103,
- 0x1b283,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x38bc6,
- 0x325d0a,
- 0x3453c9,
- 0x35fd4b,
- 0x36084a,
- 0x36918a,
- 0x37860b,
- 0x39084a,
- 0x3979ca,
- 0x39ecca,
- 0x39ef4b,
- 0x3c5589,
- 0x3d368a,
- 0x3d3acb,
- 0x3dfecb,
- 0x3e914a,
- 0x4042,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x3ecb,
- 0x106a47,
- 0x69a08,
- 0x19c744,
- 0x1db944,
- 0x98e48,
- 0xedac6,
- 0x1481c6,
- 0x13a09,
- 0x793c8,
- 0x216543,
- 0x1dc84,
- 0x26ff44,
- 0x215d42,
- 0x21b544,
- 0x30eb85,
- 0x203b43,
- 0x25dd04,
- 0x216543,
- 0x23ec84,
- 0x222bc3,
- 0x256d44,
- 0x2e8fc4,
- 0x2b1b84,
- 0x233243,
- 0x2296c3,
- 0x20cb83,
- 0x2655c5,
- 0x20e603,
- 0x21f6c3,
- 0x27d683,
- 0x2d1984,
- 0x323404,
- 0x34bd45,
- 0x793c8,
- 0x32e744,
- 0x3c2086,
- 0x30e7c4,
- 0x216542,
- 0x2c8447,
- 0x250707,
- 0x254744,
- 0x2ee845,
- 0x372285,
- 0x2b96c5,
- 0x2b1b84,
- 0x267408,
- 0x25d206,
- 0x392c88,
- 0x287105,
- 0x2efe85,
- 0x257204,
- 0x20cb83,
- 0x305504,
- 0x3770c6,
- 0x24da03,
- 0x2d1984,
- 0x26fac5,
- 0x38fd04,
- 0x2aacc4,
- 0x213402,
- 0x38f846,
- 0x3b8fc6,
- 0x315f85,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x2cc5,
+ 0x63649,
+ 0x2043,
+ 0x29f804,
+ 0x229f43,
+ 0x224d03,
+ 0x292e44,
+ 0x2127c3,
+ 0x21f483,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x12b409,
+ 0x45c4,
+ 0x229f43,
+ 0xd02,
+ 0x224d03,
+ 0x28c6c3,
+ 0x204203,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0xfc2,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x3547c4,
+ 0x258104,
+ 0x2127c3,
+ 0x21f483,
+ 0x205ec3,
+ 0x2b82,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x15aec3,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x352e83,
+ 0x3e83,
+ 0x280c3,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x36146,
+ 0x3254ca,
+ 0x344509,
+ 0x3627cb,
+ 0x362f8a,
+ 0x36d08a,
+ 0x38068b,
+ 0x39a90a,
+ 0x3a0d8a,
+ 0x3a8fca,
+ 0x3a924b,
+ 0x3c9509,
+ 0x3dc94a,
+ 0x3dd18b,
+ 0x3ea14b,
+ 0x3ef7ca,
+ 0x35c2,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x344b,
+ 0x1217c7,
+ 0x6f7c8,
+ 0x1ec284,
+ 0x1e6644,
+ 0x9dac8,
+ 0xf3f86,
+ 0x56c6,
+ 0x11df87,
+ 0x120287,
+ 0xf0c9,
+ 0x7ffc8,
+ 0x229f43,
+ 0x15a44,
+ 0x2762c4,
+ 0x202182,
+ 0x222d84,
+ 0x3734c5,
+ 0x2030c3,
+ 0x29f804,
+ 0x229f43,
+ 0x241284,
+ 0x224d03,
+ 0x25b9c4,
+ 0x2ef2c4,
+ 0x258104,
+ 0x2335c3,
+ 0x2127c3,
+ 0x21f483,
+ 0x28a685,
+ 0x2043c3,
+ 0x202783,
+ 0x21cb03,
+ 0x24a3c4,
+ 0x325d84,
+ 0x22cc85,
+ 0x7ffc8,
+ 0x20b904,
+ 0x3d1606,
+ 0x373104,
+ 0x205842,
+ 0x2efc87,
+ 0x253087,
+ 0x259344,
+ 0x2f4d05,
+ 0x37bf05,
+ 0x235c45,
+ 0x258104,
+ 0x26c048,
+ 0x260ec6,
+ 0x35a148,
+ 0x358fc5,
+ 0x2f7305,
+ 0x277a44,
+ 0x21f483,
+ 0x305744,
+ 0x37f506,
+ 0x216f03,
+ 0x24a3c4,
+ 0x268285,
+ 0x34a6c4,
+ 0x2affc4,
+ 0x208ec2,
+ 0x24fd46,
+ 0x3bc546,
+ 0x313dc5,
0x2000c2,
- 0x253c43,
- 0xedc46,
- 0x3b616542,
- 0x231d44,
- 0x63dc5,
+ 0x258843,
+ 0xf4106,
+ 0x3ba05842,
+ 0x22f904,
+ 0x197604,
+ 0x68585,
0x200382,
- 0x216443,
- 0x2a9542,
- 0x2296c3,
+ 0x219c03,
+ 0x205582,
+ 0x2127c3,
0x2003c2,
- 0x301a46,
- 0x202b03,
- 0x1da785,
- 0x201643,
- 0x793c8,
- 0x793c8,
- 0x343b43,
- 0x7ca83,
+ 0x301946,
+ 0x217083,
+ 0x1e4bc5,
+ 0x205ec3,
+ 0x7ffc8,
+ 0x7ffc8,
+ 0x2e9c43,
+ 0x81983,
0x2000c2,
- 0x3c216542,
- 0x343b43,
- 0x274c43,
- 0x34b203,
- 0x2093c4,
- 0x2296c3,
- 0x20cb83,
- 0x793c8,
+ 0x3c605842,
+ 0x2e9c43,
+ 0x27ad43,
+ 0x3ce883,
+ 0x235204,
+ 0x2127c3,
+ 0x21f483,
+ 0x7ffc8,
+ 0x3df87,
0x2000c2,
- 0x3ca16542,
- 0x216543,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
+ 0x3ce05842,
+ 0x229f43,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
0x682,
- 0x2091c2,
- 0x22a042,
- 0x21b283,
- 0x2faf43,
+ 0x210702,
+ 0x26ca02,
+ 0x2280c3,
+ 0x2fe343,
0x2000c2,
- 0x146c05,
- 0x793c8,
- 0xb46c7,
- 0x216542,
- 0x222bc3,
- 0x256d44,
- 0x204f03,
- 0x343b43,
- 0x20e443,
- 0x216443,
- 0x2296c3,
- 0x20b243,
- 0x20cb83,
- 0x23d343,
- 0x1643,
- 0x13ff13,
- 0x142f14,
- 0x146c05,
- 0xb46c7,
- 0x1e489,
- 0x1e1e06,
- 0x19108b,
- 0x32f46,
- 0x60ac7,
- 0x145246,
+ 0x145d45,
+ 0x7ffc8,
+ 0xf1a47,
+ 0x205842,
+ 0x224d03,
+ 0x25b9c4,
+ 0x204b03,
+ 0x2e9c43,
+ 0x204203,
+ 0x219c03,
+ 0x2127c3,
+ 0x21c043,
+ 0x21f483,
+ 0x216e43,
+ 0x5ec3,
+ 0x13fe13,
+ 0x142054,
+ 0x145d45,
+ 0xf1a47,
+ 0x16249,
+ 0x114786,
+ 0x12efcb,
+ 0x332c6,
+ 0x64d47,
+ 0x162e06,
0x649,
- 0x15d3ca,
- 0x9560d,
- 0x1b60cc,
- 0x119cca,
- 0x46688,
- 0x10f7c5,
- 0x1e4c8,
- 0x30846,
- 0x1d1806,
- 0x13906,
- 0x602,
- 0x213242,
- 0x15cb84,
- 0x1d4b06,
- 0x1255d0,
- 0x14dbf0e,
- 0x1a1146,
- 0x41dcc,
- 0x3e37cd0b,
- 0x146c05,
- 0x152c0b,
- 0x3e7d1744,
- 0x1c0f87,
- 0x2c191,
- 0x12140a,
- 0x216543,
- 0x3ea8ad08,
- 0x73605,
- 0x89288,
- 0x2a2c4,
- 0x62e85,
- 0x3ec0b186,
- 0x1bc60b,
- 0xc3d86,
- 0x72206,
- 0x9a6ca,
- 0x16c5cc,
- 0x1c2003,
- 0x1db944,
- 0x3f218004,
- 0x5c549,
- 0x192e07,
- 0xac00a,
- 0x14df889,
+ 0x78e0a,
+ 0x9a6cd,
+ 0x1b640c,
+ 0x1176ca,
+ 0x191648,
+ 0xcab05,
+ 0x16288,
+ 0x18a46,
+ 0x1d1ac6,
+ 0x5b646,
+ 0x206cc2,
+ 0x71e44,
+ 0xfbbc6,
+ 0x14e1f4e,
+ 0x23c6,
+ 0x7804c,
+ 0x3e382a4b,
+ 0x145d45,
+ 0x149a8b,
+ 0x3e7b5347,
+ 0x3ebb534a,
+ 0x3efd4ec4,
+ 0x1c3207,
+ 0x2a691,
+ 0x12130a,
+ 0x229f43,
+ 0x3f290b08,
+ 0x1d5ac5,
+ 0x19f508,
+ 0x2ba44,
+ 0x67585,
+ 0xb0d07,
+ 0x3f5d14c6,
+ 0xe184b,
+ 0x3fb84209,
+ 0x15345,
+ 0x17ac86,
+ 0x11c306,
+ 0xa160a,
+ 0x9e80c,
+ 0x1c5983,
+ 0x1e6644,
+ 0x3ffeba44,
+ 0x60209,
+ 0x10b707,
+ 0x10e60a,
+ 0x14e5649,
0x605,
- 0xb6803,
- 0x3f63d487,
- 0x149f05,
- 0x1565b86,
- 0x157ac46,
- 0x3fb92f4f,
- 0xb800c,
- 0x107588,
- 0x3fc473c3,
- 0x10a3c4,
- 0xfe88b,
- 0x1d694b,
- 0x4025240c,
- 0x14110c3,
- 0xcddc8,
- 0xfeb05,
- 0xca909,
- 0xeb643,
- 0x12f7c8,
- 0x1426246,
- 0x95c87,
- 0x4074c6c9,
- 0x41a7a6c8,
- 0x9dc07,
- 0xcf9ca,
- 0x41fc9408,
- 0x11884d,
- 0x12248,
- 0x9983,
- 0x146a249,
- 0x14c203,
- 0x32f46,
- 0xe91c8,
- 0x1a704,
- 0x1d8645,
- 0xfea83,
- 0x1497d03,
- 0x20a87,
- 0x40a20a83,
- 0x40fc2486,
- 0x41240644,
- 0x4170ba87,
- 0xe91c4,
- 0xe91c4,
- 0xe91c4,
- 0xe91c4,
- 0x3ec5,
- 0x1a18c8,
- 0x148209,
+ 0x118683,
+ 0x4023fcc7,
+ 0x8e345,
+ 0x1569f86,
+ 0x14b89c6,
+ 0xbd00c,
+ 0x1074c8,
+ 0x40448dc3,
+ 0x10be44,
+ 0x18ef4b,
+ 0x2178b,
+ 0x40b3f1cc,
+ 0x1418303,
+ 0xd2cc8,
+ 0xce2cb,
+ 0xb0bc9,
+ 0xd7743,
+ 0x11bf88,
+ 0x1425d06,
+ 0x98307,
+ 0x40f5d489,
+ 0x422eb088,
+ 0xa3b47,
+ 0xfc18a,
+ 0x42763748,
+ 0x11628d,
+ 0x1c7e49,
+ 0x11448,
+ 0x2043,
+ 0x1455349,
+ 0x212c4,
+ 0x14c945,
+ 0x2d143,
+ 0x332c6,
+ 0xf7548,
+ 0x1403842,
+ 0x18944,
+ 0x2b405,
+ 0x149c3c3,
+ 0x2d907,
+ 0x41205483,
+ 0x41771a06,
+ 0x41a44084,
+ 0x41f73a47,
+ 0xf7544,
+ 0xf7544,
+ 0xf7544,
+ 0xf7544,
+ 0x2cc9,
0x41,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
0x2000c2,
- 0x216542,
- 0x343b43,
- 0x2042c2,
- 0x2296c3,
- 0x20cb83,
- 0x202b03,
- 0x3835cf,
- 0x38398e,
- 0x793c8,
- 0x216543,
- 0x4e6c7,
- 0x222bc3,
- 0x343b43,
- 0x243543,
- 0x2296c3,
- 0x20cb83,
- 0x1a1084,
- 0x12dcc4,
- 0x9c04,
- 0x224503,
- 0x3a2347,
- 0x202302,
- 0x277c09,
+ 0x205842,
+ 0x2e9c43,
+ 0x203842,
+ 0x2127c3,
+ 0x21f483,
+ 0x217083,
+ 0x38e28f,
+ 0x38e64e,
+ 0x7ffc8,
+ 0x229f43,
+ 0x50a07,
+ 0x224d03,
+ 0x2e9c43,
+ 0x25e043,
+ 0x2127c3,
+ 0x21f483,
+ 0x2304,
+ 0x1604,
+ 0xa9c4,
+ 0x225543,
+ 0x373d07,
+ 0x205b42,
+ 0x27c049,
0x200ac2,
- 0x3a714b,
- 0x2e808a,
- 0x2ec409,
+ 0x38fe4b,
+ 0x2b038a,
+ 0x2e9f09,
0x200542,
- 0x22a686,
- 0x256255,
- 0x3a7295,
- 0x259fd3,
- 0x3a7813,
- 0x22d0c2,
- 0x22d0c5,
- 0x363e0c,
- 0x27ff8b,
- 0x281405,
- 0x202cc2,
- 0x30a8c2,
- 0x37ed06,
- 0x203b42,
- 0x2d4b06,
- 0x21df0d,
- 0x349c8c,
- 0x3c4c44,
+ 0x22be06,
+ 0x3a0355,
+ 0x38ff95,
+ 0x25ab13,
+ 0x390513,
+ 0x20b602,
+ 0x20b605,
+ 0x20b60c,
+ 0x2833cb,
+ 0x251605,
+ 0x201182,
+ 0x30c842,
+ 0x36e406,
+ 0x200ec2,
+ 0x2da306,
+ 0x215ccd,
+ 0x2ca88c,
+ 0x3c8c84,
0x200882,
- 0x205242,
- 0x27c0c8,
+ 0x204e42,
+ 0x26a508,
0x200202,
- 0x32dd86,
- 0x39a18f,
- 0x32dd90,
- 0x3abc44,
- 0x256415,
- 0x25a153,
- 0x20a883,
- 0x3630ca,
- 0x211d47,
- 0x39f1c9,
- 0x3129c7,
- 0x328c42,
+ 0x2016c6,
+ 0x3a2fcf,
+ 0x2016d0,
+ 0x23a404,
+ 0x3a0515,
+ 0x25ac93,
+ 0x21e943,
+ 0x3541ca,
+ 0x392747,
+ 0x397ec9,
+ 0x30e4c7,
+ 0x327082,
0x200282,
- 0x3cb7c6,
- 0x207dc2,
- 0x793c8,
- 0x202502,
- 0x20bd42,
- 0x212e47,
- 0x38d507,
- 0x38d511,
- 0x221a05,
- 0x221a0e,
- 0x22204f,
- 0x204242,
- 0x2f1c07,
- 0x224b48,
- 0x2016c2,
- 0x2295c2,
- 0x227406,
- 0x22740f,
- 0x23ff50,
- 0x237242,
- 0x204182,
- 0x336588,
- 0x210903,
- 0x2920c8,
- 0x2cb30d,
- 0x204183,
- 0x3a04c8,
- 0x28e48f,
- 0x28e84e,
- 0x316b8a,
- 0x3b3ed1,
- 0x3b4350,
- 0x21b9cd,
- 0x21bd0c,
- 0x386987,
- 0x363247,
- 0x379b89,
- 0x20cd02,
- 0x202402,
- 0x26274c,
- 0x262a4b,
- 0x200d42,
- 0x2d8306,
- 0x20c602,
+ 0x3ceec6,
+ 0x2045c2,
+ 0x7ffc8,
+ 0x20a182,
+ 0x202a02,
+ 0x211907,
+ 0x398247,
+ 0x398251,
+ 0x2223c5,
+ 0x2223ce,
+ 0x22284f,
+ 0x2037c2,
+ 0x30ef87,
+ 0x225588,
+ 0x205f42,
+ 0x2272c2,
+ 0x212306,
+ 0x21230f,
+ 0x242910,
+ 0x232382,
+ 0x203702,
+ 0x2efdc8,
+ 0x207243,
+ 0x297948,
+ 0x2bbfcd,
+ 0x203703,
+ 0x3d3bc8,
+ 0x293e0f,
+ 0x2941ce,
+ 0x3e198a,
+ 0x2ee1d1,
+ 0x2ee650,
+ 0x22320d,
+ 0x22354c,
+ 0x3c5a07,
+ 0x354347,
+ 0x372049,
+ 0x21e742,
+ 0x202542,
+ 0x266e4c,
+ 0x26714b,
+ 0x202102,
+ 0x2db7c6,
+ 0x212fc2,
0x200482,
- 0x22e702,
- 0x216542,
- 0x3dbec4,
- 0x241787,
- 0x213b02,
- 0x248d87,
- 0x24a7c7,
- 0x215a42,
- 0x219d82,
- 0x24e585,
- 0x20c542,
- 0x250e0e,
- 0x39654d,
- 0x222bc3,
- 0x243c8e,
- 0x2c764d,
- 0x3c4143,
- 0x2026c2,
- 0x2730c4,
- 0x2b3802,
- 0x213642,
- 0x3a6a05,
- 0x3acc07,
- 0x250d02,
- 0x218242,
- 0x256947,
- 0x25c8c8,
- 0x25c082,
- 0x29a986,
- 0x2625cc,
- 0x26290b,
- 0x20eb02,
- 0x26c34f,
- 0x26c710,
- 0x26cb0f,
- 0x26ced5,
- 0x26d414,
- 0x26d90e,
- 0x26dc8e,
- 0x26e00f,
- 0x26e3ce,
- 0x26e754,
- 0x26ec53,
- 0x26f10d,
- 0x2817c9,
- 0x2975c3,
- 0x204342,
- 0x322205,
- 0x204f06,
+ 0x2b90c2,
+ 0x205842,
+ 0x235644,
+ 0x2456c7,
+ 0x20f1c2,
+ 0x24adc7,
+ 0x24d147,
+ 0x213682,
+ 0x215582,
+ 0x2508c5,
+ 0x201bc2,
+ 0x2dbd4e,
+ 0x2138cd,
+ 0x224d03,
+ 0x3b494e,
+ 0x2cda8d,
+ 0x332183,
+ 0x200d42,
+ 0x2958c4,
+ 0x29e2c2,
+ 0x220f42,
+ 0x3ac685,
+ 0x3b0dc7,
+ 0x254482,
+ 0x218b02,
+ 0x25b147,
+ 0x260588,
+ 0x262642,
+ 0x27b6c6,
+ 0x266ccc,
+ 0x26700b,
+ 0x202e42,
+ 0x27274f,
+ 0x272b10,
+ 0x272f0f,
+ 0x2732d5,
+ 0x273814,
+ 0x273d0e,
+ 0x27408e,
+ 0x27440f,
+ 0x2747ce,
+ 0x274b54,
+ 0x275053,
+ 0x27550d,
+ 0x289509,
+ 0x29be83,
+ 0x2038c2,
+ 0x35ed05,
+ 0x204b06,
0x200382,
- 0x2bfd47,
- 0x343b43,
+ 0x36dc47,
+ 0x2e9c43,
0x200642,
- 0x23e448,
- 0x3b4111,
- 0x3b4550,
- 0x202102,
- 0x296907,
- 0x202642,
- 0x25c247,
- 0x207bc2,
- 0x208309,
- 0x37ecc7,
- 0x3e5848,
- 0x20afc6,
- 0x208703,
- 0x208705,
- 0x225e82,
+ 0x3e7088,
+ 0x2ee411,
+ 0x2ee850,
+ 0x208102,
+ 0x29b207,
+ 0x203382,
+ 0x262807,
+ 0x208042,
+ 0x335309,
+ 0x36e3c7,
+ 0x28c948,
+ 0x3d1306,
+ 0x2fe243,
+ 0x39d7c5,
+ 0x22b342,
0x2004c2,
- 0x3cbbc5,
- 0x36bd85,
- 0x20b402,
- 0x237843,
- 0x352f87,
- 0x3c3c47,
- 0x203f02,
- 0x38f0c4,
- 0x271f43,
- 0x33eec9,
- 0x3c7348,
- 0x209d42,
- 0x210442,
- 0x22cac7,
- 0x231745,
- 0x20c708,
- 0x327287,
- 0x20f543,
- 0x3d4986,
- 0x21b84d,
- 0x21bbcc,
- 0x223046,
- 0x204202,
- 0x31de42,
- 0x201582,
- 0x28e30f,
- 0x28e70e,
- 0x372307,
- 0x202042,
- 0x3d2185,
- 0x3d2186,
- 0x228882,
- 0x200bc2,
- 0x298346,
- 0x210783,
- 0x3c2c46,
- 0x2dd585,
- 0x2dd58d,
- 0x2de195,
- 0x2ded4c,
- 0x2df0cd,
- 0x2df412,
- 0x203742,
- 0x277782,
- 0x202802,
- 0x3437c6,
- 0x20e586,
- 0x43296084,
- 0x201cc2,
- 0x204f86,
- 0x201102,
- 0x3a2b45,
+ 0x208a85,
+ 0x367d45,
+ 0x204442,
+ 0x25c083,
+ 0x349e07,
+ 0x3d1887,
+ 0x202d02,
+ 0x39a304,
+ 0x20d003,
+ 0x3d1d49,
+ 0x3db288,
+ 0x20b982,
+ 0x20fd02,
+ 0x243e47,
+ 0x2f04c5,
+ 0x237e48,
+ 0x350847,
+ 0x20e983,
+ 0x2fba46,
+ 0x22308d,
+ 0x22340c,
+ 0x39f706,
+ 0x203782,
+ 0x202c82,
+ 0x2026c2,
+ 0x293c8f,
+ 0x29408e,
+ 0x37bf87,
0x205c02,
- 0x250f49,
- 0x22d58c,
- 0x22d8cb,
+ 0x219c05,
+ 0x219c06,
+ 0x21dfc2,
+ 0x20dec2,
+ 0x29cb06,
+ 0x210043,
+ 0x347146,
+ 0x2e34c5,
+ 0x2e34cd,
+ 0x2e3a55,
+ 0x2e4b0c,
+ 0x2e4e8d,
+ 0x2e51d2,
+ 0x20f782,
+ 0x27eec2,
+ 0x204342,
+ 0x217506,
+ 0x204346,
+ 0x43a8bec4,
+ 0x201242,
+ 0x204b86,
+ 0x214542,
+ 0x3d8045,
+ 0x202a42,
+ 0x2139c9,
+ 0x23388c,
+ 0x233bcb,
0x2003c2,
- 0x25e3c8,
- 0x211c02,
+ 0x261708,
+ 0x20df02,
0x200a82,
- 0x27de46,
- 0x266005,
- 0x200a87,
- 0x2fca45,
- 0x2824c5,
- 0x23d7c2,
- 0x21e582,
- 0x208402,
- 0x29f107,
- 0x301b0d,
- 0x301e8c,
- 0x25d707,
- 0x29a902,
- 0x219d02,
- 0x3e8008,
- 0x38ff08,
- 0x2e5e08,
- 0x3bc204,
- 0x342ac7,
- 0x363b83,
- 0x206bc2,
- 0x203482,
- 0x302889,
- 0x233347,
- 0x2037c2,
- 0x27e245,
- 0x24cec2,
- 0x204682,
- 0x30b0c3,
- 0x30b0c6,
- 0x309602,
- 0x30a282,
+ 0x283186,
+ 0x261c45,
+ 0x393507,
+ 0x3a81c5,
+ 0x26d105,
+ 0x2020c2,
+ 0x216342,
+ 0x20f102,
+ 0x2a10c7,
+ 0x301a0d,
+ 0x301d8c,
+ 0x24efc7,
+ 0x22e6c2,
+ 0x215502,
+ 0x3cf0c8,
+ 0x34a8c8,
+ 0x34d908,
+ 0x3c0384,
+ 0x2dc887,
+ 0x2ff703,
+ 0x253ac2,
+ 0x2043c2,
+ 0x302609,
+ 0x2336c7,
+ 0x202782,
+ 0x2837c5,
+ 0x285042,
+ 0x20e0c2,
+ 0x3095c3,
+ 0x3095c6,
+ 0x309742,
+ 0x30bd02,
0x200402,
- 0x2abc86,
- 0x273007,
- 0x213582,
+ 0x3bd706,
+ 0x34ed07,
+ 0x21e202,
0x200902,
- 0x291f0f,
- 0x243acd,
- 0x39e2ce,
- 0x2c74cc,
- 0x20cbc2,
- 0x202a82,
- 0x20ae05,
- 0x324106,
- 0x200b82,
- 0x205d42,
+ 0x29778f,
+ 0x3b478d,
+ 0x38c84e,
+ 0x2cd90c,
+ 0x20a602,
+ 0x203342,
+ 0x3d1145,
+ 0x323f46,
+ 0x202682,
+ 0x206902,
0x200682,
- 0x243e44,
- 0x2c4b44,
- 0x36c186,
- 0x201ec2,
- 0x292d47,
- 0x23f643,
- 0x23f648,
- 0x2408c8,
- 0x24ad47,
- 0x251646,
- 0x204ac2,
- 0x2118c3,
- 0x2118c7,
- 0x28a6c6,
- 0x2ed245,
- 0x27f908,
- 0x202d82,
- 0x35b4c7,
- 0x203782,
- 0x352902,
- 0x204102,
- 0x2221c9,
- 0x24b302,
- 0x14448,
- 0x201b82,
- 0x25d983,
- 0x32e887,
- 0x200f02,
- 0x22d70c,
- 0x22da0b,
- 0x2abf06,
- 0x223e85,
- 0x43609d83,
- 0x22bdc2,
- 0x202a02,
- 0x2cf7c6,
- 0x209003,
- 0x363447,
- 0x211482,
+ 0x2cdc04,
+ 0x2bbe44,
+ 0x358906,
+ 0x201782,
+ 0x28e207,
+ 0x248883,
+ 0x248888,
+ 0x2496c8,
+ 0x256887,
+ 0x3ab886,
+ 0x205f82,
+ 0x212f43,
+ 0x212f47,
+ 0x282d06,
+ 0x2d8485,
+ 0x285348,
+ 0x204942,
+ 0x38a4c7,
+ 0x207802,
+ 0x29ec82,
+ 0x203682,
+ 0x201889,
+ 0x2088c2,
+ 0x14cc8,
+ 0x200e02,
+ 0x2aa083,
+ 0x200e87,
+ 0x202602,
+ 0x233a0c,
+ 0x233d0b,
+ 0x39f786,
+ 0x20e385,
+ 0x43e27303,
+ 0x201c82,
+ 0x200fc2,
+ 0x2d5146,
+ 0x243783,
+ 0x354547,
+ 0x26d0c2,
0x2008c2,
- 0x2560d5,
- 0x3a7455,
- 0x259e93,
- 0x3a7993,
- 0x279587,
- 0x294d91,
- 0x2f9010,
- 0x2a27d2,
- 0x2a7411,
- 0x2aae48,
- 0x2aae50,
- 0x372f4f,
- 0x3a5e53,
- 0x3abf92,
- 0x2c2690,
- 0x2bec4f,
- 0x2c2bd2,
- 0x2c4191,
- 0x2d73d3,
- 0x2dd112,
- 0x2e3d4f,
- 0x2e664e,
- 0x2e7e92,
- 0x2ec211,
- 0x2ed70f,
- 0x2f58ce,
- 0x2f7251,
- 0x2f8450,
- 0x2ff012,
- 0x307751,
+ 0x3a01d5,
+ 0x390155,
+ 0x25a9d3,
+ 0x390693,
+ 0x277487,
+ 0x287591,
+ 0x288f50,
+ 0x296b12,
+ 0x299e51,
+ 0x2ac948,
+ 0x3b9dd0,
+ 0x2ac94f,
+ 0x2b0153,
+ 0x37b092,
+ 0x39b750,
+ 0x2c2acf,
+ 0x2c6152,
+ 0x2c7851,
+ 0x2c8dd3,
+ 0x2ccf12,
+ 0x2d498f,
+ 0x2e314e,
+ 0x2e4692,
+ 0x2e9d11,
+ 0x2ea3cf,
+ 0x2ed08e,
+ 0x2ed891,
+ 0x2f2810,
+ 0x2f3b12,
+ 0x2f6c51,
+ 0x2fda90,
+ 0x3064cf,
+ 0x307691,
0x309ad0,
- 0x30b50f,
- 0x366211,
- 0x355510,
- 0x37f0c6,
- 0x31e787,
- 0x234ac7,
- 0x201c02,
- 0x28ce85,
- 0x313507,
- 0x22a042,
- 0x203f82,
- 0x3d0545,
- 0x228183,
- 0x35c606,
- 0x301ccd,
- 0x30200c,
- 0x205002,
- 0x363c8b,
- 0x27fe4a,
- 0x22cf8a,
- 0x2ceb09,
- 0x300a8b,
- 0x3273cd,
- 0x313c0c,
- 0x2477ca,
- 0x24ec8c,
- 0x27aa4b,
- 0x28124c,
- 0x28418e,
- 0x2a0b0b,
- 0x2eafcc,
- 0x2f3103,
- 0x2ef706,
- 0x3c9402,
- 0x308542,
- 0x2651c3,
- 0x2017c2,
- 0x23d203,
- 0x351d46,
- 0x26d087,
- 0x2e2846,
- 0x3aad48,
- 0x352e08,
- 0x306d06,
- 0x208e42,
- 0x31594d,
- 0x315c8c,
- 0x3d6b07,
- 0x319b07,
- 0x221e02,
- 0x21f8c2,
- 0x211842,
- 0x289c82,
- 0x3377d6,
- 0x33c555,
- 0x33f9d6,
- 0x344113,
- 0x3447d2,
- 0x356dd3,
- 0x357512,
- 0x3b7ccf,
- 0x3c6b58,
- 0x3c8ed7,
- 0x3c98d9,
- 0x3cb218,
- 0x3cbdd8,
- 0x3cccd7,
- 0x3ced97,
- 0x3d1216,
- 0x3d6013,
- 0x3d6f55,
- 0x3d77d2,
- 0x3d7c53,
- 0x30182,
- 0x43a13a04,
- 0x43fc4b88,
- 0x3ec5,
- 0x216542,
- 0x2296c3,
- 0x386c2,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x202b03,
+ 0x30c9c6,
+ 0x30d987,
+ 0x311047,
+ 0x205dc2,
+ 0x292805,
+ 0x3dec07,
+ 0x26ca02,
+ 0x202d82,
+ 0x3cbe45,
+ 0x20a503,
+ 0x2718c6,
+ 0x301bcd,
+ 0x301f0c,
+ 0x204c02,
+ 0x20b48b,
+ 0x28328a,
+ 0x286d8a,
+ 0x227549,
+ 0x2d3d0b,
+ 0x300ccd,
+ 0x35098c,
+ 0x312e0a,
+ 0x36ee0c,
+ 0x3d4f8b,
+ 0x25144c,
+ 0x2813ce,
+ 0x28818b,
+ 0x2a724c,
+ 0x2ecd03,
+ 0x352f06,
+ 0x363742,
+ 0x308602,
+ 0x25f183,
+ 0x208602,
+ 0x23fa43,
+ 0x2d6ec6,
+ 0x273487,
+ 0x2d9706,
+ 0x3aefc8,
+ 0x349c88,
+ 0x321a86,
+ 0x212182,
+ 0x31378d,
+ 0x313acc,
+ 0x221947,
+ 0x317507,
+ 0x228282,
+ 0x21f182,
+ 0x212ec2,
+ 0x28f8c2,
+ 0x337216,
+ 0x33c315,
+ 0x33f8d6,
+ 0x3435d3,
+ 0x343c92,
+ 0x356513,
+ 0x3573d2,
+ 0x3bb24f,
+ 0x3caad8,
+ 0x3ce957,
+ 0x3cfb99,
+ 0x3d3318,
+ 0x3d3dd8,
+ 0x3d4957,
+ 0x3d8357,
+ 0x3d91d6,
+ 0x3df613,
+ 0x3dff95,
+ 0x3e0952,
+ 0x3e0dd3,
+ 0x1e702,
+ 0x4420f0c4,
+ 0x447c8bc8,
+ 0x2cc5,
+ 0x205842,
+ 0x2127c3,
+ 0x47f42,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x217083,
0x2000c2,
- 0x2070c2,
- 0x44e9bcc5,
- 0x4529b285,
- 0x4567ad86,
- 0x793c8,
- 0x45ac3205,
- 0x216542,
- 0x2104c2,
- 0x45f336c5,
- 0x4628b685,
- 0x4668c587,
- 0x46a93f89,
- 0x46e1eb44,
+ 0x202ac2,
+ 0x456a2d45,
+ 0x45a3d685,
+ 0x45f6f186,
+ 0x7ffc8,
+ 0x462c9445,
+ 0x205842,
+ 0x201902,
+ 0x46730c85,
+ 0x46a91485,
+ 0x46e91f07,
+ 0x47358c49,
+ 0x4761d684,
0x200382,
0x200642,
- 0x4725a945,
- 0x4769b3c9,
- 0x47b36dc8,
- 0x47ebb2c5,
- 0x4834ff07,
- 0x4861cf88,
- 0x48b18f85,
- 0x48e21486,
- 0x4924b649,
- 0x496f9ec8,
- 0x49ad5408,
- 0x49ea4e8a,
- 0x4a387144,
- 0x4a6b2605,
- 0x4aad1108,
- 0x4ae876c5,
- 0x21ab82,
- 0x4b2e3303,
- 0x4b6aff46,
- 0x4bba9148,
- 0x4bf53fc6,
- 0x4c273148,
- 0x4c7da086,
- 0x4ca4fb84,
- 0x4ce04cc2,
- 0x4d6e2c47,
- 0x4dab7d44,
- 0x4de85287,
- 0x4e3e3047,
+ 0x47a5c245,
+ 0x47ea2689,
+ 0x4836cc48,
+ 0x486c19c5,
+ 0x48b51107,
+ 0x48e1b008,
+ 0x4930d585,
+ 0x49623f46,
+ 0x49a531c9,
+ 0x49f7fbc8,
+ 0x4a2db448,
+ 0x4a6aa18a,
+ 0x4aa39104,
+ 0x4ae9cdc5,
+ 0x4b2b4708,
+ 0x4b654b45,
+ 0x21c142,
+ 0x4ba089c3,
+ 0x4beb4ec6,
+ 0x4c328ec8,
+ 0x4c746546,
+ 0x4cb4ee48,
+ 0x4cfb6006,
+ 0x4d3854c4,
+ 0x4d6048c2,
+ 0x4dee9287,
+ 0x4e2bcd44,
+ 0x4e68d7c7,
+ 0x4ebe8dc7,
0x2003c2,
- 0x4e6a8485,
- 0x4ea7fa84,
- 0x4efafd07,
- 0x4f23cc07,
- 0x4f690046,
- 0x4fa8c145,
- 0x4fea2f07,
- 0x502cdf88,
- 0x507e33c7,
- 0x50abb909,
- 0x50ee3405,
- 0x5131f287,
- 0x5169b0c6,
- 0x2780b,
- 0x51a2e2c8,
- 0x230c4d,
- 0x271d09,
- 0x27f48b,
- 0x29868b,
- 0x2b744b,
- 0x2d24cb,
- 0x32430b,
- 0x3245cb,
- 0x324a89,
- 0x325f8b,
- 0x32624b,
- 0x3283cb,
- 0x328fca,
- 0x32950a,
- 0x329b0c,
- 0x32fecb,
- 0x33040a,
- 0x34218a,
- 0x34c2ce,
- 0x34d44e,
- 0x34d7ca,
- 0x34f78a,
- 0x35044b,
- 0x35070b,
- 0x35120b,
- 0x36e7cb,
- 0x36edca,
- 0x36fa8b,
- 0x36fd4a,
- 0x36ffca,
- 0x37024a,
- 0x391a8b,
- 0x39944b,
- 0x39bc0e,
- 0x39bf8b,
- 0x3a7e4b,
- 0x3a9ecb,
- 0x3ada8a,
- 0x3add09,
- 0x3adf4a,
- 0x3afa0a,
- 0x3c654b,
- 0x3d3d8b,
- 0x3d4f4a,
- 0x3d5a4b,
- 0x3dbc4b,
- 0x3e8b8b,
- 0x51e8d908,
- 0x522946c9,
- 0x526ab689,
- 0x52af0788,
- 0x359645,
- 0x20dec3,
- 0x25cd84,
- 0x2cbb05,
- 0x21e886,
- 0x221205,
- 0x293a44,
- 0x2bfc48,
- 0x31fc85,
- 0x29d144,
- 0x20d007,
- 0x2aa84a,
- 0x24104a,
- 0x372407,
- 0x3a9307,
- 0x2ec787,
- 0x291247,
- 0x313305,
- 0x219686,
- 0x372c47,
- 0x35a804,
- 0x2c9046,
- 0x3dc846,
- 0x203345,
- 0x333144,
- 0x2a80c6,
- 0x2a9a07,
- 0x22fa86,
- 0x2b6407,
- 0x23e343,
- 0x39f546,
- 0x3367c5,
- 0x28c687,
- 0x27588a,
- 0x23e544,
- 0x21ad88,
- 0x2ba709,
- 0x2c9607,
- 0x3c6006,
- 0x267608,
- 0x37ae89,
- 0x39f384,
- 0x322584,
- 0x30c2c5,
- 0x21b448,
- 0x2dbb47,
- 0x30a449,
- 0x3d8f48,
- 0x31b5c6,
- 0x361b46,
- 0x2a5ac8,
- 0x36d846,
- 0x29b285,
- 0x290106,
- 0x285988,
- 0x28e206,
- 0x261acb,
- 0x38a106,
- 0x2a6f8d,
- 0x20d485,
- 0x2b7c06,
- 0x21d045,
- 0x3c8609,
- 0x2e4747,
- 0x3d2008,
- 0x3c4f86,
- 0x2a6209,
- 0x2c48c6,
- 0x275805,
- 0x216b86,
- 0x2d7cc6,
- 0x2e02c9,
- 0x2cc886,
- 0x31d5c7,
- 0x2dec05,
- 0x20c043,
- 0x261c45,
- 0x2bc687,
- 0x3640c6,
- 0x20d389,
- 0x27ad86,
- 0x285486,
- 0x226a89,
- 0x28fb09,
- 0x2aea87,
- 0x201dc8,
- 0x29f949,
- 0x28cb08,
- 0x3e5e06,
- 0x2e8945,
- 0x2834ca,
- 0x285506,
- 0x3cfc86,
- 0x2e2b85,
- 0x25ec08,
- 0x358d07,
- 0x239a8a,
- 0x257686,
- 0x303885,
- 0x30aa86,
- 0x2048c7,
- 0x3c5ec7,
- 0x2ac545,
- 0x2759c5,
- 0x23fdc6,
- 0x36a446,
- 0x269f46,
- 0x2d15c4,
- 0x28ebc9,
- 0x2966c6,
- 0x3097ca,
- 0x232148,
- 0x31ef88,
- 0x24104a,
- 0x2421c5,
- 0x2a9945,
- 0x3def48,
- 0x2ce108,
- 0x23ae87,
- 0x288686,
- 0x33a388,
- 0x20b607,
- 0x28d208,
- 0x2ca506,
- 0x290f08,
- 0x2a1dc6,
- 0x287287,
- 0x29ea46,
- 0x2a80c6,
- 0x2313ca,
- 0x3dbf46,
- 0x2e8949,
- 0x2abb86,
- 0x212f8a,
- 0x24fb89,
- 0x3024c6,
- 0x2cd844,
- 0x3222cd,
- 0x28b4c7,
- 0x39fe06,
- 0x2d52c5,
- 0x2c4945,
- 0x394246,
- 0x2ae109,
- 0x369787,
- 0x286386,
- 0x393386,
- 0x293ac9,
- 0x2e37c4,
- 0x3025c4,
- 0x30f188,
- 0x2fbec6,
- 0x2adc88,
- 0x216b08,
- 0x260507,
- 0x30e2c9,
- 0x347a47,
- 0x2c30ca,
- 0x30334f,
- 0x2396ca,
- 0x20ac05,
- 0x285bc5,
- 0x216945,
- 0x3cd547,
- 0x204483,
- 0x201fc8,
- 0x2f6086,
- 0x2f6189,
- 0x2f5f86,
- 0x2e0c87,
- 0x2a5fc9,
- 0x3d1f08,
- 0x3c87c7,
- 0x322d43,
- 0x3596c5,
- 0x204405,
- 0x2d140b,
- 0x287784,
- 0x300084,
- 0x282c86,
- 0x322f07,
- 0x3947ca,
- 0x3b0887,
- 0x29bf07,
- 0x28b685,
- 0x3de685,
- 0x2934c9,
- 0x2a80c6,
- 0x3b070d,
- 0x354745,
- 0x2c7183,
- 0x20dac3,
- 0x258b05,
- 0x33ac85,
- 0x267608,
- 0x286cc7,
- 0x245246,
- 0x2ab306,
- 0x235745,
- 0x23c847,
- 0x3e4107,
- 0x25d0c7,
- 0x2b268a,
- 0x39f608,
- 0x2d15c4,
- 0x28df87,
- 0x28a847,
- 0x35df46,
- 0x2a1447,
- 0x2ea808,
- 0x35d588,
- 0x27a306,
- 0x3a9548,
- 0x2cc904,
- 0x372c46,
- 0x266286,
- 0x246046,
- 0x2025c6,
- 0x214ac4,
- 0x291306,
- 0x2d3e46,
- 0x2a5386,
- 0x224006,
- 0x20d986,
- 0x2ea646,
- 0x245148,
- 0x2c6648,
- 0x2e5688,
- 0x221408,
- 0x3deec6,
- 0x20f1c5,
- 0x27b9c6,
- 0x2bb345,
- 0x397087,
- 0x246005,
- 0x217943,
- 0x26a545,
- 0x23b844,
- 0x20dac5,
- 0x223a03,
- 0x2c4707,
- 0x3aa1c8,
- 0x2b64c6,
- 0x2d630d,
- 0x285b86,
- 0x2a4905,
- 0x2221c3,
- 0x2d0ac9,
- 0x2e3946,
- 0x2a34c6,
- 0x29c484,
- 0x239647,
- 0x2f43c6,
- 0x303ac5,
- 0x244243,
- 0x211184,
- 0x28aa06,
- 0x219784,
- 0x3c11c8,
- 0x2064c9,
- 0x369d09,
- 0x2ada8a,
- 0x2495cd,
- 0x23e8c7,
- 0x206986,
- 0x21e5c4,
- 0x293f89,
- 0x2924c8,
- 0x294546,
- 0x242b06,
- 0x2a1447,
- 0x2c3b06,
- 0x223686,
- 0x3d0c06,
- 0x3e30ca,
- 0x21cf88,
- 0x234885,
- 0x245749,
- 0x270b0a,
- 0x33b008,
- 0x2a8cc8,
- 0x2a3448,
- 0x3e450c,
- 0x3996c5,
- 0x2ab588,
- 0x2ca006,
- 0x29dac6,
- 0x2dab47,
- 0x3b0785,
- 0x290285,
- 0x369bc9,
- 0x210b07,
- 0x2f6145,
- 0x2286c7,
- 0x20dac3,
- 0x2dc505,
- 0x229108,
- 0x2cc507,
- 0x2a8b89,
- 0x2e1dc5,
- 0x30a804,
- 0x31dc08,
- 0x2cb5c7,
- 0x3c8988,
- 0x22aa48,
- 0x392005,
- 0x353b46,
- 0x2ab406,
- 0x30c689,
- 0x266387,
- 0x2bbb86,
- 0x2585c7,
- 0x215103,
- 0x21eb44,
- 0x2e6fc5,
- 0x23c984,
- 0x2526c4,
- 0x28db87,
- 0x2743c7,
- 0x286544,
- 0x2a89d0,
- 0x333847,
- 0x3de685,
- 0x25084c,
- 0x22a804,
- 0x2c1108,
- 0x287189,
- 0x2be9c6,
- 0x32f908,
- 0x27a484,
- 0x282f88,
- 0x23a086,
- 0x231248,
- 0x2a93c6,
- 0x2d2d4b,
- 0x331b85,
- 0x2e6e48,
- 0x21a484,
- 0x28f78a,
- 0x2a8b89,
- 0x29e946,
- 0x21b6c8,
- 0x2657c5,
- 0x2d00c4,
- 0x2c1006,
- 0x25cf88,
- 0x28d908,
- 0x3356c6,
- 0x36c104,
- 0x283446,
- 0x347ac7,
- 0x285187,
- 0x2a144f,
- 0x346f47,
- 0x395747,
- 0x368945,
- 0x3410c5,
- 0x2ae749,
- 0x2f8c06,
- 0x28c7c5,
- 0x28fe07,
- 0x2de9c8,
- 0x219805,
- 0x29ea46,
- 0x231f88,
- 0x353fca,
- 0x32c888,
- 0x2980c7,
- 0x303786,
- 0x245706,
+ 0x4eead945,
+ 0x4f2854c4,
+ 0x4f7839c7,
+ 0x4fa48087,
+ 0x4fe95706,
+ 0x50218085,
+ 0x506a8b87,
+ 0x50ae8c88,
+ 0x50eb8c07,
+ 0x512bebc9,
+ 0x516e9a45,
+ 0x51b0fc07,
+ 0x51ea2386,
+ 0x2c68b,
+ 0x5236fc88,
+ 0x2289cd,
+ 0x284949,
+ 0x2a290b,
+ 0x2b0e8b,
+ 0x2b94cb,
+ 0x37880b,
+ 0x32414b,
+ 0x32440b,
+ 0x3248c9,
+ 0x32574b,
+ 0x325a0b,
+ 0x32680b,
+ 0x32740a,
+ 0x32794a,
+ 0x327f4c,
+ 0x32c2cb,
+ 0x32c80a,
+ 0x34144a,
+ 0x34bf0e,
+ 0x34cf0e,
+ 0x34d28a,
+ 0x34f70a,
+ 0x35164b,
+ 0x35190b,
+ 0x35240b,
+ 0x3767cb,
+ 0x376dca,
+ 0x377a8b,
+ 0x377d4a,
+ 0x377fca,
+ 0x37824a,
+ 0x39b34b,
+ 0x3a228b,
+ 0x3a548e,
+ 0x3a580b,
+ 0x3acbcb,
+ 0x3add0b,
+ 0x3b1a8a,
+ 0x3b1d09,
+ 0x3b1f4a,
+ 0x3b3e8a,
+ 0x3ca4cb,
+ 0x3dd44b,
+ 0x3de4ca,
+ 0x3df04b,
+ 0x3e694b,
+ 0x3ef20b,
+ 0x52693288,
+ 0x52a99789,
+ 0x52eb0a49,
+ 0x532f7d08,
+ 0x358685,
+ 0x20c003,
+ 0x260a44,
+ 0x34f285,
+ 0x21d3c6,
+ 0x223cc5,
+ 0x299004,
+ 0x36db48,
+ 0x31e445,
+ 0x2a46c4,
+ 0x3d5f87,
+ 0x2afb4a,
+ 0x384c8a,
+ 0x37c087,
+ 0x329087,
+ 0x2f2d47,
+ 0x25c3c7,
+ 0x207505,
+ 0x224346,
+ 0x37bb87,
+ 0x3ce084,
+ 0x2ced86,
+ 0x3048c6,
+ 0x3cf605,
+ 0x3324c4,
+ 0x2ad586,
+ 0x2aed87,
+ 0x2301c6,
+ 0x318287,
+ 0x240903,
+ 0x3c6c46,
+ 0x220b05,
+ 0x292007,
+ 0x27ba0a,
+ 0x310484,
+ 0x21a988,
+ 0x2be509,
+ 0x3c0a07,
+ 0x3c9f86,
+ 0x26c248,
+ 0x3e9149,
+ 0x310504,
+ 0x282884,
+ 0x304b45,
+ 0x222c88,
+ 0x2e1b87,
+ 0x30bec9,
+ 0x2f0e88,
+ 0x319806,
+ 0x328986,
+ 0x2aadc8,
+ 0x375846,
+ 0x23d685,
+ 0x2957c6,
+ 0x28db88,
+ 0x293b86,
+ 0x26608b,
+ 0x29eb06,
+ 0x2ac4cd,
+ 0x3da785,
+ 0x2bcc06,
+ 0x21b0c5,
+ 0x304d09,
+ 0x2d86c7,
+ 0x219a88,
+ 0x3c0746,
+ 0x2ab709,
+ 0x2ca346,
+ 0x27b985,
+ 0x219186,
+ 0x2dd006,
+ 0x2e6089,
+ 0x2d1846,
+ 0x2c8a07,
+ 0x364e85,
+ 0x202a43,
+ 0x266205,
+ 0x39ea47,
+ 0x335ac6,
+ 0x3da689,
+ 0x36f186,
+ 0x295a06,
+ 0x24b3c9,
+ 0x2951c9,
+ 0x2b3587,
+ 0x3642c8,
+ 0x29df09,
+ 0x292488,
+ 0x3ed546,
+ 0x2eec45,
+ 0x3220ca,
+ 0x295a86,
+ 0x3cb586,
+ 0x2e91c5,
+ 0x25f988,
+ 0x35b587,
+ 0x2387ca,
+ 0x25c686,
+ 0x303605,
+ 0x30c706,
+ 0x2a3407,
+ 0x3c9e47,
+ 0x30eb45,
+ 0x27bb45,
+ 0x242786,
+ 0x246246,
+ 0x255046,
+ 0x2b4bc4,
+ 0x294549,
+ 0x29afc6,
+ 0x378bca,
+ 0x22de48,
+ 0x30f908,
+ 0x384c8a,
+ 0x23c3c5,
+ 0x2aecc5,
+ 0x3d2808,
+ 0x3206c8,
+ 0x248307,
+ 0x23c286,
+ 0x339dc8,
+ 0x3d7687,
+ 0x292b88,
+ 0x2d0286,
+ 0x296488,
+ 0x2a8046,
+ 0x359147,
+ 0x245906,
+ 0x2ad586,
+ 0x243aca,
+ 0x39f886,
+ 0x2eec49,
+ 0x3bd606,
+ 0x211a4a,
+ 0x3854c9,
+ 0x240c06,
+ 0x2d2544,
+ 0x35edcd,
+ 0x2912c7,
+ 0x3c7506,
+ 0x2db305,
+ 0x2ca3c5,
+ 0x39cd86,
+ 0x2cc849,
+ 0x2dddc7,
+ 0x28ea46,
+ 0x2c9b06,
+ 0x299089,
+ 0x23d5c4,
+ 0x240d04,
+ 0x20bec8,
+ 0x35dac6,
+ 0x3dde08,
+ 0x219108,
+ 0x264787,
+ 0x3bcd49,
+ 0x3d0487,
+ 0x2c930a,
+ 0x3030cf,
+ 0x39b0ca,
+ 0x3d0f45,
+ 0x28ddc5,
+ 0x218f45,
+ 0x23a347,
+ 0x28f6c3,
+ 0x3644c8,
+ 0x236606,
+ 0x236709,
+ 0x2fc746,
+ 0x2e6a47,
+ 0x2ab4c9,
+ 0x219988,
+ 0x304ec7,
+ 0x322683,
+ 0x358705,
+ 0x2a2f45,
+ 0x2b4a0b,
+ 0x254c04,
+ 0x37a8c4,
+ 0x28b806,
+ 0x322847,
+ 0x39d30a,
+ 0x259587,
+ 0x2297c7,
+ 0x291485,
+ 0x3d9745,
+ 0x29e409,
+ 0x2ad586,
+ 0x25940d,
+ 0x346cc5,
+ 0x2b4c83,
+ 0x21df03,
+ 0x2fcac5,
+ 0x33a6c5,
+ 0x26c248,
+ 0x28f207,
+ 0x24e486,
+ 0x2b06c6,
+ 0x2316c5,
+ 0x23e987,
+ 0x331047,
+ 0x260d87,
+ 0x29ce4a,
+ 0x3c6d08,
+ 0x2b4bc4,
+ 0x293907,
+ 0x290647,
+ 0x360686,
+ 0x2a76c7,
+ 0x2f50c8,
+ 0x278fc8,
+ 0x280b46,
+ 0x3292c8,
+ 0x22ec44,
+ 0x37bb86,
+ 0x2693c6,
+ 0x38d946,
+ 0x20a246,
+ 0x2add04,
+ 0x25c486,
+ 0x2d9886,
+ 0x2aa686,
+ 0x20e506,
+ 0x3dac86,
+ 0x239a46,
+ 0x24e388,
+ 0x2cbd48,
+ 0x2ebec8,
+ 0x223ec8,
+ 0x3d2786,
+ 0x204005,
+ 0x372b86,
+ 0x2c1a45,
+ 0x32d207,
+ 0x280d85,
+ 0x215243,
+ 0x310c85,
+ 0x396884,
+ 0x3dadc5,
+ 0x20df03,
+ 0x2ca187,
+ 0x3ae008,
+ 0x318346,
+ 0x2c004d,
+ 0x28dd86,
+ 0x2a9c05,
+ 0x201883,
+ 0x2d6749,
+ 0x23d746,
+ 0x2a9146,
+ 0x21b404,
+ 0x39b047,
+ 0x3cdf86,
+ 0x303845,
+ 0x239803,
+ 0x3ec004,
+ 0x290806,
+ 0x224444,
+ 0x3c3448,
+ 0x3d8b09,
+ 0x281009,
+ 0x2b1d0a,
+ 0x25258d,
+ 0x3e7507,
+ 0x3d7086,
+ 0x216384,
+ 0x358c49,
+ 0x297d48,
+ 0x299606,
+ 0x246dc6,
+ 0x2a76c7,
+ 0x37aa06,
+ 0x21de46,
+ 0x3bd006,
+ 0x3e8e4a,
+ 0x21b008,
+ 0x2bae85,
+ 0x3866c9,
+ 0x3ccd0a,
+ 0x397988,
+ 0x2ae188,
+ 0x2a90c8,
+ 0x3296cc,
+ 0x3a2505,
+ 0x2b0948,
+ 0x2cfd86,
+ 0x2a3a06,
+ 0x2e0947,
+ 0x259485,
+ 0x295945,
+ 0x280ec9,
+ 0x20db47,
+ 0x2366c5,
+ 0x228e87,
+ 0x21df03,
+ 0x2e2545,
+ 0x22e248,
+ 0x294e47,
+ 0x2ae049,
+ 0x2d4205,
+ 0x36e684,
+ 0x31cf48,
+ 0x2bc287,
+ 0x305088,
+ 0x22c1c8,
+ 0x39e745,
+ 0x276dc6,
+ 0x2b07c6,
+ 0x35c509,
+ 0x2694c7,
+ 0x2c2306,
+ 0x3684c7,
+ 0x205383,
+ 0x21d684,
+ 0x22ed45,
+ 0x23eac4,
+ 0x38d244,
+ 0x293507,
+ 0x27a4c7,
+ 0x28ec04,
+ 0x2ade90,
+ 0x3868c7,
+ 0x3d9745,
+ 0x385f4c,
+ 0x207504,
+ 0x2bf3c8,
+ 0x359049,
+ 0x2c5ec6,
+ 0x31c0c8,
+ 0x205c04,
+ 0x28bb08,
+ 0x298b06,
+ 0x243948,
+ 0x2af346,
+ 0x31ffcb,
+ 0x3745c5,
+ 0x22ebc8,
+ 0x2186c4,
+ 0x3d8f4a,
+ 0x2ae049,
+ 0x3d6746,
+ 0x222f08,
+ 0x26a045,
+ 0x2d5cc4,
+ 0x2bf2c6,
+ 0x260c48,
+ 0x293288,
+ 0x3344c6,
+ 0x331c84,
+ 0x322046,
+ 0x3d0507,
+ 0x28d6c7,
+ 0x2a76cf,
+ 0x346087,
+ 0x39e187,
+ 0x36ca85,
+ 0x209e85,
+ 0x2b3249,
+ 0x31f7c6,
+ 0x292145,
+ 0x2954c7,
+ 0x2e4288,
+ 0x2244c5,
+ 0x245906,
+ 0x22dc88,
+ 0x34654a,
+ 0x24a588,
+ 0x29c887,
+ 0x303506,
+ 0x386686,
0x2003c3,
- 0x211c03,
- 0x270cc9,
- 0x29f7c9,
- 0x2bb806,
- 0x2e1dc5,
- 0x3a97c8,
- 0x21b6c8,
- 0x2a7d08,
- 0x3d0c8b,
- 0x2d6547,
- 0x31d409,
- 0x2a16c8,
- 0x329f44,
- 0x3e3a48,
- 0x299dc9,
- 0x2bbe85,
- 0x3cd447,
- 0x21ebc5,
- 0x28d808,
- 0x29bb4b,
- 0x2a2c50,
- 0x2b7845,
- 0x21a3cc,
- 0x245405,
- 0x28b703,
- 0x2b49c6,
- 0x2d3004,
- 0x27fb86,
- 0x2a9a07,
- 0x221404,
- 0x24cf48,
- 0x201e8d,
- 0x342545,
- 0x23e904,
- 0x2b60c4,
- 0x395489,
- 0x2afa88,
- 0x332047,
- 0x23a108,
- 0x28ec88,
- 0x286685,
- 0x3cd987,
- 0x286607,
- 0x2f6447,
- 0x2759c9,
- 0x3c3009,
- 0x375346,
- 0x21bf06,
+ 0x219d43,
+ 0x3ccec9,
+ 0x29dd89,
+ 0x2beac6,
+ 0x2d4205,
+ 0x329548,
+ 0x222f08,
+ 0x2ad1c8,
+ 0x3bd08b,
+ 0x2c0287,
+ 0x31c609,
+ 0x2a7948,
+ 0x34eb84,
+ 0x3d6a48,
+ 0x2a07c9,
+ 0x2c2605,
+ 0x2b83c7,
+ 0x21d705,
+ 0x293188,
+ 0x2a2bcb,
+ 0x2a88d0,
+ 0x2bc845,
+ 0x21860c,
+ 0x24e645,
+ 0x288a83,
+ 0x2d4d46,
+ 0x2d8d84,
+ 0x299486,
+ 0x2aed87,
+ 0x223ec4,
+ 0x2ce548,
+ 0x36438d,
+ 0x341805,
+ 0x22ebc4,
+ 0x2ba544,
+ 0x39dec9,
+ 0x2ac208,
+ 0x32f6c7,
+ 0x298b88,
+ 0x294608,
+ 0x28ed45,
+ 0x3cd207,
+ 0x28ecc7,
+ 0x2369c7,
+ 0x27bb49,
+ 0x288849,
+ 0x221346,
+ 0x223746,
+ 0x295586,
+ 0x323a45,
+ 0x3c6a84,
+ 0x3d4386,
+ 0x3d88c6,
+ 0x28ed88,
+ 0x2a30cb,
+ 0x310347,
+ 0x216384,
+ 0x3cdec6,
+ 0x219447,
+ 0x239645,
+ 0x286745,
+ 0x269984,
+ 0x2887c6,
+ 0x3d4408,
+ 0x358c49,
+ 0x25f5c6,
+ 0x297b48,
+ 0x303906,
+ 0x364dc8,
+ 0x2dadcc,
+ 0x28ec06,
+ 0x2a98cd,
+ 0x2a9d4b,
+ 0x2c8ac5,
+ 0x331187,
+ 0x2d1946,
+ 0x3c9d08,
+ 0x2213c9,
+ 0x2c0588,
+ 0x3d9745,
+ 0x2a82c7,
+ 0x292588,
+ 0x371d89,
+ 0x38eb86,
+ 0x262d4a,
+ 0x3c9a88,
+ 0x2c03cb,
+ 0x2de38c,
+ 0x28bc08,
0x28fec6,
- 0x31a6c5,
- 0x3c7104,
- 0x3cf306,
- 0x3d9dc6,
- 0x2866c8,
- 0x20458b,
- 0x2fba47,
- 0x21e5c4,
- 0x2f4306,
- 0x2eab47,
- 0x38c785,
- 0x3a1b45,
- 0x266844,
- 0x3c2f86,
- 0x3cf388,
- 0x293f89,
- 0x254986,
- 0x2922c8,
- 0x303b86,
- 0x360fc8,
- 0x3603cc,
- 0x286546,
- 0x2a45cd,
- 0x2a4a4b,
- 0x31d685,
- 0x3e4247,
- 0x2cc986,
- 0x3c5d88,
- 0x3753c9,
- 0x21d3c8,
- 0x3de685,
- 0x2893c7,
- 0x28cc08,
- 0x3c3709,
- 0x2f4046,
- 0x26af8a,
- 0x3c5b08,
- 0x21d20b,
- 0x2d668c,
- 0x283088,
- 0x28a286,
- 0x22de48,
- 0x353c47,
- 0x224e49,
- 0x29b2cd,
- 0x2a7fc6,
- 0x3dc948,
- 0x2c6509,
- 0x2d16c8,
- 0x291008,
- 0x2d4c8c,
- 0x2d5947,
- 0x2d7887,
- 0x275805,
- 0x2c9987,
- 0x2de888,
- 0x2c1086,
- 0x25480c,
- 0x306808,
- 0x2e1708,
- 0x3cf646,
- 0x327e47,
- 0x375544,
- 0x221408,
- 0x29594c,
- 0x243f8c,
- 0x20ac85,
- 0x2033c7,
- 0x36c086,
- 0x327dc6,
- 0x39d8c8,
- 0x224dc4,
- 0x22fa8b,
- 0x292e8b,
- 0x303786,
- 0x201d07,
- 0x208805,
- 0x27d905,
- 0x22fbc6,
- 0x265785,
- 0x287745,
- 0x2e0107,
- 0x223a09,
- 0x36a604,
- 0x247245,
- 0x30b005,
- 0x3477c8,
- 0x3a89c5,
- 0x2d7089,
- 0x3982c7,
- 0x3982cb,
- 0x302206,
- 0x244e89,
- 0x333088,
- 0x2931c5,
- 0x2f6548,
- 0x3c3048,
- 0x283d07,
- 0x2455c7,
- 0x28dc09,
- 0x231187,
- 0x29a109,
- 0x2b984c,
- 0x2bb808,
- 0x2bf649,
- 0x2c0787,
- 0x28ed49,
- 0x38fbc7,
- 0x2d6788,
- 0x3c1585,
- 0x372bc6,
- 0x2d5308,
- 0x2fa4c8,
- 0x2709c9,
- 0x287787,
- 0x27e305,
- 0x207789,
- 0x31f546,
- 0x29b0c4,
- 0x37f506,
- 0x3a8fc8,
- 0x23bc07,
- 0x204788,
- 0x3a9609,
- 0x353907,
- 0x2a7e46,
- 0x3e3d84,
- 0x26a5c9,
- 0x3cd808,
- 0x3cf507,
- 0x291846,
- 0x2044c6,
- 0x3cfc04,
- 0x2f3b46,
- 0x207843,
- 0x331709,
- 0x331b46,
- 0x2b7e85,
- 0x2ab306,
- 0x224185,
- 0x28d088,
- 0x205387,
- 0x3c2786,
- 0x333706,
- 0x31ef88,
- 0x2ae8c7,
- 0x2a8005,
- 0x2a87c8,
- 0x3d4188,
- 0x3c5b08,
- 0x2452c5,
- 0x372c46,
- 0x369ac9,
- 0x30c504,
- 0x22400b,
- 0x22338b,
- 0x234789,
- 0x20dac3,
- 0x263745,
- 0x2b62c6,
- 0x246508,
- 0x2fb584,
- 0x2b64c6,
- 0x2b27c9,
- 0x3201c5,
- 0x2e0046,
- 0x2cb5c6,
- 0x21b6c4,
- 0x2a8e4a,
- 0x2b7dc8,
- 0x2fa4c6,
- 0x371545,
- 0x201b87,
- 0x33aec7,
- 0x353b44,
- 0x2235c7,
- 0x245fc4,
- 0x245fc6,
- 0x202003,
- 0x2759c5,
- 0x2bdc85,
- 0x347188,
- 0x28e145,
- 0x286289,
- 0x221247,
- 0x22124b,
- 0x2afd4c,
- 0x2b034a,
- 0x34ff07,
- 0x20ac43,
- 0x284b88,
- 0x302585,
- 0x219885,
- 0x359784,
- 0x2d6686,
- 0x287186,
- 0x2f3b87,
- 0x26030b,
- 0x214ac4,
- 0x368a84,
- 0x2bf884,
- 0x2dfe06,
- 0x221404,
- 0x21b548,
- 0x359585,
- 0x249c05,
- 0x2a7c47,
- 0x3e4349,
- 0x33ac85,
- 0x39424a,
- 0x2deb09,
- 0x2ae3ca,
- 0x3e3209,
- 0x31c284,
- 0x393445,
- 0x2c3c08,
- 0x3afdcb,
- 0x30c2c5,
- 0x216c86,
- 0x24a884,
- 0x2867c6,
- 0x353789,
- 0x2eac47,
- 0x27af48,
- 0x249946,
- 0x347a47,
- 0x28d908,
- 0x3780c6,
- 0x3e3e04,
- 0x3b2687,
- 0x384f05,
- 0x396107,
- 0x221484,
- 0x2cc906,
- 0x3aea88,
- 0x2a4c08,
- 0x32a647,
- 0x306e08,
- 0x2a1e85,
- 0x20d904,
- 0x240f48,
- 0x29ae44,
- 0x2168c5,
- 0x3ae984,
- 0x20b707,
- 0x296787,
- 0x28ee88,
- 0x322f46,
- 0x28e0c5,
- 0x286088,
- 0x32ca88,
- 0x2ad9c9,
- 0x223686,
- 0x239b08,
- 0x28f60a,
- 0x38c808,
- 0x318f85,
- 0x27bbc6,
- 0x2adfc8,
- 0x28948a,
- 0x232b87,
- 0x292905,
- 0x29df48,
- 0x272e04,
- 0x25ec86,
- 0x2d7f88,
- 0x20d986,
- 0x3d55c8,
- 0x237bc7,
- 0x20cf06,
- 0x2cd844,
- 0x326687,
- 0x2c6a84,
- 0x353747,
- 0x3cf84d,
- 0x234805,
- 0x2cc30b,
- 0x244206,
- 0x25e4c8,
- 0x24cf04,
- 0x26a146,
- 0x28aa06,
- 0x22e187,
- 0x2a428d,
- 0x3089c7,
- 0x2c70c8,
- 0x294145,
- 0x219948,
- 0x2dbac6,
- 0x2a1f08,
- 0x3e0d46,
- 0x36c9c7,
- 0x2e2d89,
- 0x338587,
+ 0x3725c8,
+ 0x3461c7,
+ 0x2a8589,
+ 0x2a258d,
+ 0x2ad486,
+ 0x3049c8,
+ 0x2cbc09,
+ 0x2d7488,
+ 0x296588,
+ 0x2da48c,
+ 0x2dc187,
+ 0x2dd187,
+ 0x27b985,
+ 0x2cf707,
+ 0x2e4148,
+ 0x2bf346,
+ 0x25f44c,
+ 0x306948,
+ 0x2e7608,
+ 0x220846,
+ 0x30aa07,
+ 0x221544,
+ 0x223ec8,
+ 0x321b8c,
+ 0x29aa0c,
+ 0x3d0fc5,
+ 0x3cf687,
+ 0x331c06,
+ 0x30a986,
+ 0x38be48,
+ 0x225804,
+ 0x2301cb,
+ 0x374dcb,
+ 0x303506,
+ 0x364207,
+ 0x374845,
+ 0x2827c5,
+ 0x230306,
+ 0x26a005,
+ 0x254bc5,
+ 0x2e5ec7,
+ 0x20df09,
+ 0x203a84,
+ 0x248c45,
+ 0x309505,
+ 0x217f48,
+ 0x35de45,
+ 0x2d4649,
+ 0x2c0cc7,
+ 0x2c0ccb,
+ 0x302106,
+ 0x24e0c9,
+ 0x332408,
+ 0x289985,
+ 0x236ac8,
+ 0x288888,
+ 0x3b5207,
+ 0x298907,
+ 0x293589,
+ 0x243887,
+ 0x29b5c9,
+ 0x2bdbcc,
+ 0x2beac8,
+ 0x2de1c9,
+ 0x3a1407,
+ 0x2946c9,
+ 0x3e1347,
+ 0x2de488,
+ 0x3e1545,
+ 0x37bb06,
+ 0x2db348,
+ 0x2ec7c8,
+ 0x3ccbc9,
+ 0x254c07,
+ 0x2b1f05,
+ 0x207c09,
+ 0x36a346,
+ 0x2a2384,
+ 0x30ce06,
+ 0x328d48,
+ 0x23da47,
+ 0x2a32c8,
+ 0x329389,
+ 0x323307,
+ 0x2ad306,
+ 0x331244,
+ 0x310d09,
+ 0x3cd088,
+ 0x220707,
+ 0x297346,
+ 0x2a3006,
+ 0x3cb504,
+ 0x2fb8c6,
+ 0x207cc3,
+ 0x374149,
+ 0x374586,
+ 0x2bce85,
+ 0x2b06c6,
+ 0x20e685,
+ 0x292a08,
+ 0x204f87,
+ 0x247806,
+ 0x330cc6,
+ 0x30f908,
+ 0x2b33c7,
+ 0x2ad4c5,
+ 0x2adc88,
+ 0x3dd848,
+ 0x3c9a88,
+ 0x24e505,
+ 0x37bb86,
+ 0x280dc9,
+ 0x35c384,
+ 0x20e50b,
+ 0x21db4b,
+ 0x2bad89,
+ 0x21df03,
+ 0x267ec5,
+ 0x338106,
+ 0x250248,
+ 0x3a7644,
+ 0x318346,
+ 0x29cf89,
+ 0x2c6c05,
+ 0x2e5e06,
+ 0x2bc286,
+ 0x222f04,
+ 0x2ae30a,
+ 0x2bcdc8,
+ 0x2ec7c6,
+ 0x379ac5,
+ 0x383187,
+ 0x33a907,
+ 0x276dc4,
+ 0x21dd87,
+ 0x2c9304,
+ 0x2f0f06,
+ 0x205bc3,
+ 0x27bb45,
+ 0x2c4ac5,
+ 0x3e1708,
+ 0x293ac5,
+ 0x28e949,
+ 0x223d07,
+ 0x223d0b,
+ 0x2b4ccc,
+ 0x2b52ca,
+ 0x351107,
+ 0x208c03,
+ 0x28d0c8,
+ 0x240cc5,
+ 0x224545,
+ 0x3587c4,
+ 0x2de386,
+ 0x359046,
+ 0x2fb907,
+ 0x26458b,
+ 0x2add04,
+ 0x36cbc4,
+ 0x2e1404,
+ 0x2e5bc6,
+ 0x223ec4,
+ 0x222d88,
+ 0x3585c5,
+ 0x252bc5,
+ 0x2ad107,
+ 0x331289,
+ 0x33a6c5,
+ 0x39cd8a,
+ 0x3de289,
+ 0x2a678a,
+ 0x3e8f89,
+ 0x312c84,
+ 0x2c9bc5,
+ 0x37ab08,
+ 0x383a8b,
+ 0x304b45,
+ 0x219286,
+ 0x24d204,
+ 0x28ee86,
+ 0x323189,
+ 0x219547,
+ 0x36f348,
+ 0x252906,
+ 0x3d0487,
+ 0x293288,
+ 0x380146,
+ 0x3d6e04,
+ 0x26ae87,
+ 0x390e85,
+ 0x39f0c7,
+ 0x205b04,
+ 0x2d18c6,
+ 0x33aa48,
+ 0x2a9f08,
+ 0x31a707,
+ 0x385088,
+ 0x2a8105,
+ 0x21dc84,
+ 0x384b88,
+ 0x320fc4,
+ 0x218ec5,
+ 0x38bc44,
+ 0x3d7787,
+ 0x29b087,
0x294808,
- 0x269145,
- 0x2357c8,
- 0x327d05,
- 0x2334c5,
- 0x379205,
- 0x20af03,
- 0x202644,
- 0x245745,
- 0x24b649,
- 0x372a06,
- 0x2ea908,
- 0x289685,
- 0x2c9847,
- 0x2a90ca,
- 0x2dff89,
- 0x2d7bca,
- 0x2e5708,
- 0x22850c,
- 0x28fe8d,
- 0x31e443,
- 0x3d54c8,
- 0x211145,
- 0x353d86,
- 0x3d1d86,
- 0x321f85,
- 0x2586c9,
- 0x30db85,
- 0x286088,
- 0x2648c6,
- 0x36ad46,
- 0x2af1c9,
- 0x266e47,
- 0x29be06,
- 0x2a9048,
- 0x245f48,
- 0x2f0987,
- 0x2e050e,
- 0x2dbd05,
- 0x3c3605,
- 0x20d888,
- 0x3a21c7,
- 0x204502,
- 0x2d4944,
- 0x27fa8a,
- 0x3cf5c8,
- 0x3c3186,
- 0x2a6108,
- 0x2ab406,
- 0x340f48,
- 0x2bbb88,
- 0x233484,
- 0x2c9c05,
- 0x70e7c4,
- 0x70e7c4,
- 0x70e7c4,
- 0x201f03,
- 0x204346,
- 0x286546,
- 0x2aa3cc,
- 0x20cf43,
- 0x270b06,
- 0x201fc4,
- 0x2e38c8,
- 0x2b2605,
- 0x27fb86,
- 0x2d1208,
- 0x2e6386,
- 0x3c2706,
- 0x29e748,
- 0x2e7047,
- 0x230f49,
- 0x2f04ca,
- 0x274544,
- 0x246005,
- 0x30a405,
- 0x2e3646,
- 0x23e906,
- 0x2aa146,
- 0x382006,
- 0x231084,
- 0x23108b,
- 0x239644,
- 0x201c05,
- 0x2bab85,
- 0x2605c6,
- 0x20ec48,
- 0x28fd47,
- 0x331ac4,
- 0x211583,
- 0x272905,
- 0x37f3c7,
- 0x28fc4b,
- 0x347087,
- 0x2d1108,
- 0x2c9d47,
- 0x276a06,
- 0x271fc8,
- 0x2cf3cb,
- 0x2cba46,
- 0x212949,
- 0x2cf545,
- 0x322d43,
- 0x2e0046,
- 0x237ac8,
- 0x215ec3,
- 0x29acc3,
- 0x28d906,
- 0x2ab406,
- 0x37604a,
- 0x28a2c5,
- 0x28a84b,
- 0x2ab24b,
- 0x217e03,
- 0x209b03,
- 0x2c3044,
- 0x2e4887,
- 0x237b44,
- 0x29b2c4,
- 0x2c9e84,
- 0x38cb08,
- 0x371488,
- 0x211b89,
- 0x2e3488,
- 0x3a0087,
- 0x224006,
- 0x2ea54f,
- 0x2dbe46,
- 0x2e4dc4,
- 0x3712ca,
- 0x37f2c7,
- 0x2c6b86,
- 0x29b109,
- 0x211b05,
- 0x3472c5,
- 0x211c46,
- 0x235903,
- 0x272e49,
- 0x21d106,
- 0x3a93c9,
- 0x3947c6,
- 0x2759c5,
- 0x20b085,
- 0x202643,
- 0x2e49c8,
- 0x332207,
- 0x2f6084,
- 0x2e3748,
- 0x29d844,
- 0x31ff46,
- 0x2b49c6,
- 0x247dc6,
- 0x2e6d09,
- 0x219805,
- 0x2a80c6,
- 0x25c0c9,
- 0x2db246,
- 0x2ea646,
- 0x3abbc6,
- 0x209085,
- 0x3ae986,
- 0x36c9c4,
- 0x3c1585,
- 0x2d5304,
- 0x2c8f46,
- 0x354704,
- 0x201c03,
- 0x292585,
- 0x23d308,
- 0x35a407,
- 0x2fb609,
- 0x292808,
- 0x2a5891,
- 0x2cb64a,
- 0x3036c7,
- 0x237d06,
- 0x201fc4,
- 0x2d5408,
- 0x293688,
- 0x2a5a4a,
- 0x2d6e4d,
- 0x216b86,
- 0x29e846,
- 0x326746,
- 0x2ac3c7,
- 0x2c7185,
- 0x30d607,
- 0x201e85,
- 0x398404,
- 0x3c2d46,
- 0x2884c7,
- 0x272b4d,
- 0x2adf07,
- 0x2bfb48,
- 0x286389,
- 0x27bac6,
- 0x2f3fc5,
- 0x2e9284,
- 0x3a90c6,
- 0x353a46,
- 0x3cf746,
- 0x2a6988,
- 0x22d503,
- 0x21b783,
- 0x32c105,
- 0x322606,
- 0x2bbb45,
- 0x249b48,
- 0x2a9bca,
- 0x239084,
- 0x2e38c8,
- 0x2a3448,
+ 0x305206,
+ 0x293a45,
+ 0x28e748,
+ 0x24a788,
+ 0x2b1c49,
+ 0x21de46,
+ 0x238848,
+ 0x3d8dca,
+ 0x2396c8,
+ 0x30d585,
+ 0x372d86,
+ 0x3de148,
+ 0x2a838a,
+ 0x35bb07,
+ 0x298185,
+ 0x2a4d88,
+ 0x270504,
+ 0x25fa06,
+ 0x2dd808,
+ 0x3dac86,
+ 0x33b048,
+ 0x231cc7,
+ 0x3d5e86,
+ 0x2d2544,
+ 0x34c407,
+ 0x2cc184,
+ 0x323147,
+ 0x2eff4d,
+ 0x248385,
+ 0x2cc64b,
+ 0x29ac86,
+ 0x261808,
+ 0x2ce504,
+ 0x255246,
+ 0x290806,
+ 0x372907,
+ 0x2a958d,
+ 0x308a87,
+ 0x2cd508,
+ 0x3b4dc5,
+ 0x29e5c8,
+ 0x2e1b06,
+ 0x2a8188,
+ 0x23f1c6,
+ 0x385cc7,
+ 0x2e93c9,
+ 0x35b387,
+ 0x2998c8,
+ 0x26e5c5,
+ 0x231748,
+ 0x30a8c5,
+ 0x245845,
+ 0x370505,
+ 0x2191c3,
+ 0x20a2c4,
+ 0x239785,
+ 0x2531c9,
+ 0x37b946,
+ 0x2f51c8,
+ 0x249b85,
+ 0x2cf5c7,
+ 0x2d89ca,
+ 0x2e5d49,
+ 0x2dcf0a,
+ 0x2ebf48,
+ 0x228ccc,
+ 0x29554d,
+ 0x303b03,
+ 0x33af48,
+ 0x3ebfc5,
+ 0x346306,
+ 0x219806,
+ 0x35ea85,
+ 0x3685c9,
+ 0x208b85,
+ 0x28e748,
+ 0x268e86,
+ 0x370d06,
+ 0x2b3cc9,
+ 0x26ba87,
+ 0x2a2e86,
+ 0x2d8948,
+ 0x38d848,
+ 0x2f7f07,
+ 0x2e62ce,
+ 0x2e1d45,
+ 0x371c85,
+ 0x3dab88,
+ 0x3327c7,
+ 0x20df82,
+ 0x2da144,
+ 0x29938a,
+ 0x2207c8,
+ 0x2889c6,
+ 0x2ab608,
+ 0x2b07c6,
+ 0x209d08,
+ 0x2c2308,
+ 0x245804,
+ 0x2cf985,
+ 0x773104,
+ 0x773104,
+ 0x773104,
+ 0x203e03,
+ 0x2038c6,
+ 0x28ec06,
+ 0x2af74c,
+ 0x205c43,
+ 0x205b06,
+ 0x21b284,
+ 0x23d6c8,
+ 0x29cdc5,
+ 0x299486,
+ 0x2b4808,
+ 0x2ecdc6,
+ 0x247786,
+ 0x3d6548,
+ 0x22edc7,
+ 0x243649,
+ 0x33824a,
+ 0x27a644,
+ 0x280d85,
+ 0x30be85,
+ 0x358a46,
+ 0x3e7546,
+ 0x3316c6,
+ 0x36a0c6,
+ 0x243784,
+ 0x24378b,
+ 0x23da44,
+ 0x24e245,
+ 0x2c1285,
+ 0x264846,
+ 0x3e9788,
+ 0x295407,
+ 0x374504,
+ 0x26f0c3,
+ 0x270005,
+ 0x30ccc7,
+ 0x29530b,
+ 0x3e1607,
+ 0x2b4708,
+ 0x2cfac7,
+ 0x27e146,
+ 0x284c08,
+ 0x2a6d4b,
+ 0x34f1c6,
+ 0x2103c9,
+ 0x2a6ec5,
+ 0x322683,
+ 0x2e5e06,
+ 0x231bc8,
+ 0x214283,
+ 0x2d1a03,
+ 0x293286,
+ 0x2b07c6,
+ 0x37e60a,
+ 0x28ff05,
+ 0x29064b,
+ 0x2b060b,
+ 0x24da83,
+ 0x20a8c3,
+ 0x2c9284,
+ 0x2d8807,
+ 0x231c44,
+ 0x23d6c4,
+ 0x2cfc04,
+ 0x2399c8,
+ 0x379a08,
+ 0x219f49,
+ 0x2e9ac8,
+ 0x3c7787,
+ 0x20e506,
+ 0x2f4e0f,
+ 0x2e1e86,
+ 0x2eb284,
+ 0x37984a,
+ 0x30cbc7,
+ 0x2cc286,
+ 0x2a23c9,
+ 0x219ec5,
+ 0x246305,
+ 0x21a006,
+ 0x231883,
+ 0x270549,
+ 0x21b186,
+ 0x329149,
+ 0x39d306,
+ 0x27bb45,
+ 0x3d13c5,
+ 0x203383,
+ 0x3cc588,
+ 0x32f887,
+ 0x236604,
+ 0x23d548,
+ 0x2a3784,
+ 0x320ec6,
+ 0x2d4d46,
+ 0x249406,
+ 0x22ea89,
+ 0x2244c5,
+ 0x2ad586,
+ 0x262689,
+ 0x2e1006,
+ 0x239a46,
+ 0x3afcc6,
+ 0x22e9c5,
+ 0x38bc46,
+ 0x385cc4,
+ 0x3e1545,
+ 0x2db344,
+ 0x2cec86,
+ 0x346c84,
+ 0x219543,
+ 0x297e05,
+ 0x23fb48,
+ 0x255787,
+ 0x3a76c9,
+ 0x298088,
+ 0x2aab91,
+ 0x2bc30a,
+ 0x303447,
+ 0x279306,
+ 0x21b284,
+ 0x2db448,
+ 0x2f6088,
+ 0x2aad4a,
+ 0x2d440d,
+ 0x219186,
+ 0x3d6646,
+ 0x34c4c6,
+ 0x30e9c7,
+ 0x2cd5c5,
+ 0x3bcb07,
+ 0x23d605,
+ 0x2c0e04,
+ 0x347246,
+ 0x23c0c7,
+ 0x27024d,
+ 0x3de087,
+ 0x36da48,
+ 0x28ea49,
+ 0x372c86,
+ 0x38eb05,
+ 0x245404,
+ 0x328e46,
+ 0x3bcc46,
+ 0x220946,
+ 0x2abe88,
+ 0x233803,
+ 0x218183,
+ 0x384745,
+ 0x25c786,
+ 0x2c22c5,
+ 0x252b08,
+ 0x2aef4a,
+ 0x276ec4,
+ 0x23d6c8,
+ 0x2a90c8,
+ 0x39ec07,
+ 0x298789,
+ 0x2d6a88,
+ 0x2bec47,
+ 0x2d9a06,
+ 0x3dac8a,
+ 0x328ec8,
+ 0x31ce09,
+ 0x2ac2c8,
+ 0x21d009,
+ 0x2791c7,
+ 0x2cca05,
+ 0x3bd286,
+ 0x2bf1c8,
+ 0x28a308,
+ 0x2662c8,
+ 0x341948,
+ 0x24e245,
+ 0x20bcc4,
+ 0x23dd08,
+ 0x24cf84,
+ 0x3e8d84,
+ 0x27bb45,
+ 0x2a4707,
+ 0x331049,
+ 0x372707,
+ 0x238885,
+ 0x28ba06,
+ 0x3792c6,
+ 0x210504,
+ 0x2b3fc6,
+ 0x290a84,
+ 0x28b0c6,
+ 0x330e06,
+ 0x2140c6,
+ 0x3d9745,
+ 0x2529c7,
+ 0x208c03,
+ 0x270d09,
+ 0x30f708,
+ 0x23d544,
+ 0x358b4d,
+ 0x2aa008,
+ 0x3012c8,
+ 0x31cd86,
+ 0x2e94c9,
+ 0x2e5d49,
+ 0x322e85,
+ 0x2af04a,
+ 0x281a0a,
+ 0x28e44c,
+ 0x28e5c6,
+ 0x28ccc6,
+ 0x2e2486,
+ 0x3ac749,
+ 0x346546,
+ 0x2b3406,
+ 0x208c46,
+ 0x223ec8,
+ 0x24a586,
+ 0x2eaa4b,
+ 0x2a4885,
+ 0x252bc5,
+ 0x28d7c5,
+ 0x20bc46,
+ 0x219143,
+ 0x249386,
+ 0x3de007,
+ 0x2db305,
+ 0x28c085,
+ 0x2ca3c5,
+ 0x2f9a46,
+ 0x322f44,
+ 0x336946,
+ 0x2a0b09,
+ 0x20bacc,
+ 0x2c0b48,
+ 0x260bc4,
+ 0x37fac6,
+ 0x29ad86,
+ 0x231bc8,
+ 0x222f08,
+ 0x20b9c9,
+ 0x383187,
+ 0x35d809,
+ 0x283886,
+ 0x219104,
+ 0x20fd44,
+ 0x293884,
+ 0x293288,
+ 0x330e8a,
+ 0x33a646,
+ 0x36c947,
+ 0x39f347,
+ 0x24e1c5,
+ 0x2b6904,
+ 0x2a0786,
+ 0x2cd606,
+ 0x205083,
+ 0x30f547,
+ 0x22c0c8,
+ 0x322fca,
+ 0x3cf988,
+ 0x34ee48,
+ 0x346cc5,
+ 0x229005,
+ 0x310445,
+ 0x24e586,
+ 0x250fc6,
+ 0x3e1845,
+ 0x374389,
+ 0x2b670c,
+ 0x34a587,
+ 0x2aadc8,
+ 0x295dc5,
+ 0x773104,
+ 0x2bb4c4,
+ 0x294f84,
+ 0x24b586,
+ 0x2b150e,
+ 0x246387,
+ 0x301285,
+ 0x35c30c,
+ 0x2a3647,
+ 0x23c047,
+ 0x247a89,
+ 0x21aa49,
+ 0x298185,
+ 0x30f708,
+ 0x280dc9,
+ 0x3c9945,
+ 0x2db248,
+ 0x2e8e86,
+ 0x384e06,
+ 0x3854c4,
+ 0x31c7c8,
+ 0x252483,
+ 0x2034c4,
+ 0x270085,
+ 0x3a4807,
+ 0x3235c5,
+ 0x3d8c89,
+ 0x39138d,
+ 0x2b2246,
+ 0x3d5504,
+ 0x23c208,
+ 0x20dd4a,
0x3a9947,
- 0x37b249,
- 0x2d0e08,
- 0x294007,
- 0x2d3fc6,
- 0x20d98a,
- 0x3a9148,
- 0x31dac9,
- 0x2afb48,
- 0x222849,
- 0x35d787,
- 0x208f45,
- 0x2ab806,
- 0x2c0f08,
- 0x281fc8,
- 0x261d08,
- 0x342688,
- 0x201c05,
- 0x200d04,
- 0x23bec8,
- 0x24a604,
- 0x3e3004,
- 0x2759c5,
- 0x29d187,
- 0x3e4109,
- 0x22df87,
- 0x226b05,
- 0x282e86,
- 0x370d46,
- 0x20ed44,
- 0x2af4c6,
- 0x28ac84,
- 0x3d4886,
- 0x3e3ec6,
- 0x215d06,
- 0x3de685,
- 0x249a07,
- 0x20ac43,
- 0x22bf49,
- 0x31ed88,
- 0x293e84,
- 0x293e8d,
- 0x2a4d08,
- 0x3082c8,
- 0x31da46,
- 0x2e2e89,
- 0x2dff89,
- 0x353485,
- 0x2a9cca,
- 0x27cb0a,
- 0x291a4c,
- 0x291bc6,
- 0x284786,
- 0x2dc446,
- 0x3a6ac9,
- 0x353fc6,
- 0x2ae906,
- 0x30dc46,
- 0x221408,
- 0x306e06,
- 0x2e43cb,
- 0x29d305,
- 0x249c05,
- 0x285285,
- 0x30ef06,
- 0x20d943,
- 0x247d46,
- 0x2ade87,
- 0x2d52c5,
- 0x2f4ec5,
- 0x2c4945,
- 0x2f9646,
- 0x336cc4,
- 0x336cc6,
- 0x2a3d09,
- 0x30ed8c,
- 0x398148,
- 0x25cf04,
- 0x39d6c6,
- 0x244306,
- 0x237ac8,
- 0x21b6c8,
- 0x30ec89,
- 0x201b87,
- 0x2fbc09,
- 0x27d9c6,
- 0x216b04,
- 0x210484,
- 0x28df04,
- 0x28d908,
- 0x3e3f4a,
- 0x33ac06,
- 0x368807,
- 0x396387,
- 0x244f85,
- 0x2b9304,
- 0x299d86,
- 0x2c71c6,
- 0x205483,
- 0x31ebc7,
- 0x22a948,
- 0x3535ca,
- 0x202148,
- 0x273148,
- 0x354745,
- 0x237105,
- 0x2fbb45,
- 0x245346,
- 0x246e46,
- 0x316a45,
- 0x331949,
- 0x2b910c,
- 0x34ca47,
- 0x2a5ac8,
- 0x282185,
- 0x70e7c4,
- 0x236b04,
- 0x2cc644,
- 0x3d0ac6,
- 0x2ad28e,
- 0x347347,
- 0x2ac5c5,
- 0x30c48c,
- 0x29d707,
- 0x288447,
- 0x2c8989,
- 0x21ae49,
- 0x292905,
- 0x31ed88,
- 0x369ac9,
- 0x3c59c5,
- 0x2d5208,
- 0x2c1f86,
- 0x2411c6,
- 0x24fb84,
- 0x2aa648,
- 0x206743,
- 0x203f44,
- 0x272985,
- 0x39b187,
- 0x26a445,
- 0x28f4c9,
- 0x29b80d,
- 0x2b2ec6,
- 0x2115c4,
- 0x288608,
- 0x22384a,
- 0x3e9847,
- 0x2b0c45,
- 0x203f83,
- 0x2ab40e,
- 0x2e4acc,
- 0x33b107,
- 0x2ad447,
- 0x4d39a7c7,
- 0x143386,
- 0x27804,
- 0x212fc3,
- 0x354005,
- 0x2cc645,
- 0x2a64c8,
- 0x2a3289,
- 0x25ce06,
- 0x237b44,
- 0x303606,
- 0x245d0b,
- 0x2da2cc,
- 0x257b47,
- 0x2e4685,
- 0x3d4088,
- 0x2f0745,
- 0x3712c7,
- 0x2e2c47,
- 0x2494c5,
- 0x20d943,
- 0x2abd84,
- 0x288cc5,
- 0x36a505,
- 0x36a506,
- 0x2a0088,
- 0x2884c7,
- 0x3d2086,
- 0x3cfb06,
- 0x379146,
- 0x3dcac9,
- 0x3cda87,
- 0x25cc86,
- 0x2da446,
- 0x387046,
- 0x2b7d05,
- 0x218586,
- 0x3b5545,
- 0x3a8a48,
- 0x29cdcb,
- 0x2998c6,
- 0x3963c4,
- 0x222e09,
- 0x221244,
- 0x2c1f08,
- 0x311007,
- 0x290f04,
- 0x2d02c8,
- 0x2d6984,
- 0x2b7d44,
- 0x293dc5,
- 0x342586,
- 0x38ca47,
- 0x235f03,
- 0x2a7f05,
- 0x34bb44,
- 0x3c3646,
- 0x353508,
- 0x32c785,
- 0x29ca89,
- 0x207985,
- 0x3ca8c8,
- 0x326c47,
- 0x331c48,
- 0x2cff07,
- 0x395809,
- 0x291186,
- 0x397c06,
- 0x29fa84,
- 0x223f45,
- 0x3151cc,
- 0x285287,
- 0x285a87,
- 0x23e548,
- 0x2b2ec6,
- 0x2addc4,
- 0x37ddc4,
- 0x28da89,
- 0x2dc546,
- 0x293547,
- 0x27b884,
- 0x2af5c6,
- 0x3de9c5,
- 0x2e2ac7,
- 0x2e4346,
- 0x26ae49,
- 0x2d2747,
- 0x2a1447,
- 0x2af046,
- 0x291785,
- 0x28c108,
- 0x21cf88,
- 0x36db46,
- 0x32c7c5,
- 0x2d8fc6,
- 0x20d083,
- 0x2a6349,
- 0x2a9ece,
- 0x2cfc48,
- 0x29d948,
- 0x36d94b,
- 0x29ccc6,
- 0x396284,
- 0x28fa84,
- 0x2a9fca,
- 0x21a2c7,
- 0x25cd45,
- 0x212949,
- 0x2d3f05,
- 0x3e3047,
- 0x29e6c4,
- 0x206647,
- 0x216a08,
- 0x2c96c6,
- 0x2cca89,
- 0x2d0f0a,
- 0x21a246,
- 0x2a4846,
- 0x2bab05,
- 0x39c545,
- 0x3b0e47,
- 0x24f388,
- 0x3de908,
- 0x233486,
- 0x20b105,
- 0x23e68e,
- 0x2d15c4,
- 0x2a6445,
- 0x282809,
- 0x2f8a08,
- 0x298006,
- 0x2a82cc,
- 0x2a97d0,
- 0x2acecf,
- 0x2ae648,
- 0x34ff07,
- 0x3de685,
- 0x245745,
- 0x38c8c9,
- 0x29e149,
- 0x283546,
- 0x30c347,
- 0x39d7c5,
- 0x23ae89,
- 0x35dfc6,
- 0x353e0d,
- 0x28ddc9,
- 0x29b2c4,
- 0x2cf6c8,
- 0x23bf89,
- 0x33adc6,
- 0x284d85,
- 0x397c06,
- 0x27ae09,
- 0x27b708,
- 0x20f1c5,
- 0x28f704,
- 0x2a848b,
- 0x33ac85,
- 0x246586,
- 0x2901c6,
- 0x259446,
- 0x3d0e8b,
- 0x29cb89,
- 0x225005,
- 0x396f87,
- 0x2cb5c6,
- 0x25e646,
- 0x28f388,
- 0x2d40c9,
- 0x2bf90c,
- 0x37f1c8,
- 0x31d186,
- 0x3356c3,
- 0x38adc6,
- 0x302505,
- 0x28b388,
- 0x20ab06,
- 0x3c8888,
- 0x3b0905,
- 0x267305,
- 0x326d88,
- 0x3b6ec7,
- 0x3d1cc7,
- 0x2f3b87,
- 0x32f908,
- 0x350048,
- 0x2f1086,
- 0x2c8d87,
- 0x21ea07,
- 0x39558a,
- 0x210843,
- 0x30ef06,
- 0x23e605,
- 0x27fa84,
- 0x286389,
- 0x395784,
- 0x2c96c4,
- 0x2a9444,
- 0x2ad44b,
- 0x332147,
- 0x23e8c5,
- 0x2a1b88,
- 0x282e86,
- 0x282e88,
- 0x28a206,
- 0x298945,
- 0x298b85,
- 0x29a546,
- 0x30e148,
- 0x29b048,
- 0x286546,
- 0x2a19cf,
- 0x2a5e10,
- 0x20d485,
- 0x20ac43,
- 0x237405,
- 0x31d348,
- 0x29e049,
- 0x3c5b08,
- 0x30c148,
- 0x25ae48,
- 0x332207,
- 0x282b49,
- 0x3c8a88,
- 0x2b3944,
- 0x2a92c8,
- 0x347889,
- 0x2c9307,
- 0x2bc7c4,
- 0x22e048,
- 0x2497ca,
- 0x2ee946,
- 0x216b86,
- 0x223549,
- 0x2a9a07,
- 0x2e0b08,
- 0x244808,
- 0x3d01c8,
- 0x2796c5,
- 0x386605,
- 0x249c05,
- 0x2cc605,
- 0x2c6347,
- 0x20d945,
- 0x2d52c5,
- 0x386b86,
- 0x3c5a47,
- 0x3afd07,
- 0x249ac6,
- 0x2e5c45,
- 0x246586,
- 0x205405,
- 0x2c1d88,
- 0x2f9e44,
- 0x2db2c6,
- 0x351e44,
- 0x2d00c8,
- 0x2db3ca,
- 0x286ccc,
- 0x2aaa05,
- 0x2ac486,
- 0x2bfac6,
- 0x3b6806,
- 0x31d204,
- 0x3df285,
- 0x289ac7,
- 0x2a9a89,
- 0x2e03c7,
- 0x70e7c4,
- 0x70e7c4,
- 0x331fc5,
- 0x312a84,
- 0x2a7a8a,
- 0x282d06,
- 0x3698c4,
- 0x203345,
- 0x2c5405,
- 0x2c70c4,
- 0x28fe07,
- 0x207907,
- 0x2dfe08,
- 0x2d90c8,
- 0x20f1c9,
- 0x29ae48,
- 0x29494b,
- 0x239704,
- 0x29eb45,
- 0x28c845,
- 0x2f3b09,
- 0x2d40c9,
- 0x222d08,
- 0x3d8dc8,
- 0x2605c4,
- 0x244345,
- 0x20dec3,
- 0x2e3605,
- 0x2a8146,
- 0x2a30cc,
- 0x21d006,
- 0x284c86,
- 0x298285,
- 0x2f96c8,
- 0x2dac86,
- 0x237e86,
- 0x216b86,
- 0x22b48c,
- 0x27d4c4,
- 0x37928a,
- 0x2981c8,
- 0x2a2f07,
- 0x34ba46,
- 0x25cec7,
- 0x303205,
- 0x291846,
- 0x35ecc6,
- 0x3728c7,
- 0x2d0c04,
- 0x20b805,
- 0x282804,
- 0x398487,
- 0x282a48,
- 0x28460a,
- 0x28ca87,
- 0x2b7907,
- 0x34fe87,
- 0x2f0889,
- 0x2a30ca,
- 0x208fc3,
- 0x35a3c5,
- 0x215d43,
- 0x2c9ec9,
- 0x36cc48,
- 0x368947,
- 0x3c5c09,
- 0x21d086,
- 0x3c1648,
- 0x2c4685,
- 0x32cb8a,
- 0x20df09,
- 0x27a1c9,
- 0x2dab47,
- 0x293789,
- 0x215c08,
- 0x3e3c46,
- 0x2ac648,
- 0x2f5207,
- 0x231187,
- 0x2deb07,
- 0x2cdf88,
- 0x39ab06,
- 0x249585,
- 0x289ac7,
- 0x2a4348,
- 0x3790c4,
- 0x309684,
- 0x29bd07,
- 0x2bbf07,
- 0x36994a,
- 0x3e3bc6,
- 0x3ce54a,
- 0x2d4887,
- 0x2d1387,
- 0x20b8c4,
- 0x29a1c4,
- 0x2e29c6,
- 0x2f4644,
- 0x2f464c,
- 0x310f45,
- 0x216849,
- 0x3caa44,
- 0x2c7185,
- 0x2237c8,
- 0x27a545,
- 0x394246,
- 0x29e284,
- 0x2a6d0a,
- 0x2dddc6,
- 0x3501ca,
- 0x3e33c7,
- 0x2048c5,
- 0x235905,
- 0x244fca,
- 0x281f05,
- 0x2ada86,
- 0x24a604,
- 0x2c31c6,
- 0x3b0f05,
- 0x20abc6,
- 0x32a64c,
- 0x22b70a,
- 0x27cc04,
- 0x224006,
- 0x2a9a07,
- 0x2e42c4,
- 0x221408,
- 0x2ed306,
- 0x396209,
- 0x3dd0c9,
- 0x2bb909,
- 0x2241c6,
- 0x2f5306,
- 0x2ac787,
- 0x331888,
- 0x2f5109,
- 0x332147,
- 0x2a1d06,
- 0x347ac7,
- 0x326605,
- 0x2d15c4,
- 0x2ac347,
- 0x21ebc5,
- 0x293d05,
- 0x200cc7,
- 0x249388,
- 0x3d4006,
- 0x2a51cd,
- 0x2a66cf,
- 0x2ab24d,
- 0x223444,
- 0x23d406,
- 0x2e7b48,
- 0x30dc05,
- 0x245488,
- 0x283bca,
- 0x29b2c4,
- 0x2c67c6,
- 0x215307,
- 0x214ac7,
- 0x2e7109,
- 0x2ac605,
- 0x2c70c4,
- 0x2c9b4a,
- 0x2d09c9,
- 0x293887,
- 0x2a5486,
- 0x33adc6,
- 0x244286,
- 0x3b2746,
- 0x2e69cf,
- 0x2e7a09,
- 0x306e06,
- 0x267246,
- 0x20c049,
- 0x2c8e87,
- 0x201543,
- 0x209046,
- 0x211c03,
- 0x321e48,
- 0x26a007,
- 0x2ae849,
- 0x2b4848,
- 0x3d1e08,
- 0x2878c6,
- 0x225a89,
- 0x34c985,
- 0x2a7d04,
- 0x209007,
- 0x3a6b45,
- 0x223444,
- 0x23e988,
- 0x21a584,
- 0x2c8bc7,
- 0x3aa146,
- 0x23fe85,
- 0x2afb48,
- 0x33ac8b,
- 0x31f287,
- 0x245246,
- 0x2dbec4,
- 0x3da006,
- 0x2759c5,
- 0x21ebc5,
- 0x28be89,
- 0x28fa09,
- 0x2311c4,
- 0x231205,
- 0x224045,
- 0x32ca06,
- 0x31ee88,
- 0x2d3506,
- 0x22a78b,
- 0x2be84a,
- 0x2d0005,
- 0x298c06,
- 0x238d85,
- 0x386ac5,
- 0x2a35c7,
- 0x30f188,
- 0x29aec4,
- 0x34ae06,
- 0x29b0c6,
- 0x215dc7,
- 0x322d04,
- 0x28aa06,
- 0x3cd645,
- 0x3cd649,
- 0x2f5504,
- 0x30a549,
- 0x286546,
- 0x2d5a08,
- 0x224045,
- 0x396485,
- 0x20abc6,
- 0x2bf809,
- 0x21ae49,
- 0x284d06,
- 0x2f8b08,
- 0x29b948,
- 0x238d44,
- 0x2ca304,
- 0x2ca308,
- 0x39ff08,
- 0x2fbd09,
- 0x2a80c6,
- 0x216b86,
- 0x33a24d,
- 0x2b64c6,
- 0x360289,
- 0x30e485,
- 0x211c46,
- 0x22e2c8,
- 0x336c05,
- 0x21ea44,
- 0x2759c5,
- 0x28f088,
- 0x2a7849,
- 0x2828c4,
- 0x2cc906,
- 0x27a40a,
- 0x33b008,
- 0x369ac9,
- 0x27600a,
- 0x3c5b86,
- 0x2a6888,
- 0x371085,
- 0x298448,
- 0x303285,
- 0x21cf49,
- 0x33ca09,
- 0x234702,
- 0x2cf545,
- 0x28c906,
- 0x286487,
- 0x2b0dc5,
- 0x34b946,
- 0x319908,
- 0x2b2ec6,
- 0x2c3ac9,
- 0x285b86,
- 0x28f208,
- 0x2b8cc5,
- 0x24e406,
- 0x36cac8,
- 0x28d908,
- 0x35d688,
- 0x31b648,
- 0x218584,
- 0x20c8c3,
- 0x2c3d04,
- 0x28cc86,
- 0x326644,
- 0x29d887,
- 0x237d89,
- 0x2db645,
- 0x244806,
- 0x209046,
- 0x29fecb,
- 0x2c6ac6,
- 0x20c886,
- 0x2de708,
- 0x361b46,
- 0x2046c3,
- 0x212403,
- 0x2d15c4,
- 0x239a05,
- 0x3039c7,
- 0x282a48,
- 0x282a4f,
- 0x2899cb,
- 0x31ec88,
- 0x2cc986,
- 0x31ef8e,
- 0x20abc3,
- 0x303944,
- 0x2c6a45,
- 0x2c6f46,
- 0x299e8b,
- 0x29d246,
- 0x232009,
- 0x23fe85,
- 0x251748,
- 0x20e288,
- 0x21ad0c,
- 0x2ad486,
- 0x2e3646,
- 0x2e1dc5,
- 0x2945c8,
- 0x286cc5,
- 0x329f48,
- 0x2a864a,
- 0x2ab689,
- 0x70e7c4,
+ 0x34a405,
+ 0x203503,
+ 0x2b07ce,
+ 0x3cc68c,
+ 0x397a87,
+ 0x2b16c7,
+ 0x4dba3607,
+ 0x2b4c6,
+ 0x2c684,
+ 0x205b43,
+ 0x346585,
+ 0x294f85,
+ 0x2ab9c8,
+ 0x2a8f09,
+ 0x260ac6,
+ 0x231c44,
+ 0x303386,
+ 0x38d60b,
+ 0x2e00cc,
+ 0x267c47,
+ 0x2ead05,
+ 0x3dd748,
+ 0x2f7cc5,
+ 0x379847,
+ 0x2e9287,
+ 0x252485,
+ 0x219143,
+ 0x245ac4,
+ 0x328c05,
+ 0x203985,
+ 0x203986,
+ 0x2a0588,
+ 0x23c0c7,
+ 0x219b06,
+ 0x3cb406,
+ 0x370446,
+ 0x2d1a49,
+ 0x3cd307,
+ 0x260946,
+ 0x2e0246,
+ 0x239006,
+ 0x2bcd05,
+ 0x20d646,
+ 0x3b5c05,
+ 0x35dec8,
+ 0x2a434b,
+ 0x2a0106,
+ 0x39f384,
+ 0x23a1c9,
+ 0x223d04,
+ 0x2e8e08,
+ 0x311707,
+ 0x296484,
+ 0x2d5ec8,
+ 0x2dca44,
+ 0x2bcd44,
+ 0x23d485,
+ 0x341846,
+ 0x239907,
+ 0x22eb83,
+ 0x2ad3c5,
+ 0x33ecc4,
+ 0x371cc6,
+ 0x322f08,
+ 0x384f85,
+ 0x2a4009,
+ 0x207e05,
+ 0x205b08,
+ 0x35c1c7,
+ 0x374688,
+ 0x2d5b07,
+ 0x39e249,
+ 0x25c306,
+ 0x3a0fc6,
+ 0x208c44,
+ 0x20e445,
+ 0x3dce8c,
+ 0x28d7c7,
+ 0x28dc87,
+ 0x3e7188,
+ 0x2b2246,
+ 0x3ddf44,
+ 0x31da44,
+ 0x293409,
+ 0x2e2586,
+ 0x29e487,
+ 0x372a44,
+ 0x2b40c6,
+ 0x3d22c5,
+ 0x2e9107,
+ 0x2ea9c6,
+ 0x262c09,
+ 0x31f9c7,
+ 0x2a76c7,
+ 0x2b3b46,
+ 0x297285,
+ 0x291a88,
+ 0x21b008,
+ 0x375b46,
+ 0x384fc5,
+ 0x2dedc6,
+ 0x203e43,
+ 0x2ab849,
+ 0x33144e,
+ 0x2d5848,
+ 0x2a3888,
+ 0x37594b,
+ 0x2a4246,
+ 0x39f244,
+ 0x247784,
+ 0x33154a,
+ 0x218507,
+ 0x260a05,
+ 0x2103c9,
+ 0x2d9945,
+ 0x3e8dc7,
+ 0x245b84,
+ 0x2900c7,
+ 0x219008,
+ 0x3c0ac6,
+ 0x2d6fc9,
+ 0x2d6b8a,
+ 0x218486,
+ 0x2a9b46,
+ 0x2c1205,
+ 0x3a5dc5,
+ 0x3a9647,
+ 0x251a88,
+ 0x3d2208,
+ 0x245806,
+ 0x3d1445,
+ 0x3e72ce,
+ 0x2b4bc4,
+ 0x2ab945,
+ 0x28b389,
+ 0x31f5c8,
+ 0x29c7c6,
+ 0x2ad78c,
+ 0x2aeb50,
+ 0x2b114f,
+ 0x2b3148,
+ 0x351107,
+ 0x3d9745,
+ 0x239785,
+ 0x239789,
+ 0x2a4f89,
+ 0x322146,
+ 0x304bc7,
+ 0x38bd45,
+ 0x248309,
+ 0x360706,
+ 0x34638d,
+ 0x293749,
+ 0x23d6c4,
+ 0x2d5048,
+ 0x23ddc9,
+ 0x33a806,
+ 0x28d2c5,
+ 0x3a0fc6,
+ 0x36f209,
+ 0x36fb08,
+ 0x204005,
+ 0x2a0504,
+ 0x2ad94b,
+ 0x33a6c5,
+ 0x2502c6,
+ 0x295886,
+ 0x25d146,
+ 0x24e80b,
+ 0x2a4109,
+ 0x3e1485,
+ 0x32d107,
+ 0x2bc286,
+ 0x261986,
+ 0x294d08,
+ 0x2d9b09,
+ 0x36d80c,
+ 0x30cac8,
+ 0x31bb06,
+ 0x3344c3,
+ 0x235f06,
+ 0x240c45,
+ 0x291188,
+ 0x3d0e46,
+ 0x304f88,
+ 0x259605,
+ 0x26bf45,
+ 0x2ddf88,
+ 0x383487,
+ 0x219747,
+ 0x2fb907,
+ 0x31c0c8,
+ 0x351248,
+ 0x2f5f86,
+ 0x2ceac7,
+ 0x21d547,
+ 0x39dfca,
+ 0x205cc3,
+ 0x20bc46,
+ 0x260d05,
+ 0x2854c4,
+ 0x28ea49,
+ 0x39e1c4,
+ 0x200e84,
+ 0x2af3c4,
+ 0x2b16cb,
+ 0x32f7c7,
+ 0x2f9a05,
+ 0x2a7e08,
+ 0x28ba06,
+ 0x28ba08,
+ 0x28fe46,
+ 0x29d2c5,
+ 0x29d805,
+ 0x2a1486,
+ 0x276c48,
+ 0x2a2308,
+ 0x28ec06,
+ 0x2a7c4f,
+ 0x2ab310,
+ 0x3da785,
+ 0x208c03,
+ 0x286385,
+ 0x31c548,
+ 0x2a4e89,
+ 0x3c9a88,
+ 0x21b288,
+ 0x263f08,
+ 0x32f887,
+ 0x28b6c9,
+ 0x305188,
+ 0x3c8fc4,
+ 0x2af248,
+ 0x218009,
+ 0x2cf047,
+ 0x39eb84,
+ 0x3727c8,
+ 0x25278a,
+ 0x32f346,
+ 0x219186,
+ 0x21dd09,
+ 0x2aed87,
+ 0x2e68c8,
+ 0x245c08,
+ 0x3cbac8,
+ 0x2775c5,
+ 0x348d85,
+ 0x252bc5,
+ 0x294f45,
+ 0x2cba47,
+ 0x21dcc5,
+ 0x2db305,
+ 0x21da06,
+ 0x3c99c7,
+ 0x3839c7,
+ 0x252a86,
+ 0x2ec485,
+ 0x2502c6,
+ 0x205005,
+ 0x36d588,
+ 0x320644,
+ 0x2e1086,
+ 0x398084,
+ 0x2d5cc8,
+ 0x2e118a,
+ 0x28f20c,
+ 0x2afd05,
+ 0x30ea86,
+ 0x36d9c6,
+ 0x3b6b46,
+ 0x31bb84,
+ 0x3d2b45,
+ 0x28f707,
+ 0x2aee09,
+ 0x2e6187,
+ 0x773104,
+ 0x773104,
+ 0x32f645,
+ 0x30e584,
+ 0x2acf4a,
+ 0x28b886,
+ 0x2ddf04,
+ 0x3cf605,
+ 0x2cae05,
+ 0x2cd504,
+ 0x2954c7,
+ 0x207d87,
+ 0x2e5bc8,
+ 0x2deec8,
+ 0x204009,
+ 0x320fc8,
+ 0x299a0b,
+ 0x2398c4,
+ 0x34a4c5,
+ 0x2921c5,
+ 0x2fb889,
+ 0x2d9b09,
+ 0x23a0c8,
+ 0x2f0d08,
+ 0x264844,
+ 0x29adc5,
+ 0x20c003,
+ 0x358a05,
+ 0x2ad606,
+ 0x2a8d4c,
+ 0x21b086,
+ 0x28d1c6,
+ 0x29ca45,
+ 0x2f9ac8,
+ 0x2e0a86,
+ 0x279486,
+ 0x219186,
+ 0x22e80c,
+ 0x282384,
+ 0x37058a,
+ 0x29c988,
+ 0x2a8b87,
+ 0x33ebc6,
+ 0x260b87,
+ 0x302f85,
+ 0x297346,
+ 0x361386,
+ 0x37b807,
+ 0x255844,
+ 0x3d7885,
+ 0x28b384,
+ 0x2c0e87,
+ 0x28b5c8,
+ 0x28cb4a,
+ 0x292407,
+ 0x2bc907,
+ 0x351087,
+ 0x2f7e09,
+ 0x2a8d4a,
+ 0x232443,
+ 0x255745,
+ 0x214103,
+ 0x2cfc49,
+ 0x231e08,
+ 0x36ca87,
+ 0x3c9b89,
+ 0x21b106,
+ 0x2050c8,
+ 0x2ca105,
+ 0x24a88a,
+ 0x3a8289,
+ 0x280a09,
+ 0x2e0947,
+ 0x2f6189,
+ 0x213fc8,
+ 0x3d6c46,
+ 0x30ec48,
+ 0x28c3c7,
+ 0x243887,
+ 0x3de287,
+ 0x2e8c88,
+ 0x37f046,
+ 0x252545,
+ 0x28f707,
+ 0x2a9648,
+ 0x3703c4,
+ 0x378a84,
+ 0x2a2d87,
+ 0x2c2687,
+ 0x280c4a,
+ 0x3d6bc6,
+ 0x3d2e4a,
+ 0x2da087,
+ 0x2b4987,
+ 0x3d7944,
+ 0x29b684,
+ 0x2e9006,
+ 0x3cd884,
+ 0x3cd88c,
+ 0x311645,
+ 0x218e49,
+ 0x205c84,
+ 0x2cd5c5,
+ 0x20dcc8,
+ 0x2a23c5,
+ 0x39cd86,
+ 0x2a50c4,
+ 0x2a5fca,
+ 0x2c1f06,
+ 0x3513ca,
+ 0x2b8c07,
+ 0x2a3405,
+ 0x231885,
+ 0x24e20a,
+ 0x28a245,
+ 0x239746,
+ 0x24cf84,
+ 0x2c9406,
+ 0x3a9705,
+ 0x3d0f06,
+ 0x31a70c,
+ 0x36464a,
+ 0x281b04,
+ 0x20e506,
+ 0x2aed87,
+ 0x2ea944,
+ 0x223ec8,
+ 0x3ab986,
+ 0x39f1c9,
+ 0x37d709,
+ 0x2bebc9,
+ 0x20e6c6,
+ 0x28c4c6,
+ 0x30ed87,
+ 0x3742c8,
+ 0x28c2c9,
+ 0x32f7c7,
+ 0x2a7f86,
+ 0x3d0507,
+ 0x34c385,
+ 0x2b4bc4,
+ 0x30e947,
+ 0x21d705,
+ 0x2992c5,
+ 0x393747,
+ 0x252348,
+ 0x3dd6c6,
+ 0x2aa4cd,
+ 0x2abbcf,
+ 0x2b060d,
+ 0x21dc04,
+ 0x23fc46,
+ 0x2ed548,
+ 0x208c05,
+ 0x24e6c8,
+ 0x3b50ca,
+ 0x23d6c4,
+ 0x2cbec6,
+ 0x2b6187,
+ 0x2cde87,
+ 0x22ee89,
+ 0x30ec05,
+ 0x2cd504,
+ 0x2cf8ca,
+ 0x2d6649,
+ 0x2f6287,
+ 0x2aa786,
+ 0x33a806,
+ 0x29ad06,
+ 0x26af46,
+ 0x35a38f,
+ 0x2ed409,
+ 0x24a586,
+ 0x26be86,
+ 0x237789,
+ 0x2cebc7,
+ 0x20ae43,
+ 0x22e986,
+ 0x219d43,
+ 0x35e948,
+ 0x255107,
+ 0x2b3349,
+ 0x2b4588,
+ 0x219888,
+ 0x254d46,
+ 0x22af49,
+ 0x35d745,
+ 0x235e44,
+ 0x2ccac7,
+ 0x3ac7c5,
+ 0x21dc04,
+ 0x3e75c8,
+ 0x2187c4,
+ 0x2ce907,
+ 0x3adf86,
+ 0x242845,
+ 0x2ac2c8,
+ 0x33a6cb,
+ 0x30fc07,
+ 0x24e486,
+ 0x2e1f04,
+ 0x3b5f86,
+ 0x27bb45,
+ 0x21d705,
+ 0x291809,
+ 0x2950c9,
+ 0x2438c4,
+ 0x243905,
+ 0x20e545,
+ 0x24a706,
+ 0x30f808,
+ 0x2d9286,
+ 0x22bf0b,
+ 0x2c5d4a,
+ 0x2d5c05,
+ 0x29d886,
+ 0x236305,
+ 0x3c5b45,
+ 0x2a9247,
+ 0x20bec8,
+ 0x276cc4,
+ 0x25be46,
+ 0x2a2386,
+ 0x214187,
+ 0x322644,
+ 0x290806,
+ 0x23a445,
+ 0x23a449,
+ 0x28c6c4,
+ 0x30bfc9,
+ 0x28ec06,
+ 0x2dc248,
+ 0x20e545,
+ 0x39f445,
+ 0x3d0f06,
+ 0x36d709,
+ 0x21aa49,
+ 0x28d246,
+ 0x31f6c8,
+ 0x35c408,
+ 0x2362c4,
+ 0x2d0084,
+ 0x2d0088,
+ 0x3c7608,
+ 0x35d909,
+ 0x2ad586,
+ 0x219186,
+ 0x339c8d,
+ 0x318346,
+ 0x2dac89,
+ 0x3bcf05,
+ 0x21a006,
+ 0x36fc88,
+ 0x336885,
+ 0x21d584,
+ 0x27bb45,
+ 0x294a08,
+ 0x2acd09,
+ 0x28b444,
+ 0x2d18c6,
+ 0x2eadca,
+ 0x397988,
+ 0x280dc9,
+ 0x28d90a,
+ 0x3c9b06,
+ 0x2abd88,
+ 0x379605,
+ 0x3b4c48,
+ 0x303005,
+ 0x21afc9,
+ 0x33c7c9,
+ 0x23bc42,
+ 0x2a6ec5,
+ 0x292286,
+ 0x28eb47,
+ 0x2854c5,
+ 0x33eac6,
+ 0x317308,
+ 0x2b2246,
+ 0x37a9c9,
+ 0x28dd86,
+ 0x294b88,
+ 0x2be0c5,
+ 0x24c706,
+ 0x385dc8,
+ 0x293288,
+ 0x2790c8,
+ 0x319888,
+ 0x20d644,
+ 0x223803,
+ 0x37ac04,
+ 0x292606,
+ 0x34c3c4,
+ 0x2a37c7,
+ 0x279389,
+ 0x2e1405,
+ 0x245c06,
+ 0x22e986,
+ 0x2a03cb,
+ 0x2cc1c6,
+ 0x237fc6,
+ 0x2e3fc8,
+ 0x328986,
+ 0x2a3203,
+ 0x207083,
+ 0x2b4bc4,
+ 0x238745,
+ 0x303747,
+ 0x28b5c8,
+ 0x28b5cf,
+ 0x28f60b,
+ 0x30f608,
+ 0x2d1946,
+ 0x30f90e,
+ 0x24e643,
+ 0x3036c4,
+ 0x2cc145,
+ 0x2cd386,
+ 0x2a088b,
+ 0x2a47c6,
+ 0x22dd09,
+ 0x242845,
+ 0x248a08,
+ 0x203cc8,
+ 0x21a90c,
+ 0x2b1706,
+ 0x358a46,
+ 0x2d4205,
+ 0x299688,
+ 0x28f205,
+ 0x34eb88,
+ 0x2adb0a,
+ 0x2b0a49,
+ 0x773104,
0x2000c2,
- 0x53216542,
+ 0x53a05842,
0x200382,
- 0x2b1b84,
- 0x201582,
- 0x28d4c4,
- 0x204cc2,
- 0xd903,
+ 0x258104,
+ 0x2026c2,
+ 0x292e44,
+ 0x2048c2,
+ 0xbc03,
0x2003c2,
- 0x202b02,
- 0x793c8,
- 0xe804,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x87c2,
- 0x54202,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x2a042,
- 0x6502,
- 0x4a42,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x2296c3,
- 0x20cb83,
- 0x20f7c3,
- 0x25dd04,
- 0x216543,
- 0x23ec84,
- 0x222bc3,
- 0x2e8fc4,
- 0x343b43,
- 0x2b1087,
- 0x216443,
- 0x20d903,
- 0x2c2308,
- 0x20cb83,
- 0x29fc4b,
- 0x304443,
- 0x24d906,
- 0x213402,
- 0x2fe64b,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x20cb83,
- 0x21b103,
- 0x2072c3,
+ 0x2036c2,
+ 0x7ffc8,
+ 0x45c4,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0xf002,
+ 0x58e02,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x6ca02,
+ 0x9e42,
+ 0x1b02,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x2127c3,
+ 0x21f483,
+ 0x220743,
+ 0x29f804,
+ 0x229f43,
+ 0x241284,
+ 0x224d03,
+ 0x2ef2c4,
+ 0x2e9c43,
+ 0x285787,
+ 0x219c03,
+ 0x20bc03,
+ 0x219d08,
+ 0x21f483,
+ 0x28aa0b,
+ 0x3041c3,
+ 0x216e06,
+ 0x208ec2,
+ 0x2ff38b,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x21f483,
+ 0x21ad03,
+ 0x207743,
0x2000c2,
- 0x793c8,
- 0x235ec5,
- 0x21ec48,
- 0x3585c8,
- 0x216542,
- 0x363605,
- 0x347c07,
- 0x202bc2,
- 0x24d147,
+ 0x7ffc8,
+ 0x232a05,
+ 0x21d788,
+ 0x34fd88,
+ 0x205842,
+ 0x354705,
+ 0x3d0647,
+ 0x203642,
+ 0x2ce747,
0x200382,
- 0x25be87,
- 0x34c049,
- 0x277f48,
- 0x3d0049,
- 0x214182,
- 0x20e107,
- 0x387c84,
- 0x347cc7,
- 0x2be747,
- 0x2687c2,
- 0x216443,
- 0x203742,
- 0x204cc2,
+ 0x262447,
+ 0x22cf89,
+ 0x27c388,
+ 0x3cb949,
+ 0x212c82,
+ 0x203e87,
+ 0x392fc4,
+ 0x3d0707,
+ 0x2c5c47,
+ 0x26dc42,
+ 0x219c03,
+ 0x20f782,
+ 0x2048c2,
0x2003c2,
- 0x208402,
+ 0x20f102,
0x200902,
- 0x202b02,
- 0x2e5245,
- 0x227445,
- 0x16542,
- 0x22bc3,
- 0x216543,
- 0x222bc3,
- 0x22de83,
- 0x343b43,
- 0x20e443,
- 0x2296c3,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x158286,
- 0x55fa5a4b,
- 0x216443,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x175285,
- 0x12b83,
+ 0x2036c2,
+ 0x2eb705,
+ 0x212345,
+ 0x5842,
+ 0x24d03,
+ 0x229f43,
+ 0x224d03,
+ 0x219443,
+ 0x2e9c43,
+ 0x204203,
+ 0x2127c3,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x14fa46,
+ 0x566c744b,
+ 0x219c03,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0xca7c5,
+ 0x11643,
0x101,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x243543,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x2203c3,
- 0x56869306,
- 0x20a83,
- 0x70945,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x6482,
- 0x793c8,
- 0x38c43,
- 0xd903,
- 0x7ca83,
- 0x4f344,
- 0x1480c44,
- 0xf0b45,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x25e043,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x21fc83,
+ 0x5706e786,
+ 0x5483,
+ 0x1739c5,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x7042,
+ 0x7ffc8,
+ 0x361c3,
+ 0xbc03,
+ 0x81983,
+ 0x51a44,
+ 0x1487dc4,
+ 0xf80c5,
0x2000c2,
- 0x397344,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x24cc43,
- 0x2b96c5,
- 0x243543,
- 0x21b283,
- 0x2296c3,
- 0x257743,
- 0x20cb83,
- 0x202b03,
- 0x2192c3,
- 0x201643,
- 0x11d783,
+ 0x32d4c4,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x240a03,
+ 0x235c45,
+ 0x25e043,
+ 0x2280c3,
+ 0x2127c3,
+ 0x25c743,
+ 0x21f483,
+ 0x217083,
+ 0x208d43,
+ 0x205ec3,
+ 0xc8bc3,
0x5c2,
- 0x386c2,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
+ 0x47f42,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
0x2000c2,
- 0x253c43,
- 0x216542,
- 0x3242,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x2296c3,
- 0x20cb83,
- 0x202b02,
- 0x793c8,
- 0x343b43,
- 0x7ca83,
- 0x793c8,
- 0x7ca83,
- 0x2cc803,
- 0x216543,
- 0x23a304,
- 0x222bc3,
- 0x343b43,
- 0x2042c2,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2042c2,
- 0x233243,
- 0x2296c3,
- 0x20cb83,
- 0x2faf43,
- 0x202b03,
+ 0x258843,
+ 0x205842,
+ 0xd02,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x2127c3,
+ 0x21f483,
+ 0x2036c2,
+ 0x7ffc8,
+ 0x2e9c43,
+ 0x81983,
+ 0x7ffc8,
+ 0x81983,
+ 0x2c9ec3,
+ 0x229f43,
+ 0x23b4c4,
+ 0x224d03,
+ 0x2e9c43,
+ 0x203842,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x203842,
+ 0x2335c3,
+ 0x2127c3,
+ 0x21f483,
+ 0x2fe343,
+ 0x217083,
0x2000c2,
- 0x216542,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x24d905,
- 0x1143c6,
- 0x6ff44,
- 0x329c4,
- 0x25dd04,
- 0x213402,
+ 0x205842,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x216e05,
+ 0x157246,
+ 0x762c4,
+ 0x31384,
+ 0x29f804,
+ 0x208ec2,
0x882,
- 0x793c8,
- 0x3242,
- 0x54202,
- 0x2a02,
+ 0x7ffc8,
+ 0xd02,
+ 0x58e02,
+ 0xfc2,
0x2000c2,
- 0x146c05,
- 0x24948,
- 0xe9883,
- 0x216542,
- 0x45c44,
- 0x5b910646,
- 0x1db84,
- 0xc5e4b,
- 0x42746,
- 0x1cdf07,
- 0x174bc9,
- 0x222bc3,
- 0x53188,
- 0x5318b,
- 0x5360b,
- 0x539cb,
- 0x53d0b,
- 0x53fcb,
- 0x5440b,
- 0x18c86,
- 0x343b43,
- 0x154645,
- 0x10e584,
- 0x20b6c3,
- 0x11b487,
- 0x133604,
- 0xed184,
- 0x77984,
- 0x2296c3,
- 0x84e06,
- 0xac8c4,
- 0x7ca83,
- 0x20cb83,
- 0x305504,
- 0x132747,
- 0x113fc9,
- 0xc5c08,
- 0x1c8dc4,
- 0x147e04,
- 0x179dc3,
- 0x13906,
- 0x12248,
- 0x18d445,
- 0x1a1f49,
- 0x39fc3,
- 0x13ea86,
- 0x146c05,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x20d903,
- 0x20cb83,
- 0x304443,
- 0x213402,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x26a7c3,
- 0x21b544,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x2e8fc4,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x24d906,
- 0x222bc3,
- 0x343b43,
- 0x1e803,
- 0x7ca83,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x146c05,
- 0x1cdf07,
- 0x69c3,
- 0x39fc3,
- 0x793c8,
- 0x343b43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x722c3,
- 0x2296c3,
- 0x20cb83,
- 0x5ee16543,
- 0x222bc3,
- 0x2296c3,
- 0x20cb83,
- 0x793c8,
+ 0x145d45,
+ 0x25388,
+ 0xf7c03,
+ 0x205842,
+ 0x48244,
+ 0x5c149406,
+ 0xc344,
+ 0xb2e8b,
+ 0x46a06,
+ 0x84447,
+ 0xb7ac9,
+ 0x224d03,
+ 0x573c8,
+ 0x573cb,
+ 0x5784b,
+ 0x585cb,
+ 0x5890b,
+ 0x58bcb,
+ 0x5900b,
+ 0xeb86,
+ 0x2e9c43,
+ 0x146bc5,
+ 0x172ec4,
+ 0x267c83,
+ 0x1196c7,
+ 0x15a2c6,
+ 0x12fc05,
+ 0x1cde04,
+ 0xf37c4,
+ 0x7f0c4,
+ 0x2127c3,
+ 0x8d346,
+ 0xf9304,
+ 0x81983,
+ 0x21f483,
+ 0x305744,
+ 0x1300c7,
+ 0x156e49,
+ 0xb2c48,
+ 0x1e3f05,
+ 0x1d3204,
+ 0x1d0844,
+ 0x172283,
+ 0x5b646,
+ 0x11448,
+ 0x198185,
+ 0x71c9,
+ 0x13803,
+ 0x10b2c6,
+ 0x145d45,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x20bc03,
+ 0x21f483,
+ 0x3041c3,
+ 0x208ec2,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258103,
+ 0x222d84,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2ef2c4,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x216e06,
+ 0x224d03,
+ 0x2e9c43,
+ 0x1d343,
+ 0x81983,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x145d45,
+ 0x84447,
+ 0x84c3,
+ 0x13803,
+ 0x7ffc8,
+ 0x2e9c43,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x979c3,
+ 0x2127c3,
+ 0x21f483,
+ 0x5f629f43,
+ 0x224d03,
+ 0x2127c3,
+ 0x21f483,
+ 0x7ffc8,
0x2000c2,
- 0x216542,
- 0x216543,
- 0x343b43,
- 0x2296c3,
+ 0x205842,
+ 0x229f43,
+ 0x2e9c43,
+ 0x2127c3,
0x2003c2,
- 0x20cb83,
- 0x33cf47,
- 0x2f67cb,
- 0x2153c3,
- 0x283208,
- 0x331607,
- 0x349506,
- 0x234d45,
- 0x363749,
- 0x24d688,
- 0x37e649,
- 0x3ae5d0,
- 0x37e64b,
- 0x3aaa09,
- 0x2069c3,
- 0x2fed09,
- 0x23b286,
- 0x23b28c,
- 0x235f88,
- 0x3e5c48,
- 0x35c449,
- 0x2cd20e,
- 0x34be0b,
- 0x2c340c,
- 0x203b43,
- 0x279d4c,
- 0x203b49,
- 0x300187,
- 0x23c4cc,
- 0x2c024a,
- 0x21d684,
- 0x21d68d,
- 0x279c08,
- 0x20f7cd,
- 0x28a5c6,
- 0x25dd0b,
- 0x314149,
- 0x2674c7,
- 0x32cdc6,
- 0x3339c9,
- 0x35310a,
- 0x30a088,
- 0x304044,
- 0x2bc2c7,
- 0x24ea07,
- 0x202744,
- 0x2208c4,
- 0x209cc9,
- 0x30d489,
- 0x20a888,
- 0x2303c5,
- 0x2140c5,
- 0x20f086,
- 0x21d549,
- 0x283e4d,
- 0x216d88,
- 0x20ef87,
- 0x234dc8,
- 0x25b186,
- 0x3e11c4,
- 0x26b385,
- 0x3e2f06,
- 0x3e7984,
- 0x203a47,
- 0x20588a,
- 0x216784,
- 0x21a186,
- 0x21a989,
- 0x21a98f,
- 0x21cc4d,
- 0x21e706,
- 0x224550,
- 0x224946,
- 0x226187,
- 0x227f07,
- 0x227f0f,
- 0x229309,
- 0x22cc86,
- 0x22e907,
- 0x22e908,
- 0x22ed09,
- 0x206e88,
- 0x317a87,
- 0x20c903,
- 0x391906,
- 0x37a588,
- 0x2cd4ca,
- 0x204189,
- 0x22cb43,
- 0x363506,
- 0x34ac4a,
- 0x282647,
- 0x2fffca,
- 0x31034e,
- 0x229446,
- 0x3d6847,
- 0x24b006,
- 0x203c06,
- 0x38640b,
- 0x218d8a,
- 0x2f6e0d,
- 0x2f53c7,
- 0x274588,
- 0x274589,
- 0x27458f,
- 0x2fb78c,
- 0x2fb0c9,
- 0x287bce,
- 0x2b118a,
- 0x20c606,
- 0x2e9106,
- 0x30cd4c,
- 0x3bb08c,
- 0x3d8388,
- 0x338487,
- 0x208c45,
- 0x347e84,
- 0x36430e,
- 0x3109c4,
- 0x3406c7,
- 0x36be4a,
- 0x3806d4,
- 0x38a70f,
- 0x2280c8,
- 0x3917c8,
- 0x38c34d,
- 0x38c34e,
- 0x3b4bc9,
- 0x238308,
- 0x23830f,
- 0x23c1cc,
- 0x23c1cf,
- 0x23d147,
- 0x23f90a,
- 0x240acb,
- 0x241348,
- 0x244547,
- 0x24be0d,
- 0x362546,
- 0x21d846,
- 0x247bc9,
- 0x26bac8,
- 0x24db08,
- 0x24db0e,
- 0x26b907,
- 0x308585,
- 0x24f085,
- 0x220744,
- 0x3497c6,
- 0x20a788,
- 0x3a2983,
- 0x2bf30e,
- 0x24c1c8,
- 0x3e534b,
- 0x3c7807,
- 0x2332c5,
- 0x279ec6,
- 0x2ba1c7,
- 0x33e8c8,
- 0x32c449,
- 0x23cb05,
- 0x2925c8,
- 0x22fe06,
- 0x3b3cca,
- 0x364209,
- 0x23c589,
- 0x23c58b,
- 0x33b7c8,
- 0x202609,
- 0x230486,
- 0x3c298a,
- 0x2a104a,
- 0x23fb0c,
- 0x371707,
- 0x277d4a,
- 0x39f78b,
- 0x39f799,
- 0x351a48,
- 0x24d985,
- 0x24bfc6,
- 0x296489,
- 0x250206,
- 0x22b24a,
- 0x2163c6,
- 0x232d44,
- 0x2dce0d,
- 0x32d187,
- 0x232d49,
- 0x252185,
- 0x2522c8,
- 0x252f49,
- 0x254744,
- 0x254e07,
- 0x254e08,
- 0x255287,
- 0x273b48,
- 0x25cac7,
- 0x2dfac5,
- 0x26420c,
- 0x2646c9,
- 0x3b930a,
- 0x266cc9,
- 0x2fee09,
- 0x26700c,
- 0x26974b,
- 0x26ac88,
- 0x26bcc8,
- 0x26f504,
- 0x290988,
- 0x291d49,
- 0x2c0307,
- 0x21abc6,
- 0x2a9607,
- 0x3d4bc9,
- 0x21070b,
- 0x247047,
- 0x21fc47,
- 0x3e3507,
- 0x20f744,
- 0x20f745,
- 0x2e8cc5,
- 0x357f0b,
- 0x30df44,
- 0x3b6648,
- 0x25974a,
- 0x22fec7,
- 0x3e5007,
- 0x299452,
- 0x3d4786,
- 0x239c86,
- 0x340ace,
- 0x3e5786,
- 0x29ddc8,
- 0x29f2cf,
- 0x20fb88,
- 0x243948,
- 0x2e75ca,
- 0x2e75d1,
- 0x2af74e,
- 0x20294a,
- 0x20294c,
- 0x238507,
- 0x238510,
- 0x3d9e48,
- 0x2af945,
- 0x2ba4ca,
- 0x3e79cc,
- 0x2a204d,
- 0x20e446,
- 0x20e447,
- 0x20e44c,
- 0x20f3cc,
- 0x26a98c,
- 0x39304b,
- 0x3a4f04,
- 0x205604,
- 0x2be009,
- 0x37de47,
- 0x361f89,
- 0x2a0e89,
- 0x2bff07,
- 0x2c00c6,
- 0x2c00c9,
- 0x2c04c3,
- 0x2b2fca,
- 0x37a447,
- 0x37b94b,
- 0x2f6c8a,
- 0x25bfc4,
- 0x3ceb46,
- 0x28cd09,
- 0x2f44c4,
- 0x2e4e4a,
- 0x302645,
- 0x2d1b85,
- 0x2d1b8d,
- 0x2d1ece,
- 0x2722c5,
- 0x33bc06,
- 0x24d507,
- 0x25d40a,
- 0x231c86,
- 0x37ee04,
- 0x301887,
- 0x300e4b,
- 0x273847,
- 0x2420c4,
- 0x316546,
- 0x31654d,
- 0x2eba8c,
- 0x3d1a86,
- 0x216f8a,
- 0x221d46,
- 0x227bc8,
- 0x2fd2c7,
- 0x2dafca,
- 0x3e7346,
- 0x28aa83,
- 0x354806,
- 0x213448,
- 0x36dc0a,
- 0x25aa07,
- 0x25aa08,
- 0x2985c4,
- 0x2a5c47,
- 0x31f5c8,
- 0x2f3cc8,
- 0x2f1188,
- 0x32a8ca,
- 0x2efe85,
- 0x2cb207,
- 0x260e13,
- 0x276586,
- 0x38d188,
- 0x22bb49,
- 0x24d008,
- 0x28794b,
- 0x2ca108,
- 0x2eb7c4,
- 0x326e86,
- 0x324186,
- 0x3423c9,
- 0x2dae07,
- 0x264308,
- 0x2aa246,
- 0x200bc4,
- 0x3de805,
- 0x33f188,
- 0x39000a,
- 0x2dca88,
- 0x2e1046,
- 0x2a6a8a,
- 0x36a688,
- 0x3bc6c8,
- 0x2e50c8,
- 0x2e5906,
- 0x2e7d46,
- 0x3b20cc,
- 0x2e8310,
- 0x2e8705,
- 0x20f988,
- 0x288910,
- 0x20f990,
- 0x3ae44e,
- 0x3b1d4e,
- 0x3b1d54,
- 0x3ba5cf,
- 0x3ba986,
- 0x202811,
- 0x209613,
- 0x32cf48,
- 0x363c05,
- 0x283748,
- 0x32d685,
- 0x348fcc,
- 0x2718c9,
- 0x310809,
- 0x2fbfc7,
- 0x368f49,
- 0x3a8747,
- 0x313386,
- 0x26b187,
- 0x2649c5,
- 0x212bc3,
- 0x21e803,
- 0x2433c4,
- 0x21574d,
- 0x3c3dcf,
- 0x200c05,
- 0x348ec6,
- 0x22a447,
- 0x235d07,
- 0x355bc6,
- 0x355bcb,
- 0x2b0505,
- 0x289146,
- 0x3baf07,
- 0x25e109,
- 0x22eb86,
- 0x3881c5,
- 0x20368b,
- 0x20de06,
- 0x22f7c5,
- 0x24fa08,
- 0x2a3b08,
- 0x2b3ccc,
- 0x2b3cd0,
- 0x2b89c9,
- 0x2cad07,
- 0x34de4b,
- 0x2f0c46,
- 0x31794a,
- 0x38cf0b,
- 0x314c4a,
- 0x2f9406,
- 0x2fae05,
- 0x331506,
- 0x292a88,
- 0x3a5c0a,
- 0x38bfdc,
- 0x30450c,
- 0x304808,
- 0x24d905,
- 0x38f6c7,
- 0x2cce46,
- 0x39da45,
- 0x2210c6,
- 0x355d88,
- 0x2d0c47,
- 0x2cd108,
- 0x27664a,
- 0x35b5cc,
- 0x3a2c09,
- 0x35b847,
- 0x243e44,
- 0x204a06,
- 0x2434ca,
- 0x2a0f85,
- 0x22054c,
- 0x220c08,
- 0x236f48,
- 0x32794c,
- 0x33878c,
- 0x35cf89,
- 0x361d87,
- 0x24808c,
- 0x2fce84,
- 0x322a4a,
- 0x3e23cc,
- 0x254fcb,
- 0x255c8b,
- 0x259186,
- 0x25f087,
- 0x238747,
- 0x23874f,
- 0x311a51,
- 0x2ee312,
- 0x25f3cd,
- 0x25f3ce,
- 0x25f70e,
- 0x3ba788,
- 0x3ba792,
- 0x2fc688,
- 0x2b1987,
- 0x259c4a,
- 0x2125c8,
- 0x3e5745,
- 0x2c618a,
- 0x224cc7,
- 0x2f0d84,
- 0x20b5c3,
- 0x23f1c5,
- 0x2e7847,
- 0x306587,
- 0x2a224e,
- 0x3dc44d,
- 0x316209,
- 0x207385,
- 0x34f9c3,
- 0x33e246,
- 0x267c45,
- 0x3e5588,
- 0x22d149,
- 0x24c005,
- 0x24c00f,
- 0x2c5f47,
- 0x234bc5,
- 0x3c81ca,
- 0x20d746,
- 0x246809,
- 0x3599cc,
- 0x37eec9,
- 0x2111c6,
- 0x25954c,
- 0x3357c6,
- 0x30fac8,
- 0x38c686,
- 0x278b86,
- 0x2c6c44,
- 0x386d83,
- 0x3e380a,
- 0x209211,
- 0x2fb28a,
- 0x3e19c5,
- 0x263e87,
- 0x261707,
- 0x2e20c4,
- 0x31f6cb,
- 0x3cfec8,
- 0x2cf7c6,
- 0x23e5c5,
- 0x257104,
- 0x26f9c9,
+ 0x21f483,
+ 0x33cd07,
+ 0x236d4b,
+ 0x219dc3,
+ 0x321e08,
+ 0x374047,
+ 0x3e2986,
+ 0x3112c5,
+ 0x354849,
+ 0x216b88,
+ 0x285b89,
+ 0x285b90,
+ 0x38864b,
+ 0x3aec89,
+ 0x2084c3,
+ 0x221c49,
+ 0x23ca06,
+ 0x23ca0c,
+ 0x232ac8,
+ 0x3ed388,
+ 0x271709,
+ 0x2d094e,
+ 0x22cd4b,
+ 0x2c54cc,
+ 0x2030c3,
+ 0x27f60c,
+ 0x2030c9,
+ 0x3e4347,
+ 0x23e60c,
+ 0x2c714a,
+ 0x259b44,
+ 0x2c084d,
+ 0x27f4c8,
+ 0x3d9ecd,
+ 0x282c06,
+ 0x29f80b,
+ 0x356fc9,
+ 0x26c107,
+ 0x386206,
+ 0x332949,
+ 0x349f8a,
+ 0x3a73c8,
+ 0x303dc4,
+ 0x2c3087,
+ 0x250d47,
+ 0x20a3c4,
+ 0x22d744,
+ 0x387109,
+ 0x3bc989,
+ 0x3d0bc8,
+ 0x32e9c5,
+ 0x212bc5,
+ 0x20da06,
+ 0x2c0709,
+ 0x352bcd,
+ 0x21a108,
+ 0x20d907,
+ 0x311348,
+ 0x24f486,
+ 0x2443c4,
+ 0x269185,
+ 0x3e8c86,
+ 0x3eb4c4,
+ 0x202fc7,
+ 0x20644a,
+ 0x213f04,
+ 0x2183c6,
+ 0x21bf49,
+ 0x21bf4f,
+ 0x21cd0d,
+ 0x21d246,
+ 0x224f90,
+ 0x225386,
+ 0x225c47,
+ 0x226587,
+ 0x22658f,
+ 0x227009,
+ 0x22ca86,
+ 0x22d207,
+ 0x22d208,
+ 0x22e049,
+ 0x3d5848,
+ 0x30b9c7,
+ 0x20e2c3,
+ 0x234e06,
+ 0x32e6c8,
+ 0x2d0c0a,
+ 0x203709,
+ 0x216cc3,
+ 0x354606,
+ 0x25bc8a,
+ 0x244e47,
+ 0x3e418a,
+ 0x34910e,
+ 0x227146,
+ 0x33f0c7,
+ 0x24b806,
+ 0x202546,
+ 0x348b8b,
+ 0x20ec8a,
+ 0x3d7c8d,
+ 0x28c587,
+ 0x27a688,
+ 0x27a689,
+ 0x27a68f,
+ 0x3a784c,
+ 0x3a7b09,
+ 0x278ace,
+ 0x28588a,
+ 0x237d46,
+ 0x2f7486,
+ 0x3b2acc,
+ 0x317fcc,
+ 0x322c88,
+ 0x35b287,
+ 0x224245,
+ 0x3d08c4,
+ 0x34aece,
+ 0x22f544,
+ 0x3405c7,
+ 0x3ad60a,
+ 0x3e6bd4,
+ 0x3ea64f,
+ 0x226748,
+ 0x234cc8,
+ 0x38168d,
+ 0x38168e,
+ 0x235149,
+ 0x342548,
+ 0x34254f,
+ 0x23e30c,
+ 0x23e30f,
+ 0x23f987,
+ 0x2422ca,
+ 0x2445cb,
+ 0x245008,
+ 0x2474c7,
+ 0x253c4d,
+ 0x366a06,
+ 0x2c0a06,
+ 0x249209,
+ 0x272348,
+ 0x24f808,
+ 0x24f80e,
+ 0x236e47,
+ 0x308645,
+ 0x251805,
+ 0x209484,
+ 0x3e2c46,
+ 0x3d0ac8,
+ 0x264283,
+ 0x2c68ce,
+ 0x254008,
+ 0x24fe4b,
+ 0x359547,
+ 0x233645,
+ 0x27f786,
+ 0x2bfb07,
+ 0x32ecc8,
+ 0x330989,
+ 0x23ec45,
+ 0x297e48,
+ 0x230546,
+ 0x3b984a,
+ 0x34adc9,
+ 0x23e6c9,
+ 0x23e6cb,
+ 0x284f88,
+ 0x20a289,
+ 0x2c9806,
+ 0x26c4ca,
+ 0x3d1fca,
+ 0x2424cc,
+ 0x379c87,
+ 0x27c18a,
+ 0x3c6e8b,
+ 0x3c6e99,
+ 0x2d9408,
+ 0x216e85,
+ 0x253e06,
+ 0x36ff09,
+ 0x240186,
+ 0x22ff8a,
+ 0x229dc6,
+ 0x20a6c4,
+ 0x2e2e4d,
+ 0x20a6c7,
+ 0x325f89,
+ 0x255f05,
+ 0x256dc8,
+ 0x257189,
+ 0x259344,
+ 0x259a47,
+ 0x259a48,
+ 0x25a107,
+ 0x279c48,
+ 0x260787,
+ 0x2e5885,
+ 0x26888c,
+ 0x268c89,
+ 0x31b2ca,
+ 0x26b909,
+ 0x221d49,
+ 0x26bc4c,
+ 0x26ef8b,
+ 0x270f48,
+ 0x272548,
+ 0x275904,
+ 0x295f08,
+ 0x2975c9,
+ 0x2c7207,
+ 0x21c186,
+ 0x2af587,
+ 0x2fbc89,
+ 0x20ffcb,
+ 0x2511c7,
+ 0x21f507,
+ 0x2b8d47,
+ 0x3d9e44,
+ 0x3d9e45,
+ 0x2eefc5,
+ 0x357dcb,
+ 0x208f44,
+ 0x3b6988,
+ 0x25d44a,
+ 0x230607,
+ 0x3ecf87,
+ 0x29fc92,
+ 0x28afc6,
+ 0x2389c6,
+ 0x33564e,
+ 0x28c886,
+ 0x2a4c08,
+ 0x2a5acf,
+ 0x3da288,
+ 0x3b4608,
+ 0x3ae48a,
+ 0x3ae491,
+ 0x2b424e,
+ 0x26524a,
+ 0x26524c,
+ 0x265a07,
+ 0x342750,
+ 0x3d8948,
+ 0x2b4445,
+ 0x2bfe0a,
+ 0x3eb50c,
+ 0x2b84cd,
+ 0x204206,
+ 0x204207,
+ 0x20420c,
+ 0x20e80c,
+ 0x3a864c,
+ 0x2c340b,
+ 0x3ab384,
+ 0x21de84,
+ 0x2c4d89,
+ 0x31dac7,
+ 0x3ead89,
+ 0x288509,
+ 0x2c6e07,
+ 0x2c6fc6,
+ 0x2c6fc9,
+ 0x2c73c3,
+ 0x2b234a,
+ 0x32e587,
+ 0x20c0cb,
+ 0x3d7b0a,
+ 0x262584,
+ 0x2128c6,
+ 0x292689,
+ 0x368784,
+ 0x2eb30a,
+ 0x240d85,
+ 0x2d7a85,
+ 0x2d7a8d,
+ 0x2d7dce,
+ 0x31c3c5,
+ 0x33b486,
+ 0x216a07,
+ 0x24ecca,
+ 0x22f846,
+ 0x27f1c4,
+ 0x2fb147,
+ 0x2e0d4b,
+ 0x3d5d07,
+ 0x3b55c4,
+ 0x3c8586,
+ 0x3c858d,
+ 0x2f208c,
+ 0x212686,
+ 0x21a30a,
+ 0x2281c6,
+ 0x222088,
+ 0x3b2f47,
+ 0x22790a,
+ 0x23e186,
+ 0x286443,
+ 0x286446,
+ 0x220d48,
+ 0x375c0a,
+ 0x2a0207,
+ 0x2a0208,
+ 0x2a2844,
+ 0x28b1c7,
+ 0x36a3c8,
+ 0x2dbb08,
+ 0x31a988,
+ 0x35a6ca,
+ 0x2f7305,
+ 0x2bbec7,
+ 0x265093,
+ 0x27d886,
+ 0x2472c8,
+ 0x22a349,
+ 0x2ce608,
+ 0x254dcb,
+ 0x2cfe88,
+ 0x2e0e84,
+ 0x2de086,
+ 0x323fc6,
+ 0x341689,
+ 0x2e0c07,
+ 0x268988,
+ 0x297446,
+ 0x393644,
+ 0x32df05,
+ 0x3d98c8,
+ 0x34a9ca,
+ 0x2e2ac8,
+ 0x2e6e06,
+ 0x2abf8a,
+ 0x203b08,
+ 0x2e1908,
+ 0x2eb588,
+ 0x2ec146,
+ 0x2ed746,
+ 0x33c00c,
+ 0x2edcd0,
+ 0x2ee0c5,
+ 0x2bb0c8,
+ 0x2bb0d0,
+ 0x3da090,
+ 0x285a0e,
+ 0x33bc8e,
+ 0x33bc94,
+ 0x3b244f,
+ 0x3b2806,
+ 0x3bef11,
+ 0x3ed913,
+ 0x20a488,
+ 0x20b405,
+ 0x3cbf08,
+ 0x332c05,
+ 0x3e244c,
+ 0x2166c9,
+ 0x22f389,
+ 0x3b9c47,
+ 0x3495c9,
+ 0x35dbc7,
+ 0x207586,
+ 0x268f87,
+ 0x201245,
+ 0x211683,
+ 0x21d343,
+ 0x23d384,
+ 0x21338d,
+ 0x331e0f,
+ 0x393685,
+ 0x2165c6,
+ 0x22bbc7,
+ 0x232847,
+ 0x2c5886,
+ 0x2c588b,
+ 0x2b5485,
+ 0x213786,
+ 0x3a7107,
+ 0x261449,
+ 0x226e86,
+ 0x310b85,
+ 0x381d4b,
+ 0x3cf886,
+ 0x218b85,
+ 0x240a88,
+ 0x28ad88,
+ 0x2a184c,
+ 0x2a1850,
+ 0x2ae909,
+ 0x2b6c07,
+ 0x2cb48b,
+ 0x2d8346,
+ 0x30b88a,
+ 0x24704b,
+ 0x34bc8a,
+ 0x361806,
+ 0x2fe205,
+ 0x32e2c6,
+ 0x28df48,
+ 0x2c760a,
+ 0x38131c,
+ 0x33194c,
+ 0x304288,
+ 0x216e05,
+ 0x288dc7,
+ 0x2d0586,
+ 0x38bfc5,
+ 0x220106,
+ 0x2c5a48,
+ 0x2d68c7,
+ 0x2d0848,
+ 0x256f0a,
+ 0x38a5cc,
+ 0x3d8109,
+ 0x384347,
+ 0x2cdc04,
+ 0x2518c6,
+ 0x3b418a,
+ 0x288605,
+ 0x22d3cc,
+ 0x22da88,
+ 0x2fd6c8,
+ 0x30a50c,
+ 0x35c98c,
+ 0x3963c9,
+ 0x3eab87,
+ 0x251f0c,
+ 0x22b704,
+ 0x306dca,
+ 0x227d8c,
+ 0x28400b,
+ 0x259e4b,
+ 0x25ce86,
+ 0x263407,
+ 0x265507,
+ 0x34298f,
+ 0x312151,
+ 0x2f47d2,
+ 0x26550d,
+ 0x26550e,
+ 0x26584e,
+ 0x3b2608,
+ 0x3b2612,
+ 0x230e48,
+ 0x257f07,
+ 0x25e70a,
+ 0x251d48,
+ 0x28c845,
+ 0x2cb88a,
+ 0x225707,
+ 0x2e7cc4,
+ 0x254a43,
+ 0x2417c5,
+ 0x3ae707,
+ 0x2fce87,
+ 0x2b86ce,
+ 0x365d4d,
+ 0x3c8249,
+ 0x207805,
+ 0x31e6c3,
+ 0x33e006,
+ 0x26c905,
+ 0x250088,
+ 0x385989,
+ 0x224805,
+ 0x253e4f,
+ 0x2b2f87,
+ 0x311145,
+ 0x359f0a,
+ 0x3daa46,
+ 0x3917c9,
+ 0x353c8c,
+ 0x366c49,
+ 0x3ec046,
+ 0x25d24c,
+ 0x3345c6,
+ 0x3bf308,
+ 0x239546,
+ 0x27cfc6,
+ 0x2cc344,
+ 0x3c39c3,
+ 0x3e954a,
+ 0x250491,
+ 0x3a7cca,
+ 0x26b245,
+ 0x26f947,
+ 0x265cc7,
+ 0x2d54c4,
+ 0x36a4cb,
+ 0x3cb7c8,
+ 0x2d5146,
+ 0x3e7205,
+ 0x277944,
+ 0x268189,
0x2008c4,
- 0x218407,
- 0x37e8c5,
- 0x37e8c7,
- 0x340d05,
- 0x212483,
- 0x2b1848,
- 0x2484ca,
- 0x235f03,
- 0x235f0a,
- 0x2ae286,
- 0x24bd8f,
- 0x26b889,
- 0x2bf290,
- 0x2e2248,
- 0x2e1809,
- 0x2a5007,
- 0x3164cf,
- 0x3c5fc4,
- 0x2e9044,
- 0x2247c6,
- 0x25d8c6,
- 0x252c0a,
- 0x24cb06,
- 0x2bcc47,
- 0x317dc8,
- 0x317fc7,
- 0x3196c7,
- 0x31aa0a,
- 0x319fcb,
- 0x271385,
- 0x2edf48,
- 0x20c183,
- 0x3c17cc,
- 0x2089cf,
- 0x22158d,
- 0x35e207,
- 0x236c89,
- 0x35d247,
- 0x2cbd48,
- 0x3808cc,
- 0x2eb6c8,
- 0x3e16c8,
- 0x33438e,
- 0x345b94,
- 0x3460a4,
- 0x360d8a,
- 0x37ea8b,
- 0x3a8804,
- 0x3a8809,
- 0x2c6848,
- 0x24fe05,
- 0x3a248a,
- 0x2b39c7,
- 0x258bc4,
- 0x253c43,
- 0x216543,
- 0x23ec84,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x243543,
- 0x216443,
- 0x2e8306,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x21f6c3,
+ 0x3ebe47,
+ 0x333505,
+ 0x333507,
+ 0x335885,
+ 0x25f3c3,
+ 0x257dc8,
+ 0x27988a,
+ 0x22eb83,
+ 0x232a4a,
+ 0x3bd7c6,
+ 0x253bcf,
+ 0x272109,
+ 0x2c6850,
+ 0x2d5648,
+ 0x2e7709,
+ 0x2aa307,
+ 0x3c850f,
+ 0x3c9f44,
+ 0x2ef344,
+ 0x20b786,
+ 0x2f0686,
+ 0x26204a,
+ 0x256186,
+ 0x2c3a87,
+ 0x315808,
+ 0x315a07,
+ 0x3170c7,
+ 0x318c4a,
+ 0x3179cb,
+ 0x23ab05,
+ 0x2f4408,
+ 0x2098c3,
+ 0x3d458c,
+ 0x386b0f,
+ 0x22404d,
+ 0x29d4c7,
+ 0x243449,
+ 0x396687,
+ 0x2d0f88,
+ 0x3e6dcc,
+ 0x301748,
+ 0x24a2c8,
+ 0x33314e,
+ 0x344cd4,
+ 0x3451e4,
+ 0x364b8a,
+ 0x388ecb,
+ 0x35dc84,
+ 0x35dc89,
+ 0x2cbf48,
+ 0x252245,
+ 0x373e4a,
+ 0x3c9047,
+ 0x285584,
+ 0x258843,
+ 0x229f43,
+ 0x241284,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x25e043,
+ 0x219c03,
+ 0x2edcc6,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x202783,
0x2000c2,
- 0x253c43,
- 0x216542,
- 0x216543,
- 0x23ec84,
- 0x222bc3,
- 0x343b43,
- 0x243543,
- 0x2e8306,
- 0x2296c3,
- 0x20cb83,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
- 0x606296c3,
- 0x7ca83,
- 0x20cb83,
- 0x60a01704,
- 0xc1442,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
+ 0x258843,
+ 0x205842,
+ 0x229f43,
+ 0x241284,
+ 0x224d03,
+ 0x2e9c43,
+ 0x25e043,
+ 0x2edcc6,
+ 0x2127c3,
+ 0x21f483,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x258843,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
0x2000c2,
- 0x28bb03,
- 0x216542,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x204182,
- 0x204042,
- 0x216542,
- 0x216543,
- 0x2080c2,
+ 0x289e03,
+ 0x205842,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x203702,
+ 0x2035c2,
+ 0x205842,
+ 0x229f43,
+ 0x208542,
0x2005c2,
- 0x2b1b84,
- 0x28d4c4,
- 0x233ec2,
- 0x21b544,
+ 0x258104,
+ 0x292e44,
+ 0x230a02,
+ 0x222d84,
0x2003c2,
- 0x20cb83,
- 0x21f6c3,
- 0x259186,
- 0x22a042,
- 0x204a42,
- 0x208f02,
- 0x61e0fb83,
- 0x62202943,
- 0x62186,
- 0x62186,
- 0x25dd04,
- 0x20d903,
- 0x1a16cd,
- 0xa60a,
- 0x1a02cc,
- 0x8d34c,
- 0x62c691cf,
- 0x7074d,
- 0x15c104,
- 0x75104,
- 0xffd44,
- 0x146c05,
- 0x95d89,
- 0x17488c,
- 0x34347,
- 0x17f06,
- 0x1f2c8,
- 0x22a87,
- 0x29e88,
- 0x1beaca,
- 0x1e1c47,
- 0x174ac9,
- 0x632ea205,
- 0xea209,
- 0x6343df0b,
- 0x123308,
- 0x3ecb,
- 0x17ce88,
- 0x18484a,
- 0x132bce,
- 0x6397448a,
- 0x12808d,
- 0x1b4bcd,
- 0x144ce0b,
- 0xeb94a,
- 0x1db84,
- 0x53846,
- 0x89288,
- 0x1dcf08,
- 0x3e1c7,
- 0x1e485,
- 0x63eabe08,
- 0x1d74c7,
- 0x51b89,
- 0xf4547,
- 0x1c74c8,
- 0x32649,
- 0x48404,
- 0x48985,
- 0xc9ce,
- 0x1402c7,
- 0x6462cd86,
- 0xb8d0d,
- 0x1cdd88,
- 0xedb48,
- 0x64b7cb46,
- 0x6557cb48,
- 0xb3588,
- 0x13d150,
- 0x5fc8c,
- 0x70607,
- 0x71b07,
- 0x75c07,
- 0x7c947,
- 0xc342,
- 0x1d8707,
- 0x18f4c,
- 0x116b05,
- 0xb8847,
- 0xb3b86,
- 0xb4e49,
- 0xb7288,
- 0x1ec82,
+ 0x21f483,
+ 0x202783,
+ 0x25ce86,
+ 0x26ca02,
+ 0x201b02,
+ 0x22a742,
+ 0x61e12d83,
+ 0x62265243,
+ 0x66746,
+ 0x66746,
+ 0x29f804,
+ 0x20bc03,
+ 0x2acd,
+ 0x1d094a,
+ 0x1d39cc,
+ 0x92ccc,
+ 0x62c6e64f,
+ 0x1cc94d,
+ 0x713c4,
+ 0x7b204,
+ 0x161cc4,
+ 0x145d45,
+ 0x98409,
+ 0xb778c,
+ 0x110947,
+ 0x16906,
+ 0x1eb88,
+ 0x24bc7,
+ 0x286c8,
+ 0x1c14ca,
+ 0x1145c7,
+ 0xb79c9,
+ 0x632f8c05,
+ 0xf8c09,
+ 0x634404cb,
+ 0x125c88,
+ 0x137dcb,
+ 0x344b,
+ 0x182bc8,
+ 0x13054a,
+ 0x17d3ce,
+ 0x638b738a,
+ 0x1e544d,
+ 0x3514d,
+ 0x14ce40b,
+ 0xf1f4a,
+ 0xc344,
+ 0x8ef86,
+ 0x19f508,
+ 0xd1e88,
+ 0x40787,
+ 0x16245,
+ 0x1e0507,
+ 0xa54c9,
+ 0x1cd787,
+ 0x1db408,
+ 0x31009,
+ 0x15f9c4,
+ 0x53705,
+ 0x3810e,
+ 0x1401c7,
+ 0x63e26c46,
+ 0xbe10d,
+ 0x1cd608,
+ 0xf4008,
+ 0x6429ed46,
+ 0x64d82888,
+ 0x106b8a,
+ 0xb2908,
+ 0x13cf10,
+ 0x6388c,
+ 0x76987,
+ 0x77d47,
+ 0x7bd87,
+ 0x81847,
+ 0xd9c2,
+ 0x1da407,
+ 0xee4c,
+ 0x1e1905,
+ 0xbd847,
+ 0xb6ac6,
+ 0xb92c9,
+ 0xbb988,
+ 0x1d7c2,
0x5c2,
- 0x190a86,
- 0x67cb,
- 0x6ac6,
- 0x15c9c4,
- 0x10f887,
- 0x5e789,
- 0x932c9,
- 0x1bc248,
- 0x54202,
- 0x1971c9,
- 0x17988,
- 0x104e4a,
- 0x65ada54b,
- 0x145149,
- 0x12506,
- 0xdf889,
- 0xeb8c7,
- 0xec009,
- 0xed548,
- 0xeeac7,
- 0xefe09,
- 0xf2185,
- 0xf2550,
- 0x1e84c6,
- 0x10f7c5,
- 0x120047,
- 0xb6a4d,
- 0x4ab45,
- 0xfec06,
- 0xff487,
- 0x105518,
- 0xf48c8,
- 0x80d4a,
- 0x4a02,
- 0x663a540b,
- 0x666df98a,
- 0x55a4a,
- 0x6334d,
- 0x1702,
- 0xd9c46,
- 0x30846,
- 0xa7248,
- 0xb700a,
- 0x46c88,
- 0x79289,
- 0x118d88,
- 0x6f68e,
- 0x16208,
- 0x13e247,
- 0x66bb0284,
- 0x12764d,
- 0x10ba05,
- 0x1a2f48,
- 0x4fec8,
- 0x66eaf2c8,
- 0x114786,
- 0x6502,
- 0xcf5c4,
- 0x110b46,
- 0x6724b348,
- 0x13906,
- 0x678ddecb,
- 0xe042,
- 0xacc09,
- 0x12d408,
- 0x164647,
- 0x35b4a,
- 0x40407,
+ 0x19ab46,
+ 0x1d6ecb,
+ 0x1d71c6,
+ 0x71c84,
+ 0xcabc7,
+ 0x56a09,
+ 0x90249,
+ 0x1c03c8,
+ 0x58e02,
+ 0x12d349,
+ 0x15288,
+ 0xfff4a,
+ 0xd28c8,
+ 0x652e034b,
+ 0x162d09,
+ 0x51c86,
+ 0xe5649,
+ 0xf1ec7,
+ 0xf2609,
+ 0xf3948,
+ 0xf5707,
+ 0xf7289,
+ 0xf9d05,
+ 0xfa0d0,
+ 0x1c5e46,
+ 0xcab05,
+ 0xd5247,
+ 0x12634d,
+ 0x65ac9683,
+ 0x4d385,
+ 0x2e6c6,
+ 0xff7c7,
+ 0x105758,
+ 0x98d08,
+ 0x4c08a,
+ 0x152f8e,
+ 0x9942,
+ 0x65f5f74b,
+ 0x662e574a,
+ 0x59c0a,
+ 0x6a90d,
+ 0x33c2,
+ 0xdfa46,
+ 0x18a46,
+ 0xac788,
+ 0xbb70a,
+ 0x566c8,
+ 0x7fe89,
+ 0x1167c8,
+ 0x75a8e,
+ 0x29c08,
+ 0x13e007,
+ 0x6669ec84,
+ 0xd3f0d,
+ 0x10df85,
+ 0x1735c8,
+ 0x3fe48,
+ 0x66888d0a,
+ 0x66eb3dc8,
+ 0x1133c6,
+ 0x9e42,
+ 0xa6f44,
+ 0x6d586,
+ 0x67045f08,
+ 0x5b646,
+ 0x678c200b,
+ 0x4182,
+ 0x154a09,
+ 0x135c08,
+ 0x14b207,
+ 0x3268a,
+ 0x118a87,
0x401,
0x81,
- 0x183c47,
- 0x116348,
- 0x642c1503,
- 0x1616c4,
- 0xc1508,
- 0xc1708,
- 0xc1908,
- 0x69c07,
- 0x9b583,
- 0x64e40644,
- 0x652a0803,
+ 0x18e907,
+ 0x1c8388,
+ 0xc7e88,
+ 0xc8088,
+ 0xc8288,
+ 0x6fcc7,
+ 0xb1fc3,
+ 0x64644084,
+ 0x64aa6b83,
0xc1,
- 0x267c6,
+ 0x39d46,
0xc1,
0x201,
- 0x267c6,
- 0x9b583,
- 0x65f36fc4,
- 0x18b2c4,
- 0x1a845,
- 0x88e45,
- 0x10f9c4,
- 0x16684,
- 0x54644,
- 0x1c4b88,
- 0x1866cc,
- 0xe01,
- 0x192c3,
- 0x27804,
- 0x1c4b88,
- 0x677c4b88,
- 0x674c3,
- 0x79943,
- 0x27d47,
- 0x5f07,
- 0x156d145,
- 0x57e04,
- 0x10dfc7,
- 0x16542,
- 0x88e04,
- 0x21d684,
- 0x216543,
- 0x256d44,
- 0x2b1b84,
- 0x2296c3,
- 0x22ba05,
- 0x2203c3,
- 0x24c343,
- 0x355b45,
- 0x201643,
- 0x1df83,
- 0x68a16543,
- 0x222bc3,
- 0x56d44,
- 0x4f03,
- 0x343b43,
+ 0x39d46,
+ 0xb1fc3,
+ 0x656212c4,
+ 0x196f84,
+ 0x1fe85,
+ 0x2c945,
+ 0xcad04,
+ 0x2a084,
+ 0x59244,
+ 0x1434307,
+ 0x1421207,
+ 0x1c8bc8,
+ 0x148e4c,
+ 0xc41,
+ 0x8d43,
+ 0x2c684,
+ 0xef885,
+ 0x1c8bc8,
+ 0x677c8bc8,
+ 0x54e83,
+ 0x80383,
+ 0x16c43,
+ 0x22207,
+ 0x5ec7,
+ 0x145e305,
+ 0x5d8c4,
+ 0x76ac7,
+ 0x5842,
+ 0x2c904,
+ 0x1b01ca,
+ 0x259b44,
+ 0x229f43,
+ 0x25b9c4,
+ 0x258104,
+ 0x2127c3,
+ 0x22a205,
+ 0x21fc83,
+ 0x23ffc3,
+ 0x32e885,
+ 0x205ec3,
+ 0x15d43,
+ 0x68e29f43,
+ 0x224d03,
+ 0x5b9c4,
+ 0x4b03,
+ 0x2e9c43,
0x200181,
- 0x1b283,
- 0x216443,
- 0x28d4c4,
- 0x21b544,
- 0x2296c3,
- 0x57743,
- 0x20cb83,
- 0x202b03,
- 0x793c8,
+ 0x280c3,
+ 0x219c03,
+ 0x292e44,
+ 0x222d84,
+ 0x2127c3,
+ 0x5c743,
+ 0x21f483,
+ 0x217083,
+ 0x7ffc8,
0x2000c2,
- 0x253c43,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
+ 0x258843,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
0x2005c2,
- 0x2b1b84,
- 0x243543,
- 0x216443,
- 0x2296c3,
- 0x20d903,
- 0x20cb83,
- 0x201643,
- 0x8904,
- 0x793c8,
- 0xf0007,
- 0x16542,
- 0x13f105,
- 0x5fdcf,
- 0xfa946,
- 0x1472588,
- 0x1190ce,
- 0x69a0bc42,
- 0x20bc88,
- 0x20ad46,
- 0x257f86,
- 0x39a587,
- 0x69e00c82,
- 0x6a2bf108,
- 0x22588a,
- 0x270088,
+ 0x258104,
+ 0x25e043,
+ 0x219c03,
+ 0x2127c3,
+ 0x20bc03,
+ 0x21f483,
+ 0x205ec3,
+ 0x186a44,
+ 0x7ffc8,
+ 0xfd147,
+ 0x5842,
+ 0x12de85,
+ 0x639cf,
+ 0x1e50c6,
+ 0x1475dc8,
+ 0x116ace,
+ 0x69e087c2,
+ 0x2373c8,
+ 0x3d1086,
+ 0x25da46,
+ 0x3a33c7,
+ 0x6a204cc2,
+ 0x6a6c66c8,
+ 0x22ad4a,
+ 0x276408,
0x200ac2,
- 0x37b789,
- 0x2713c7,
- 0x21ab46,
- 0x2b1589,
- 0x2cb344,
- 0x349406,
- 0x2d8d04,
- 0x223984,
- 0x263789,
- 0x3e2106,
- 0x236b05,
- 0x274145,
- 0x3e04c7,
- 0x2d3b87,
- 0x2d8684,
- 0x322006,
- 0x3061c5,
- 0x20b585,
- 0x238cc5,
- 0x337047,
- 0x3c7645,
- 0x2533c9,
- 0x3411c5,
- 0x33ea04,
- 0x231bc7,
- 0x379ece,
- 0x208509,
- 0x340989,
- 0x36ce06,
- 0x249048,
- 0x370e4b,
- 0x2ab90c,
- 0x31a746,
- 0x2c32c7,
- 0x2f19c5,
- 0x31270a,
- 0x20a989,
- 0x201189,
- 0x207d06,
- 0x3bacc5,
- 0x24f485,
- 0x385e09,
- 0x238e4b,
- 0x3871c6,
- 0x352106,
- 0x20ef84,
- 0x323bc6,
- 0x308608,
- 0x3cd246,
- 0x228d06,
- 0x204b88,
- 0x206347,
- 0x207ac9,
- 0x20a245,
- 0x793c8,
- 0x3d7444,
- 0x319c44,
- 0x213f45,
- 0x344589,
- 0x22adc7,
- 0x22adcb,
- 0x22c88a,
- 0x232345,
- 0x6a606e82,
- 0x2f6b47,
- 0x6aa34fc8,
- 0x207f47,
- 0x21c245,
- 0x2c858a,
- 0x16542,
- 0x289c0b,
- 0x28ab0a,
- 0x22bd06,
- 0x2122c3,
- 0x214ccd,
- 0x3c338c,
- 0x3dec0d,
- 0x29e685,
- 0x2bdd45,
- 0x3a29c7,
- 0x214609,
- 0x225786,
- 0x24c985,
- 0x37f7c8,
- 0x2d9c83,
- 0x3588c8,
- 0x323ac8,
- 0x39f407,
- 0x3c7188,
- 0x2251c9,
- 0x2d7a47,
- 0x2f6347,
- 0x36cfc8,
- 0x37b644,
- 0x37b647,
- 0x28a4c8,
- 0x361486,
- 0x205acf,
- 0x323607,
- 0x321b06,
- 0x361ec5,
- 0x22c3c3,
- 0x250b47,
- 0x251243,
- 0x255446,
- 0x257d06,
- 0x25a606,
- 0x29c885,
- 0x273b43,
- 0x396e48,
- 0x38b949,
- 0x3a3c8b,
- 0x25a788,
- 0x25c785,
- 0x25eb45,
- 0x6ae5c082,
- 0x26b249,
- 0x3d1907,
- 0x2891c5,
- 0x263687,
- 0x264dc6,
- 0x3b2605,
- 0x267a8b,
- 0x26ac84,
- 0x26fc45,
- 0x26fd87,
- 0x281a06,
- 0x281e45,
- 0x290dc7,
- 0x291487,
- 0x2ae244,
- 0x37468a,
- 0x297688,
- 0x371109,
- 0x2acac5,
- 0x347486,
- 0x3087ca,
- 0x274046,
- 0x23b8c7,
- 0x2780cd,
- 0x2b0049,
- 0x394d85,
- 0x37d287,
- 0x32bbc8,
- 0x36c888,
- 0x3c3ac7,
- 0x3ce246,
- 0x22d347,
- 0x257783,
- 0x357f04,
- 0x380f85,
- 0x3b1447,
- 0x3bbe49,
- 0x287f08,
- 0x23b7c5,
- 0x382fc4,
- 0x2574c5,
- 0x26510d,
- 0x200cc2,
- 0x221ec6,
- 0x2f8e06,
- 0x33f34a,
- 0x39e886,
- 0x3afc45,
- 0x2d91c5,
- 0x2d91c7,
- 0x3b3b0c,
- 0x2b340a,
- 0x298d86,
- 0x2e7c45,
- 0x323a06,
- 0x299287,
- 0x29ab06,
- 0x29c78c,
- 0x2b16c9,
- 0x6b226c47,
- 0x29f685,
- 0x29f686,
- 0x2a0288,
- 0x24c885,
- 0x2b0785,
- 0x2b2048,
- 0x2b224a,
- 0x6b6870c2,
- 0x6ba10f82,
- 0x368b05,
- 0x317b83,
- 0x23d9c8,
- 0x20b383,
- 0x2b24c4,
- 0x24694b,
- 0x2231c8,
- 0x2c1bc8,
- 0x6bf4a9c9,
- 0x2b8309,
- 0x2b8c06,
- 0x2b9e48,
- 0x2ba049,
- 0x2ba946,
- 0x2baac5,
- 0x251986,
- 0x2bb089,
- 0x2d46c7,
- 0x24e2c6,
- 0x273307,
- 0x37bd07,
- 0x39d584,
- 0x6c2f4bc9,
- 0x39dc88,
- 0x2bf008,
- 0x200e07,
- 0x2dc706,
- 0x20db89,
- 0x257f47,
- 0x3c840a,
- 0x3ce388,
- 0x21f107,
- 0x221886,
- 0x29ac4a,
- 0x3a6c88,
- 0x2f8885,
- 0x22f6c5,
- 0x31bd47,
- 0x324849,
- 0x32864b,
- 0x3bc408,
- 0x341249,
- 0x25b607,
- 0x2cdbcc,
- 0x2ce30c,
- 0x2ce60a,
- 0x2ce88c,
- 0x2d8888,
- 0x2d8a88,
- 0x2d8c84,
- 0x2d9409,
- 0x2d9649,
- 0x2d988a,
- 0x2d9b09,
- 0x2d9e87,
- 0x3cb8cc,
- 0x3e7f06,
- 0x277a88,
- 0x274106,
- 0x392b46,
- 0x394c87,
- 0x3ab788,
- 0x3499cb,
- 0x207e07,
- 0x263fc9,
- 0x28d5c9,
- 0x252907,
- 0x24b5c4,
- 0x26bfc7,
- 0x2d2bc6,
- 0x218946,
- 0x217145,
- 0x2db8c8,
- 0x310704,
- 0x310706,
- 0x2b32cb,
- 0x266749,
- 0x25b246,
- 0x228f09,
- 0x214006,
- 0x38f0c8,
- 0x271f43,
- 0x3bae45,
- 0x218a89,
- 0x3e97c5,
- 0x308104,
- 0x3b7146,
- 0x36aa05,
- 0x260006,
- 0x31c407,
- 0x2109c6,
- 0x2374cb,
- 0x3c2887,
- 0x267786,
- 0x27e3c6,
- 0x3e0586,
- 0x2d8649,
- 0x20308a,
- 0x2cfdc5,
- 0x2fcb0d,
- 0x2b2346,
- 0x259946,
- 0x2e2146,
- 0x227b45,
- 0x2f2847,
- 0x233587,
- 0x27ec0e,
- 0x216443,
- 0x2dc6c9,
- 0x3a1c09,
- 0x312b07,
- 0x276e87,
- 0x291945,
- 0x2f3e45,
- 0x6c609e0f,
- 0x2e1a47,
- 0x2e1c08,
- 0x2e1f04,
- 0x2e2446,
- 0x6ca4f102,
- 0x2e5b86,
+ 0x32e3c9,
+ 0x23ab47,
+ 0x21c106,
+ 0x257b09,
+ 0x2bc004,
+ 0x3e2886,
+ 0x2deb04,
+ 0x20de84,
+ 0x267f09,
+ 0x314a86,
+ 0x2bb4c5,
+ 0x27a245,
+ 0x235987,
+ 0x2d2187,
+ 0x305344,
+ 0x35eb06,
+ 0x2e88c5,
+ 0x3d7605,
+ 0x236245,
+ 0x24f647,
+ 0x359385,
+ 0x257609,
+ 0x372385,
+ 0x32ee04,
+ 0x22f787,
+ 0x3ce14e,
+ 0x209a09,
+ 0x335509,
+ 0x3681c6,
+ 0x24b088,
+ 0x3793cb,
+ 0x3bd38c,
+ 0x323ac6,
+ 0x2c5387,
+ 0x2f9185,
+ 0x30e20a,
+ 0x3d0cc9,
+ 0x20aa89,
+ 0x208186,
+ 0x3a6ec5,
+ 0x251b85,
+ 0x371809,
+ 0x2363cb,
+ 0x239186,
+ 0x353486,
+ 0x20d904,
+ 0x241f86,
+ 0x3086c8,
+ 0x3d38c6,
+ 0x242d46,
+ 0x204788,
+ 0x206f07,
+ 0x207f49,
+ 0x20cc05,
+ 0x7ffc8,
+ 0x3e0484,
+ 0x317644,
+ 0x212a45,
+ 0x343a49,
+ 0x2292c7,
+ 0x2292cb,
+ 0x22c3ca,
+ 0x22f2c5,
+ 0x6aa0a582,
+ 0x3d79c7,
+ 0x6ae2fbc8,
+ 0x2083c7,
+ 0x223a85,
+ 0x2449ca,
+ 0x5842,
+ 0x28f84b,
+ 0x29090a,
+ 0x279746,
+ 0x2114c3,
+ 0x21438d,
+ 0x3d250c,
+ 0x3d628d,
+ 0x245b45,
+ 0x36cdc5,
+ 0x2642c7,
+ 0x3db089,
+ 0x22ac46,
+ 0x256005,
+ 0x30d0c8,
+ 0x241e83,
+ 0x350088,
+ 0x241e88,
+ 0x3c6b07,
+ 0x2f0308,
+ 0x310589,
+ 0x33edc7,
+ 0x2368c7,
+ 0x209348,
+ 0x25e1c4,
+ 0x25e1c7,
+ 0x282b08,
+ 0x365746,
+ 0x20668f,
+ 0x35bcc7,
+ 0x35e606,
+ 0x3eacc5,
+ 0x22a8c3,
+ 0x253847,
+ 0x395c03,
+ 0x25a2c6,
+ 0x25d7c6,
+ 0x25eac6,
+ 0x2a3e05,
+ 0x279c43,
+ 0x32cfc8,
+ 0x3aa189,
+ 0x25ec4b,
+ 0x25ef08,
+ 0x260445,
+ 0x2629c5,
+ 0x6b262642,
+ 0x269049,
+ 0x3d1bc7,
+ 0x213805,
+ 0x267e07,
+ 0x269c46,
+ 0x26ae05,
+ 0x26c74b,
+ 0x270f44,
+ 0x275fc5,
+ 0x276107,
+ 0x289746,
+ 0x28a185,
+ 0x296347,
+ 0x296f87,
+ 0x2cc984,
+ 0x2b758a,
+ 0x2fabc8,
+ 0x379689,
+ 0x2f9505,
+ 0x2464c6,
+ 0x30888a,
+ 0x27a146,
+ 0x396907,
+ 0x27c50d,
+ 0x2b4fc9,
+ 0x389205,
+ 0x3b7007,
+ 0x3cdc48,
+ 0x385b88,
+ 0x32b107,
+ 0x367e86,
+ 0x21c507,
+ 0x267883,
+ 0x314a04,
+ 0x38abc5,
+ 0x3b76c7,
+ 0x3bffc9,
+ 0x234488,
+ 0x396805,
+ 0x2421c4,
+ 0x2544c5,
+ 0x25f0cd,
+ 0x2086c2,
+ 0x228346,
+ 0x2c9706,
+ 0x3097ca,
+ 0x3a8b86,
+ 0x3b40c5,
+ 0x2defc5,
+ 0x2defc7,
+ 0x3b968c,
+ 0x2b278a,
+ 0x29da06,
+ 0x2ed645,
+ 0x241dc6,
+ 0x29fac7,
+ 0x2a1f06,
+ 0x2a3d0c,
+ 0x257c49,
+ 0x6b61c907,
+ 0x2a5e85,
+ 0x2a5e86,
+ 0x2a6248,
+ 0x256505,
+ 0x2b5705,
+ 0x2b5bc8,
+ 0x2b5dca,
+ 0x6ba27e02,
+ 0x6be10802,
+ 0x21b485,
+ 0x30bac3,
+ 0x336a48,
+ 0x24bc83,
+ 0x2b6044,
+ 0x39190b,
+ 0x3c5c88,
+ 0x2bda08,
+ 0x6c340949,
+ 0x2bd309,
+ 0x2be006,
+ 0x2bf788,
+ 0x2bf989,
+ 0x2c1046,
+ 0x2c11c5,
+ 0x254646,
+ 0x2c1789,
+ 0x2d6487,
+ 0x24c5c6,
+ 0x2bc547,
+ 0x34a147,
+ 0x3a6c84,
+ 0x6c609189,
+ 0x38c208,
+ 0x2c65c8,
+ 0x393887,
+ 0x2e2746,
+ 0x3dae89,
+ 0x25da07,
+ 0x3cc38a,
+ 0x3d2c88,
+ 0x224a07,
+ 0x231546,
+ 0x3affca,
+ 0x3ac908,
+ 0x31f445,
+ 0x22e5c5,
+ 0x319f87,
+ 0x324689,
+ 0x326a8b,
+ 0x3c0588,
+ 0x372409,
+ 0x25f847,
+ 0x2d2acc,
+ 0x2d350c,
+ 0x2d380a,
+ 0x2d3a8c,
+ 0x2de688,
+ 0x2de888,
+ 0x2dea84,
+ 0x2df209,
+ 0x2df449,
+ 0x2df68a,
+ 0x2df909,
+ 0x2dfc87,
+ 0x20878c,
+ 0x3cefc6,
+ 0x27bec8,
+ 0x27a206,
+ 0x2f5c06,
+ 0x389107,
+ 0x39c208,
+ 0x3e2e4b,
+ 0x208287,
+ 0x26fa89,
+ 0x292f49,
+ 0x38d487,
+ 0x207484,
+ 0x269247,
+ 0x31fe46,
+ 0x217246,
+ 0x21a4c5,
+ 0x3b03c8,
+ 0x3494c4,
+ 0x3494c6,
+ 0x2b264b,
+ 0x269889,
+ 0x24f546,
+ 0x242f49,
+ 0x212b06,
+ 0x39a308,
+ 0x20d003,
+ 0x3a7045,
+ 0x21e3c9,
+ 0x3a98c5,
+ 0x3619c4,
+ 0x383706,
+ 0x3250c5,
+ 0x263c06,
+ 0x31ac07,
+ 0x210286,
+ 0x2707cb,
+ 0x26c3c7,
+ 0x27d286,
+ 0x28f486,
+ 0x235a46,
+ 0x305309,
+ 0x200b4a,
+ 0x2d59c5,
+ 0x2ccc0d,
+ 0x2b5ec6,
+ 0x25d646,
+ 0x2d5546,
+ 0x222005,
+ 0x2fa3c7,
+ 0x3d6847,
+ 0x314e0e,
+ 0x219c03,
+ 0x2e2709,
+ 0x286809,
+ 0x2356c7,
+ 0x27e5c7,
+ 0x3317c5,
+ 0x2dbc85,
+ 0x6cb8724f,
+ 0x2e7947,
+ 0x2e7b08,
+ 0x2e7fc4,
0x2e8306,
- 0x30f40e,
- 0x35870a,
- 0x2c7906,
- 0x21498a,
- 0x20d109,
- 0x23f7c5,
- 0x30bfc8,
- 0x3dc706,
- 0x2be208,
- 0x343648,
- 0x285dcb,
- 0x39a685,
- 0x3c76c8,
- 0x204ccc,
- 0x21c107,
- 0x259b86,
- 0x36a848,
- 0x349688,
- 0x6ce4ba82,
- 0x32e38b,
- 0x211e89,
- 0x20a449,
- 0x3c2187,
- 0x3a8bc8,
- 0x6d21e1c8,
- 0x32c1cb,
- 0x268d09,
- 0x29420d,
- 0x306f08,
- 0x3c5088,
- 0x6d603c82,
- 0x210c84,
- 0x6da386c2,
- 0x377a06,
- 0x6de00e42,
- 0x3022ca,
- 0x2b0606,
- 0x22fc48,
- 0x2b1e48,
- 0x260946,
- 0x2c37c6,
- 0x3090c6,
- 0x3e5505,
- 0x2417c4,
- 0x6e235504,
- 0x3597c6,
- 0x281447,
- 0x6e684ec7,
- 0x391e0b,
- 0x208149,
- 0x2bdd8a,
- 0x2d9304,
- 0x258208,
- 0x24e08d,
- 0x302bc9,
- 0x302e08,
- 0x303089,
- 0x305504,
- 0x251104,
- 0x28c445,
- 0x20508b,
- 0x223146,
- 0x359605,
- 0x23f349,
- 0x3220c8,
- 0x2aeb04,
- 0x312889,
- 0x21eec5,
- 0x2d3bc8,
- 0x2f6a07,
- 0x340d88,
- 0x28cf06,
- 0x206d47,
- 0x2ecf49,
- 0x203809,
- 0x22f845,
- 0x2b0d05,
- 0x6ea1f182,
- 0x33e7c4,
- 0x244985,
- 0x39a486,
- 0x34b885,
- 0x303c87,
- 0x3598c5,
- 0x281a44,
- 0x36cec6,
- 0x24ca07,
- 0x3a01c6,
- 0x32c605,
- 0x212788,
- 0x20af45,
- 0x21b207,
- 0x22c649,
- 0x26688a,
- 0x2344c7,
- 0x2344cc,
- 0x236ac6,
- 0x242d89,
- 0x24c505,
- 0x24c7c8,
- 0x22ea03,
- 0x230445,
- 0x2c7d85,
- 0x286a07,
- 0x6ee01242,
- 0x2fe1c7,
- 0x2eef06,
- 0x3ad646,
- 0x2f2006,
- 0x3495c6,
- 0x24b9c8,
- 0x283885,
- 0x321bc7,
- 0x321bcd,
- 0x20b5c3,
- 0x3e83c5,
- 0x3c7f87,
- 0x2fe508,
- 0x3c7b45,
- 0x21f908,
- 0x35b2c6,
- 0x2ea3c7,
- 0x2f5685,
- 0x39a706,
- 0x3973c5,
- 0x22554a,
- 0x2f9546,
- 0x2315c7,
- 0x320285,
- 0x2fdec7,
- 0x301804,
- 0x308086,
- 0x30bf05,
- 0x23640b,
- 0x2d2a49,
- 0x28bc0a,
- 0x22f8c8,
- 0x377b48,
- 0x30fecc,
- 0x310c87,
- 0x31ea88,
- 0x391308,
- 0x3d65c5,
- 0x32a40a,
- 0x34f9c9,
- 0x6f200ec2,
- 0x210606,
- 0x24c004,
- 0x300c89,
- 0x247989,
- 0x24eec7,
- 0x284447,
- 0x2a0d09,
- 0x32aac8,
- 0x32aacf,
- 0x22dd46,
- 0x2e9ecb,
- 0x261445,
- 0x261447,
- 0x3572c9,
- 0x22a186,
- 0x312807,
- 0x2ee685,
- 0x23a944,
- 0x34cb86,
- 0x2174c4,
- 0x2c9147,
- 0x360648,
- 0x6f7babc8,
- 0x30d045,
- 0x30d187,
- 0x351bc9,
- 0x211c44,
- 0x24a5c8,
- 0x6fb04c88,
- 0x2e20c4,
- 0x33ed08,
- 0x32ce84,
- 0x217389,
- 0x227a85,
- 0x6fe13402,
- 0x22dd85,
- 0x2ed405,
- 0x3b69c8,
- 0x23cf87,
- 0x702008c2,
- 0x3c2645,
- 0x2e4146,
- 0x25fb06,
- 0x33e788,
- 0x348688,
- 0x34b846,
- 0x37dcc6,
- 0x2f00c9,
- 0x3ad586,
- 0x22a04b,
- 0x349345,
- 0x259386,
- 0x261f88,
- 0x362646,
- 0x29e506,
- 0x22000a,
- 0x2e530a,
- 0x22be45,
- 0x24f187,
- 0x27f886,
- 0x70605002,
- 0x3c80c7,
- 0x38fb05,
- 0x308744,
- 0x308745,
- 0x258106,
- 0x27df47,
- 0x2247c5,
- 0x247a44,
- 0x2e2708,
- 0x29e5c5,
- 0x355387,
- 0x383485,
- 0x225485,
- 0x265c84,
- 0x265c89,
- 0x306008,
- 0x2017c6,
- 0x347706,
- 0x3b6c06,
- 0x70bd38c8,
- 0x3dc2c7,
- 0x31490d,
- 0x314ecc,
- 0x3154c9,
- 0x315709,
- 0x70f75ac2,
- 0x3db703,
- 0x22bec3,
- 0x2d2c85,
- 0x3b154a,
- 0x33e646,
- 0x34ce85,
- 0x31cbc4,
- 0x31cbcb,
- 0x33508c,
- 0x33594c,
- 0x335c55,
- 0x33698d,
- 0x338a8f,
- 0x338e52,
- 0x3392cf,
- 0x339692,
- 0x339b13,
+ 0x6ce51882,
+ 0x2ec3c6,
+ 0x2edcc6,
+ 0x374a0e,
+ 0x34feca,
+ 0x214806,
+ 0x2cdd4a,
+ 0x3d6089,
+ 0x3023c5,
+ 0x2d8548,
+ 0x301186,
+ 0x2c4f88,
+ 0x385348,
+ 0x32234b,
+ 0x3a34c5,
+ 0x359408,
+ 0x2048cc,
+ 0x223947,
+ 0x25e646,
+ 0x3b2d88,
+ 0x3e2b08,
+ 0x6d216602,
+ 0x201ccb,
+ 0x392889,
+ 0x20ce09,
+ 0x3d1707,
+ 0x35e048,
+ 0x6d615f88,
+ 0x38480b,
+ 0x26e189,
+ 0x262f4d,
+ 0x385188,
+ 0x2d4e48,
+ 0x6da00f82,
+ 0x3ef104,
+ 0x6de47f42,
+ 0x365c06,
+ 0x6e201a42,
+ 0x3021ca,
+ 0x2b5586,
+ 0x230388,
+ 0x2583c8,
+ 0x264bc6,
+ 0x330846,
+ 0x309186,
+ 0x250005,
+ 0x245704,
+ 0x6e655cc4,
+ 0x358806,
+ 0x251647,
+ 0x6ea8d407,
+ 0x39e54b,
+ 0x2085c9,
+ 0x36ce0a,
+ 0x2df104,
+ 0x25dcc8,
+ 0x24c38d,
+ 0x302949,
+ 0x302b88,
+ 0x302e09,
+ 0x305744,
+ 0x230d44,
+ 0x291dc5,
+ 0x204c8b,
+ 0x3c5c06,
+ 0x358645,
+ 0x241949,
+ 0x35ebc8,
+ 0x26ae44,
+ 0x30e389,
+ 0x270705,
+ 0x2d21c8,
+ 0x236f87,
+ 0x335908,
+ 0x292886,
+ 0x3d5707,
+ 0x2f3589,
+ 0x381ec9,
+ 0x218c05,
+ 0x245a05,
+ 0x6ee09702,
+ 0x32ebc4,
+ 0x38a845,
+ 0x3a32c6,
+ 0x33ea05,
+ 0x262a87,
+ 0x303a05,
+ 0x287004,
+ 0x368286,
+ 0x256087,
+ 0x220bc6,
+ 0x330b45,
+ 0x21ae08,
+ 0x3d1285,
+ 0x228047,
+ 0x22f989,
+ 0x2699ca,
+ 0x2baac7,
+ 0x2baacc,
+ 0x2bb486,
+ 0x24d809,
+ 0x254345,
+ 0x256448,
+ 0x218a43,
+ 0x2c97c5,
+ 0x2ef5c5,
+ 0x24dc07,
+ 0x6f200bc2,
+ 0x2fef07,
+ 0x2e38c6,
+ 0x387e86,
+ 0x2ebd46,
+ 0x3e2a46,
+ 0x253548,
+ 0x3cc045,
+ 0x35e6c7,
+ 0x35e6cd,
+ 0x254a43,
+ 0x3cf485,
+ 0x359cc7,
+ 0x2ff248,
+ 0x359885,
+ 0x21f1c8,
+ 0x38a2c6,
+ 0x2a6bc7,
+ 0x2f5b45,
+ 0x3a3546,
+ 0x32d545,
+ 0x20c58a,
+ 0x2f9946,
+ 0x243cc7,
+ 0x2c6cc5,
+ 0x2fa847,
+ 0x2fb0c4,
+ 0x361946,
+ 0x3010c5,
+ 0x232f4b,
+ 0x31fcc9,
+ 0x289f0a,
+ 0x218c88,
+ 0x308388,
+ 0x30c28c,
+ 0x30dc87,
+ 0x30f408,
+ 0x388cc8,
+ 0x32f245,
+ 0x31a4ca,
+ 0x31e6c9,
+ 0x6f601402,
+ 0x20fec6,
+ 0x224804,
+ 0x2276c9,
+ 0x350bc9,
+ 0x312fc7,
+ 0x281687,
+ 0x288389,
+ 0x35a8c8,
+ 0x35a8cf,
+ 0x234046,
+ 0x2f160b,
+ 0x266b05,
+ 0x266b07,
+ 0x337789,
+ 0x30e306,
+ 0x30e307,
+ 0x2f4b45,
+ 0x23bb04,
+ 0x2a8746,
+ 0x215784,
+ 0x2cee87,
+ 0x2db048,
+ 0x6fba6dc8,
+ 0x3b8845,
+ 0x3bc687,
+ 0x2d9589,
+ 0x21a004,
+ 0x24cf48,
+ 0x6ff04708,
+ 0x2d54c4,
+ 0x30b548,
+ 0x3862c4,
+ 0x215649,
+ 0x221f45,
+ 0x70208ec2,
+ 0x234085,
+ 0x3aba85,
+ 0x3b6d08,
+ 0x23f7c7,
+ 0x706008c2,
+ 0x371bc5,
+ 0x2ea7c6,
+ 0x25e946,
+ 0x32eb88,
+ 0x366e48,
+ 0x33e9c6,
+ 0x31d946,
+ 0x2fd209,
+ 0x387dc6,
+ 0x3e068b,
+ 0x3e27c5,
+ 0x25d086,
+ 0x266548,
+ 0x366b06,
+ 0x2a5346,
+ 0x21f8ca,
+ 0x2eb7ca,
+ 0x264485,
+ 0x286a87,
+ 0x2852c6,
+ 0x70a04c02,
+ 0x359e07,
+ 0x3e1285,
+ 0x308804,
+ 0x308805,
+ 0x25dbc6,
+ 0x2686c7,
+ 0x20b785,
+ 0x2eb944,
+ 0x2e85c8,
+ 0x2a5405,
+ 0x2f6ac7,
+ 0x32a285,
+ 0x20c4c5,
+ 0x229604,
+ 0x229609,
+ 0x2e8708,
+ 0x20b0c6,
+ 0x217e86,
+ 0x3ce5c6,
+ 0x70ec3648,
+ 0x306247,
+ 0x33e5cd,
+ 0x3dcb8c,
+ 0x3e79c9,
+ 0x313549,
+ 0x7137e082,
+ 0x3e6403,
+ 0x246583,
+ 0x31ff05,
+ 0x3b77ca,
+ 0x33e406,
+ 0x241145,
+ 0x31b544,
+ 0x31b54b,
+ 0x333e8c,
+ 0x33474c,
+ 0x334a55,
+ 0x33660d,
+ 0x3384cf,
+ 0x338892,
+ 0x338d0f,
+ 0x3390d2,
+ 0x339553,
+ 0x339a0d,
0x339fcd,
- 0x33a58d,
- 0x33a90e,
- 0x33b2ce,
- 0x33b9cc,
- 0x33bd8c,
- 0x33c1cb,
- 0x33cc4e,
- 0x33d552,
- 0x33e40c,
- 0x33f5d0,
- 0x34cfd2,
- 0x34e1cc,
- 0x34e88d,
- 0x34ebcc,
- 0x350dd1,
- 0x35228d,
- 0x355f8d,
- 0x35658a,
- 0x35680c,
- 0x357ccc,
- 0x35930c,
- 0x359ccc,
- 0x35dad3,
- 0x35e550,
- 0x35e950,
- 0x35f34d,
- 0x35f94c,
- 0x360ac9,
- 0x36290d,
- 0x362c53,
- 0x364b11,
- 0x365313,
- 0x36664f,
- 0x366a0c,
- 0x366d0f,
- 0x3670cd,
- 0x3676cf,
- 0x367a90,
- 0x36850e,
- 0x36d54e,
- 0x36de90,
- 0x36ea8d,
- 0x36f40e,
- 0x36f78c,
- 0x3708d3,
- 0x3725ce,
- 0x373310,
- 0x373711,
- 0x373b4f,
- 0x373f13,
- 0x37564d,
- 0x37598f,
- 0x375d4e,
- 0x3762d0,
- 0x3766c9,
- 0x377d50,
- 0x37824f,
- 0x3788cf,
- 0x378c92,
- 0x37c3ce,
- 0x37d94d,
- 0x37e00d,
- 0x37e34d,
- 0x37f9cd,
- 0x37fd0d,
- 0x380050,
- 0x38044b,
- 0x380d4c,
- 0x3810cc,
- 0x3816cc,
- 0x3819ce,
- 0x390450,
- 0x392492,
- 0x39290b,
- 0x3938ce,
- 0x393c4e,
- 0x3944ce,
- 0x394a4b,
- 0x71394ed6,
- 0x395e0d,
- 0x396994,
- 0x39768d,
- 0x399cd5,
- 0x39b8cd,
- 0x39c24f,
- 0x39cb8f,
- 0x3a3f4f,
- 0x3a430e,
- 0x3a468d,
- 0x3a6611,
- 0x3aaf4c,
- 0x3ab24c,
- 0x3ab54b,
- 0x3ab98c,
- 0x3ac40f,
- 0x3ac7d2,
- 0x3acdcd,
- 0x3ae1cc,
- 0x3aec8c,
- 0x3aef8d,
- 0x3af2cf,
- 0x3af68e,
- 0x3b120c,
- 0x3b17cd,
- 0x3b1b0b,
- 0x3b23cc,
- 0x3b318d,
- 0x3b34ce,
- 0x3b3849,
- 0x3b50d3,
- 0x3b798d,
- 0x3b808d,
- 0x3b868c,
- 0x3b8d0e,
- 0x3b958f,
- 0x3b994c,
- 0x3b9c4d,
- 0x3b9f8f,
- 0x3ba34c,
- 0x3bb38c,
- 0x3bb90c,
+ 0x33a34e,
+ 0x33ac4e,
+ 0x33b24c,
+ 0x33b60c,
+ 0x33ba4b,
+ 0x33ca0e,
+ 0x33d312,
+ 0x33e1cc,
+ 0x33f4d0,
+ 0x34ca92,
+ 0x34db0c,
+ 0x34e1cd,
+ 0x34e50c,
+ 0x351fd1,
+ 0x35360d,
+ 0x3556cd,
+ 0x355cca,
+ 0x355f4c,
+ 0x357b8c,
+ 0x35834c,
+ 0x35ac8c,
+ 0x360213,
+ 0x360c10,
+ 0x361010,
+ 0x361dcd,
+ 0x3623cc,
+ 0x3648c9,
+ 0x36704d,
+ 0x367393,
+ 0x368f11,
+ 0x369713,
+ 0x36a78f,
+ 0x36ab4c,
+ 0x36ae4f,
+ 0x36b20d,
+ 0x36b80f,
+ 0x36bbd0,
+ 0x36c64e,
+ 0x37554e,
+ 0x375e90,
+ 0x376a8d,
+ 0x37740e,
+ 0x37778c,
+ 0x378e53,
+ 0x37b50e,
+ 0x37c250,
+ 0x37c651,
+ 0x37ca8f,
+ 0x37ce53,
+ 0x37dc0d,
+ 0x37df4f,
+ 0x37e30e,
+ 0x37e890,
+ 0x37ec89,
+ 0x37fdd0,
+ 0x3802cf,
+ 0x38094f,
+ 0x380d12,
+ 0x38210e,
+ 0x387a4d,
+ 0x38800d,
+ 0x38834d,
+ 0x38934d,
+ 0x38968d,
+ 0x3899d0,
+ 0x389dcb,
+ 0x38a98c,
+ 0x38ad0c,
+ 0x38b30c,
+ 0x38b60e,
+ 0x39a510,
+ 0x39bb52,
+ 0x39bfcb,
+ 0x39c40e,
+ 0x39c78e,
+ 0x39d00e,
+ 0x39d58b,
+ 0x7179d916,
+ 0x39edcd,
+ 0x39fa14,
+ 0x3a0a4d,
+ 0x3a2b15,
+ 0x3a514d,
+ 0x3a5acf,
+ 0x3a628f,
+ 0x3aa3cf,
+ 0x3aa78e,
+ 0x3aab0d,
+ 0x3ac291,
+ 0x3af1cc,
+ 0x3af4cc,
+ 0x3af7cb,
+ 0x3afa8c,
+ 0x3b05cf,
+ 0x3b0992,
+ 0x3b0f8d,
+ 0x3b21cc,
+ 0x3b310c,
+ 0x3b340d,
+ 0x3b374f,
+ 0x3b3b0e,
+ 0x3b748c,
+ 0x3b7a4d,
+ 0x3b7d8b,
+ 0x3b834c,
+ 0x3b8d0d,
+ 0x3b904e,
+ 0x3b93c9,
+ 0x3ba753,
+ 0x3baf0d,
+ 0x3bb60d,
0x3bbc0c,
- 0x3bc8cd,
- 0x3bcc12,
- 0x3bd38c,
- 0x3bd68c,
- 0x3bd991,
- 0x3bddcf,
- 0x3be18f,
- 0x3be553,
- 0x3bf34e,
- 0x3bf6cf,
+ 0x3bc28e,
+ 0x3bdecf,
+ 0x3be28c,
+ 0x3be58d,
+ 0x3be8cf,
+ 0x3bec8c,
+ 0x3bf50c,
0x3bfa8c,
- 0x717c014e,
- 0x3c04cf,
- 0x3c0896,
- 0x3c1b92,
- 0x3c528c,
- 0x3c618f,
- 0x3c680d,
- 0x3d294f,
- 0x3d2d0c,
- 0x3d300d,
- 0x3d334d,
- 0x3d51ce,
- 0x3d5d0c,
- 0x3d914c,
- 0x3d9450,
- 0x3daa91,
- 0x3daecb,
- 0x3db30c,
- 0x3db60e,
- 0x3dd8d1,
- 0x3ddd0e,
- 0x3de08d,
- 0x3e5f8b,
- 0x3e688f,
- 0x3e74d4,
- 0x2038c2,
- 0x2038c2,
- 0x204cc3,
- 0x2038c2,
- 0x204cc3,
- 0x2038c2,
- 0x201082,
- 0x2519c5,
- 0x3dd5cc,
- 0x2038c2,
- 0x2038c2,
- 0x201082,
- 0x2038c2,
- 0x2a0905,
- 0x266885,
- 0x2038c2,
- 0x2038c2,
- 0x20bd42,
- 0x2a0905,
- 0x337209,
- 0x36480c,
- 0x2038c2,
- 0x2038c2,
- 0x2038c2,
- 0x2038c2,
- 0x2519c5,
- 0x2038c2,
- 0x2038c2,
- 0x2038c2,
- 0x2038c2,
- 0x20bd42,
- 0x337209,
- 0x2038c2,
- 0x2038c2,
- 0x2038c2,
- 0x266885,
- 0x2038c2,
- 0x266885,
- 0x36480c,
- 0x3dd5cc,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x2296c3,
- 0x20cb83,
- 0x3c4f,
- 0x12d248,
- 0x6f7c4,
- 0xd903,
- 0x17b4c8,
- 0x1d5b83,
+ 0x3bfd8c,
+ 0x3c0c4d,
+ 0x3c0f92,
+ 0x3c1a0c,
+ 0x3c1d0c,
+ 0x3c2011,
+ 0x3c244f,
+ 0x3c280f,
+ 0x3c2bd3,
+ 0x3c3ece,
+ 0x3c424f,
+ 0x3c460c,
+ 0x71bc4cce,
+ 0x3c504f,
+ 0x3c5416,
+ 0x3c6652,
+ 0x3c920c,
+ 0x3ca10f,
+ 0x3ca78d,
+ 0x3dbc0f,
+ 0x3dbfcc,
+ 0x3dc2cd,
+ 0x3dc60d,
+ 0x3de74e,
+ 0x3df30c,
+ 0x3e32cc,
+ 0x3e35d0,
+ 0x3e5791,
+ 0x3e5bcb,
+ 0x3e600c,
+ 0x3e630e,
+ 0x3e7f11,
+ 0x3e834e,
+ 0x3e86cd,
+ 0x3ed6cb,
+ 0x3ee20f,
+ 0x3eebd4,
+ 0x21e682,
+ 0x21e682,
+ 0x2048c3,
+ 0x21e682,
+ 0x2048c3,
+ 0x21e682,
+ 0x204fc2,
+ 0x254685,
+ 0x3e7c0c,
+ 0x21e682,
+ 0x21e682,
+ 0x204fc2,
+ 0x21e682,
+ 0x2a7045,
+ 0x2699c5,
+ 0x21e682,
+ 0x21e682,
+ 0x202a02,
+ 0x2a7045,
+ 0x336c49,
+ 0x368c0c,
+ 0x21e682,
+ 0x21e682,
+ 0x21e682,
+ 0x21e682,
+ 0x254685,
+ 0x21e682,
+ 0x21e682,
+ 0x21e682,
+ 0x21e682,
+ 0x202a02,
+ 0x336c49,
+ 0x21e682,
+ 0x21e682,
+ 0x21e682,
+ 0x2699c5,
+ 0x21e682,
+ 0x2699c5,
+ 0x368c0c,
+ 0x3e7c0c,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x2127c3,
+ 0x21f483,
+ 0x31cf,
+ 0xa788,
+ 0x75bc4,
+ 0xbc03,
+ 0xe44c8,
+ 0x1df183,
0x2000c2,
- 0x72616542,
- 0x249f03,
- 0x23adc4,
- 0x204f03,
- 0x36c284,
- 0x239c86,
- 0x220e43,
- 0x3b7004,
- 0x2999c5,
- 0x216443,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x23098a,
- 0x259186,
- 0x393fcc,
- 0x793c8,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x233243,
- 0x2e8306,
- 0x2296c3,
- 0x20cb83,
- 0x21f6c3,
- 0x39fc3,
- 0xb4388,
- 0x731e7c45,
- 0x7c4c7,
- 0xb1845,
- 0x52547,
- 0x146c05,
- 0x4009,
- 0xad42,
- 0x1c138a,
- 0x73f2d5c5,
- 0x146c05,
- 0x34347,
- 0x16108,
- 0x10d8e,
- 0x95292,
- 0x130e0b,
- 0x1e1d46,
- 0x742ea205,
- 0x7479e04c,
- 0x10de07,
- 0xb46c7,
- 0x1b620a,
- 0x44ad0,
- 0x17be85,
- 0xc5e4b,
- 0x1dcf08,
- 0x3e1c7,
- 0x3aa4b,
- 0x51b89,
- 0x873c7,
- 0xf4547,
- 0x187407,
- 0x3e106,
- 0x1c74c8,
- 0x74c32f46,
- 0x46bc7,
- 0xc7e86,
- 0xb8d0d,
- 0x96110,
- 0x75013242,
- 0x1cdd88,
- 0x184590,
- 0x18ed0c,
- 0x7578f54d,
- 0x68508,
- 0x6898b,
- 0x76447,
- 0x19a49,
- 0x62246,
- 0xa0488,
- 0x5102,
- 0x9c50a,
- 0x36947,
- 0xb8847,
- 0xb4e49,
- 0xb7288,
- 0x154645,
- 0x190a86,
- 0x6ac6,
- 0x1040ce,
- 0x422ce,
- 0x4aecf,
- 0x5e789,
- 0x932c9,
- 0x9c08b,
- 0xbb44f,
- 0x1dd2cc,
- 0xd4f4b,
- 0x1b9248,
- 0x191d07,
- 0x19b308,
- 0xbc0cb,
- 0xbca0c,
- 0xbce0c,
- 0xbd20c,
- 0xbd50d,
- 0x1bc248,
- 0x5adc2,
- 0x1971c9,
- 0x46688,
- 0xda88b,
- 0xdc906,
- 0xe3acb,
- 0x13d08b,
- 0xeddca,
- 0xeec85,
- 0xf2550,
- 0xf8286,
- 0x583c6,
- 0x10f7c5,
- 0x120047,
- 0xfa348,
- 0xff487,
- 0xff747,
- 0x69587,
- 0xd1846,
- 0x17784a,
- 0xb400a,
- 0x30846,
- 0xb860d,
- 0x46c88,
- 0x118d88,
- 0xef809,
- 0x1b2a09,
- 0xcc205,
- 0x176a8c,
- 0xbd70b,
- 0x10d989,
- 0x112cc4,
- 0x114549,
- 0x114786,
- 0x143506,
- 0x4a42,
- 0x13906,
- 0x80c8b,
- 0x11de07,
- 0x11dfc7,
- 0xe042,
- 0xde645,
- 0x9204,
+ 0x72a05842,
+ 0x24c883,
+ 0x23bf84,
+ 0x204b03,
+ 0x2e9c44,
+ 0x2389c6,
+ 0x20f503,
+ 0x3835c4,
+ 0x2aaf45,
+ 0x219c03,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x22600a,
+ 0x25ce86,
+ 0x39cb0c,
+ 0x7ffc8,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2335c3,
+ 0x2edcc6,
+ 0x2127c3,
+ 0x21f483,
+ 0x202783,
+ 0x13803,
+ 0xb7048,
+ 0x735eb785,
+ 0x80407,
+ 0x57dc5,
+ 0x1c387,
+ 0x145d45,
+ 0x3589,
+ 0x2c02,
+ 0x1cb20a,
+ 0x74332b45,
+ 0x145d45,
+ 0x110947,
+ 0x29b08,
+ 0x1060e,
+ 0x9a352,
+ 0x12dc8b,
+ 0x1146c6,
+ 0x746f8c05,
+ 0x74b8c5cc,
+ 0x8e07,
+ 0xf1a47,
+ 0x1b654a,
+ 0x47cd0,
+ 0xc7c5,
+ 0xb2e8b,
+ 0xd1e88,
+ 0x40787,
+ 0x3bc0b,
+ 0xa54c9,
+ 0x54847,
+ 0x1cd787,
+ 0x393c7,
+ 0x406c6,
+ 0x1db408,
+ 0x750332c6,
+ 0x56607,
+ 0xef6c6,
+ 0xbe10d,
+ 0x5de50,
+ 0x75406cc2,
+ 0x1cd608,
+ 0x199810,
+ 0x199f4c,
+ 0x75b9fecd,
+ 0x6d988,
+ 0x6de0b,
+ 0x7d747,
+ 0x9e6c9,
+ 0x66806,
+ 0xa6448,
+ 0x4d02,
+ 0x6b04a,
+ 0x150407,
+ 0xbd847,
+ 0xb92c9,
+ 0xbb988,
+ 0x146bc5,
+ 0x19ab46,
+ 0x1d71c6,
+ 0x103e4e,
+ 0x3c4ce,
+ 0x4b6cf,
+ 0x56a09,
+ 0x90249,
+ 0x1dda0b,
+ 0xc1b4f,
+ 0x17d90c,
+ 0xd71cb,
+ 0x11b208,
+ 0x19e447,
+ 0x1abd88,
+ 0xc2e8b,
+ 0xc384c,
+ 0xc3c4c,
+ 0xc404c,
+ 0xc434d,
+ 0x1c03c8,
+ 0x803c2,
+ 0x12d349,
+ 0x191648,
+ 0xe068b,
+ 0xe2946,
+ 0xea14b,
+ 0x13ce4b,
+ 0xf428a,
+ 0xf58c5,
+ 0xfa0d0,
+ 0xfd8c6,
+ 0x1683c6,
+ 0xcab05,
+ 0xd5247,
+ 0xec648,
+ 0xff7c7,
+ 0xffa87,
+ 0x121587,
+ 0xd7606,
+ 0x165a4a,
+ 0xa1b8a,
+ 0x18a46,
+ 0xbd60d,
+ 0x566c8,
+ 0x1167c8,
+ 0x1a5e89,
+ 0x4be49,
+ 0xd1445,
+ 0x15804c,
+ 0xc454b,
+ 0x184109,
+ 0x18de04,
+ 0x113189,
+ 0x1133c6,
+ 0x15fa86,
+ 0x1b02,
+ 0x5b646,
+ 0x4bfcb,
+ 0x11d147,
+ 0x11d307,
+ 0x4182,
+ 0xe3f05,
+ 0x29c84,
0x101,
- 0x5b843,
- 0x74b26806,
- 0xa0803,
+ 0x5fdc3,
+ 0x74f4c586,
+ 0xa6b83,
0x382,
- 0x1504,
+ 0xae04,
0xac2,
- 0x5dd04,
+ 0x9f804,
0x882,
- 0x8502,
- 0x4702,
- 0x128c42,
- 0x4182,
- 0xea202,
- 0xd42,
- 0x2e702,
- 0x3fb82,
- 0xc542,
- 0x3242,
- 0x57f02,
- 0x22bc3,
+ 0x1e02,
+ 0x2b82,
+ 0x127082,
+ 0x3702,
+ 0xb79c2,
+ 0x2102,
+ 0xb90c2,
+ 0x38fc2,
+ 0x1bc2,
+ 0xd02,
+ 0x5d9c2,
+ 0x24d03,
0x942,
- 0x2bc2,
- 0x18242,
- 0xeb02,
+ 0x3642,
+ 0x18b02,
+ 0x2e42,
0x642,
- 0x3b342,
- 0x1ec82,
- 0x8e82,
- 0x5502,
+ 0x3cac2,
+ 0x1d7c2,
+ 0x75c2,
+ 0x9c42,
0x5c2,
- 0x43543,
- 0x2642,
- 0x6002,
- 0x54202,
- 0x7bc2,
- 0x9d42,
- 0x10442,
- 0x205c2,
- 0x11de42,
- 0x1582,
- 0x10f082,
- 0x77782,
- 0xa9542,
- 0x296c3,
+ 0x5e043,
+ 0x3382,
+ 0x5fc2,
+ 0x58e02,
+ 0x8042,
+ 0xb982,
+ 0xfd02,
+ 0x2d442,
+ 0x2c82,
+ 0x26c2,
+ 0xbdc2,
+ 0x7eec2,
+ 0x5582,
+ 0x127c3,
0x602,
- 0x4ba82,
- 0x1cc2,
- 0x2d4c2,
- 0x2f7c5,
- 0x59c2,
- 0x4cec2,
- 0x179e43,
+ 0x16602,
+ 0x1242,
+ 0x1c682,
+ 0x18b85,
+ 0x6582,
+ 0x85042,
+ 0x172303,
0x682,
- 0x4a02,
- 0x1702,
- 0x4ac2,
- 0xb5c2,
+ 0x9942,
+ 0x33c2,
+ 0x5f82,
+ 0x12882,
0x8c2,
- 0x6502,
- 0x4a42,
- 0x3ec5,
- 0x75a01082,
- 0x75eecb83,
- 0x9983,
- 0x76201082,
- 0x9983,
- 0xdc1c7,
- 0x215483,
+ 0x9e42,
+ 0x1b02,
+ 0x2cc5,
+ 0x75e04fc2,
+ 0x762f3143,
+ 0x2043,
+ 0x76604fc2,
+ 0x2043,
+ 0xe2207,
+ 0x2029c3,
0x2000c2,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
0x2005c3,
- 0x233243,
- 0x2296c3,
- 0x20d903,
- 0x20cb83,
- 0x2a0843,
- 0xcc244,
- 0x143845,
- 0x1084c5,
- 0x1a143,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
- 0x216443,
- 0x2296c3,
- 0x20d903,
- 0x7ca83,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
+ 0x2335c3,
+ 0x2127c3,
+ 0x20bc03,
+ 0x21f483,
+ 0x39ac43,
+ 0x16fe06,
+ 0xd1484,
+ 0x17585,
+ 0x108585,
+ 0xb8c3,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x219c03,
+ 0x2127c3,
+ 0x20bc03,
+ 0x81983,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
0x200181,
- 0x216443,
- 0x2296c3,
- 0x257743,
- 0x20cb83,
- 0x1a3904,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x2163c3,
- 0x2f5503,
- 0x322603,
- 0x285483,
- 0x2b05c3,
- 0x205383,
- 0x343b43,
- 0x2b1b84,
- 0x2296c3,
- 0x20cb83,
- 0x201643,
- 0x202304,
- 0x239843,
- 0x3b43,
- 0x2133c3,
- 0x32f308,
- 0x29ac84,
+ 0x219c03,
+ 0x2127c3,
+ 0x25c743,
+ 0x21f483,
+ 0x2ec4,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x229dc3,
+ 0x28c6c3,
+ 0x25c783,
+ 0x244d83,
+ 0x2b5543,
+ 0x204f83,
+ 0x2e9c43,
+ 0x258104,
+ 0x2127c3,
+ 0x21f483,
+ 0x205ec3,
+ 0x209f84,
+ 0x239343,
+ 0x30c3,
+ 0x220cc3,
+ 0x32bd48,
+ 0x349f84,
0x20020a,
- 0x25afc6,
- 0x1519c4,
- 0x3bd047,
- 0x22820a,
- 0x22dc09,
- 0x3c9ec7,
- 0x3cc38a,
- 0x253c43,
- 0x368b8b,
- 0x20c389,
- 0x31f4c5,
- 0x20cd87,
- 0x16542,
- 0x216543,
- 0x226f07,
- 0x2224c5,
- 0x2d8e09,
- 0x222bc3,
- 0x34bc46,
- 0x32a4c3,
- 0xd2b03,
- 0x11bc06,
- 0x17a2c6,
- 0x20dc7,
- 0x229a46,
- 0x231f45,
- 0x20a307,
- 0x319507,
- 0x78f43b43,
- 0x34e407,
- 0x3b29c3,
- 0x2712c5,
- 0x2b1b84,
- 0x2c2188,
- 0x3db94c,
- 0x2c1305,
- 0x2b01c6,
- 0x226dc7,
- 0x35b907,
- 0x2678c7,
- 0x26c148,
- 0x31ae8f,
- 0x27b905,
- 0x24a007,
- 0x2151c7,
- 0x28974a,
- 0x37f609,
- 0x330145,
- 0x34da0a,
- 0x101546,
- 0xcc787,
- 0x2d7e45,
- 0x2f5744,
- 0x340486,
- 0xcb946,
- 0x256ec7,
- 0x25acc7,
- 0x3b5b48,
- 0x3d07c5,
- 0x2223c6,
- 0x2f048,
- 0x228c85,
- 0x28e46,
- 0x240305,
- 0x288284,
- 0x21ef87,
- 0x24b80a,
- 0x2aab88,
- 0x3e3cc6,
- 0x33243,
- 0x2efe85,
- 0x3d8586,
- 0x3cbb06,
- 0x30f6c6,
- 0x216443,
- 0x3ad047,
- 0x215145,
- 0x2296c3,
- 0x2ee08d,
- 0x20d903,
- 0x3b5c48,
- 0x243444,
- 0x281d05,
- 0x2b2506,
- 0x32e106,
- 0x259287,
- 0x268bc7,
- 0x27c805,
- 0x20cb83,
- 0x3a20c7,
- 0x24b489,
- 0x36a249,
- 0x382d0a,
- 0x23d7c2,
- 0x271284,
- 0x3211c4,
- 0x2fda07,
- 0x2fe088,
- 0x300709,
- 0x3e8289,
- 0x301107,
- 0x10a949,
- 0x2132c6,
- 0x103e46,
- 0x305504,
- 0x3b4e4a,
- 0x307e08,
- 0x308f89,
- 0x309246,
- 0x2c7245,
- 0x2aaa48,
- 0x2dcb8a,
- 0x27d683,
- 0x202486,
- 0x301207,
- 0x2c8885,
- 0x3c10c5,
- 0x24da03,
- 0x2d1984,
- 0x22f685,
- 0x291587,
- 0x306145,
- 0x2f2cc6,
- 0x166105,
- 0x2c79c3,
- 0x2c79c9,
- 0x281acc,
- 0x2d06cc,
- 0x3416c8,
- 0x2a3e47,
- 0x3101c8,
- 0x110e47,
- 0x3111ca,
- 0x31188b,
- 0x20c4c8,
- 0x32e208,
- 0x25d306,
- 0x272145,
- 0x33b5ca,
- 0x2ecbc5,
- 0x213402,
- 0x2db6c7,
- 0x27d046,
- 0x377045,
- 0x313149,
- 0x27b485,
- 0x1dea48,
- 0x29d645,
- 0x270e89,
- 0x3d84c6,
- 0x3407c8,
- 0x31dd83,
- 0x212c46,
- 0x3b7086,
- 0x31d845,
- 0x31d849,
- 0x2cee49,
- 0x271ec7,
- 0x120d84,
- 0x320d87,
- 0x3e8189,
- 0x228405,
- 0x418c8,
- 0x379cc5,
- 0x3a14c5,
- 0x36bc09,
- 0x202cc2,
- 0x35a344,
- 0x204542,
- 0x202642,
- 0x2ffc05,
- 0x351748,
- 0x2cc145,
- 0x2da043,
- 0x2da045,
- 0x2e5d83,
- 0x212202,
- 0x333544,
- 0x36a603,
+ 0x264086,
+ 0xd9384,
+ 0x3babc7,
+ 0x22688a,
+ 0x233f09,
+ 0x3cb087,
+ 0x3d018a,
+ 0x258843,
+ 0x21b50b,
+ 0x237ac9,
+ 0x36a2c5,
+ 0x2384c7,
+ 0x5842,
+ 0x229f43,
+ 0x246747,
+ 0x347a05,
+ 0x2dec09,
+ 0x224d03,
+ 0x22cb86,
+ 0x2dd343,
+ 0xe3943,
+ 0x119e46,
+ 0x173bc6,
+ 0xf487,
+ 0x213cc6,
+ 0x22dc45,
+ 0x20ccc7,
+ 0x316f07,
+ 0x792e9c43,
+ 0x34dd47,
+ 0x24be03,
+ 0x23aa45,
+ 0x258104,
+ 0x2c8888,
+ 0x3e664c,
+ 0x2c7c85,
+ 0x2b5146,
+ 0x246607,
+ 0x384407,
+ 0x27d3c7,
+ 0x290448,
+ 0x3190cf,
+ 0x372ac5,
+ 0x24c987,
+ 0x29cc87,
+ 0x249c4a,
+ 0x30cf09,
+ 0x32c545,
+ 0x34d4ca,
+ 0x1080c6,
+ 0xd1747,
+ 0x2dd3c5,
+ 0x397644,
+ 0x340386,
+ 0x14f0c6,
+ 0x25bb47,
+ 0x2e1687,
+ 0x209748,
+ 0x20d005,
+ 0x347906,
+ 0x43288,
+ 0x242cc5,
+ 0x42e86,
+ 0x318985,
+ 0x29bcc4,
+ 0x247907,
+ 0x25338a,
+ 0x2afe88,
+ 0x3d6cc6,
+ 0x335c3,
+ 0x2f7305,
+ 0x220346,
+ 0x2089c6,
+ 0x374cc6,
+ 0x219c03,
+ 0x3b1207,
+ 0x29cc05,
+ 0x2127c3,
+ 0x2f454d,
+ 0x20bc03,
+ 0x209848,
+ 0x23d404,
+ 0x220645,
+ 0x2b6086,
+ 0x201a46,
+ 0x25cf87,
+ 0x26e047,
+ 0x280745,
+ 0x21f483,
+ 0x3326c7,
+ 0x207349,
+ 0x246049,
+ 0x38cf8a,
+ 0x2020c2,
+ 0x23aa04,
+ 0x32c1c4,
+ 0x2fec07,
+ 0x2fedc8,
+ 0x300949,
+ 0x3cf349,
+ 0x3014c7,
+ 0x10c5c9,
+ 0x2b81c6,
+ 0x103bc6,
+ 0x305744,
+ 0x2353ca,
+ 0x307d48,
+ 0x309049,
+ 0x309306,
+ 0x2cd685,
+ 0x2afd48,
+ 0x2e2bca,
+ 0x21cb03,
+ 0x20a106,
+ 0x3015c7,
+ 0x35c0c5,
+ 0x84408,
+ 0x3c3345,
+ 0x216f03,
+ 0x24a3c4,
+ 0x4a3c9,
+ 0x22e585,
+ 0x297087,
+ 0x2e8845,
+ 0x2f1bc6,
+ 0x1063c5,
+ 0x2148c3,
+ 0x2148c9,
+ 0x22040c,
+ 0x2d320c,
+ 0x3485c8,
+ 0x2a0c47,
+ 0x3e4008,
+ 0x111547,
+ 0x3118ca,
+ 0x311f8b,
+ 0x237c08,
+ 0x201b48,
+ 0x260fc6,
+ 0x31c245,
+ 0x284d8a,
+ 0x3da585,
+ 0x208ec2,
+ 0x2e1487,
+ 0x278606,
+ 0x37f485,
+ 0x3977c9,
+ 0x36f885,
+ 0x1d2348,
+ 0x2a3585,
+ 0x23a609,
+ 0x322dc6,
+ 0x3406c8,
+ 0x246ec3,
+ 0x211706,
+ 0x383646,
+ 0x31cb85,
+ 0x31cb89,
+ 0x287109,
+ 0x284b07,
+ 0x120c44,
+ 0x320c47,
+ 0x3cf249,
+ 0x221a85,
+ 0x26a88,
+ 0x372185,
+ 0x2028c5,
+ 0x367bc9,
+ 0x201182,
+ 0x2556c4,
+ 0x20f582,
+ 0x203382,
+ 0x361b85,
+ 0x352948,
+ 0x2d1385,
+ 0x2dfe43,
+ 0x2dfe45,
+ 0x2ec5c3,
+ 0x211402,
+ 0x298a44,
+ 0x203a83,
0x200a82,
- 0x2c4d84,
- 0x318f43,
- 0x203482,
- 0x269503,
- 0x2307c4,
- 0x3093c3,
- 0x25be04,
- 0x201ec2,
- 0x21f5c3,
- 0x214a83,
- 0x202d82,
- 0x352902,
- 0x2cec89,
+ 0x2f81c4,
+ 0x30d543,
+ 0x2043c2,
+ 0x26e983,
+ 0x2189c4,
+ 0x309483,
+ 0x2623c4,
+ 0x201782,
+ 0x21ee83,
+ 0x21e503,
0x204942,
- 0x296884,
- 0x21ef42,
- 0x2603c4,
- 0x213284,
- 0x2d7284,
- 0x204a42,
- 0x247e02,
- 0x35d143,
- 0x2a2683,
- 0x291704,
- 0x2e1184,
- 0x307fc4,
- 0x31fe44,
- 0x31d303,
- 0x208f03,
- 0x3014c4,
- 0x322cc4,
- 0x322e06,
- 0x229782,
- 0x16542,
- 0x4ab43,
- 0x216542,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x14c45,
+ 0x29ec82,
+ 0x286f49,
+ 0x205182,
+ 0x29b184,
+ 0x203ac2,
+ 0x264644,
+ 0x2b8184,
+ 0x2d4844,
+ 0x201b02,
+ 0x249442,
+ 0x396583,
+ 0x311d43,
+ 0x297204,
+ 0x2e6f44,
+ 0x31e604,
+ 0x320dc4,
+ 0x31c503,
+ 0x383983,
+ 0x308044,
+ 0x322604,
+ 0x322746,
+ 0x202742,
+ 0x5842,
+ 0x4d383,
+ 0x205842,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x14305,
0x2000c2,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x206203,
- 0x343b43,
- 0x2b1b84,
- 0x2cef44,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x21f6c3,
- 0x305b04,
- 0x20bc43,
- 0x21bcc3,
- 0x37dc04,
- 0x379ac6,
- 0x2079c3,
- 0x146c05,
- 0xb46c7,
- 0x203643,
- 0x7aa176c8,
- 0x209a43,
- 0x2c45c3,
- 0x24c243,
- 0x233243,
- 0x3c2545,
- 0xcd43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x212343,
- 0x203e43,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x243543,
- 0x2296c3,
- 0x28ea04,
- 0x7ca83,
- 0x20cb83,
- 0x2cce44,
- 0x146c05,
- 0x2d3605,
- 0xb46c7,
- 0x216542,
- 0x2104c2,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x206dc3,
+ 0x2e9c43,
+ 0x258104,
+ 0x287204,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x202783,
+ 0x305d44,
+ 0x329b43,
+ 0x223503,
+ 0x387d04,
+ 0x371f86,
+ 0x207e43,
+ 0x145d45,
+ 0xf1a47,
+ 0x261c03,
+ 0x7ae14fc8,
+ 0x209343,
+ 0x2ca043,
+ 0x21b643,
+ 0x2335c3,
+ 0x371ac5,
+ 0x38483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x211543,
+ 0x2033c3,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x25e043,
+ 0x2127c3,
+ 0x294384,
+ 0x81983,
+ 0x21f483,
+ 0x2d0584,
+ 0x145d45,
+ 0x2f5345,
+ 0xf1a47,
+ 0x205842,
+ 0x201902,
0x200382,
- 0x204cc2,
- 0xd903,
+ 0x2048c2,
+ 0xbc03,
0x2003c2,
- 0x12dc04,
- 0x216543,
- 0x23ec84,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x202b03,
- 0x25dd04,
- 0x793c8,
- 0x216543,
- 0x20d903,
- 0x1a143,
- 0x11a5c4,
- 0x21d684,
- 0x793c8,
- 0x16542,
- 0x216543,
- 0x256d44,
- 0x2b1b84,
- 0x20d903,
- 0x203c82,
- 0x7ca83,
- 0x20cb83,
- 0x24c343,
- 0xd1984,
- 0x355b45,
- 0x213402,
- 0x323543,
- 0x10e689,
- 0xebd86,
- 0x1c4688,
+ 0x1544,
+ 0x229f43,
+ 0x241284,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x217083,
+ 0x29f804,
+ 0x7ffc8,
+ 0x229f43,
+ 0x20bc03,
+ 0xb8c3,
+ 0x123944,
+ 0x259b44,
+ 0x7ffc8,
+ 0x5842,
+ 0x229f43,
+ 0x25b9c4,
+ 0x258104,
+ 0x20bc03,
+ 0x200f82,
+ 0x81983,
+ 0x21f483,
+ 0x23ffc3,
+ 0x4a3c4,
+ 0x32e885,
+ 0x208ec2,
+ 0x325ec3,
+ 0x172fc9,
+ 0xf2386,
+ 0x87e08,
0x2000c2,
- 0x793c8,
- 0x216542,
- 0x222bc3,
- 0x343b43,
+ 0x7ffc8,
+ 0x205842,
+ 0x224d03,
+ 0x2e9c43,
0x2005c2,
- 0xd903,
- 0x20cb83,
- 0xfe02,
+ 0xbc03,
+ 0x21f483,
+ 0x2802,
0x82,
0xc2,
- 0x1cc547,
- 0x14a709,
- 0x3a43,
- 0x793c8,
- 0x17d0c3,
- 0x7e3e71c7,
- 0x16543,
- 0x10508,
- 0x22bc3,
- 0x143b43,
- 0x432c6,
- 0x43543,
- 0x15d8c8,
- 0xd5c08,
- 0x1c1ac3,
- 0x83646,
- 0x7e5a9d85,
- 0x16443,
- 0x98e48,
- 0xdfc08,
- 0x103d03,
- 0x7e8ef3c6,
- 0xf3585,
- 0x1a1dc4,
- 0x3c787,
- 0x296c3,
- 0x4f83,
- 0xcb83,
- 0x4642,
- 0x15b0ca,
- 0xc205,
- 0x7303,
- 0x7eed308c,
- 0xffcc3,
- 0x10ba84,
- 0x11ac8b,
- 0x11b248,
- 0x15d184,
- 0x9a402,
- 0x4b343,
- 0x145fdc7,
- 0x157a147,
- 0x14da108,
- 0x144b343,
- 0x1c4b88,
- 0x1ad30b,
- 0x14182,
- 0x132747,
- 0x114bc4,
+ 0x1d0347,
+ 0x1e949,
+ 0x2fc3,
+ 0x7ffc8,
+ 0x18f203,
+ 0x7e724f47,
+ 0x29f43,
+ 0xfdc8,
+ 0x24d03,
+ 0x86247,
+ 0xe9c43,
+ 0x3d286,
+ 0x5e043,
+ 0xa9388,
+ 0xdc448,
+ 0x1d4883,
+ 0x122246,
+ 0x7e92fc05,
+ 0x1318c5,
+ 0x19c03,
+ 0x9dac8,
+ 0xe59c8,
+ 0x62b03,
+ 0x7ecf6786,
+ 0xfb305,
+ 0x869c4,
+ 0x3e8c7,
+ 0x127c3,
+ 0x4b83,
+ 0x1f483,
+ 0x2082,
+ 0x18a0ca,
+ 0x37945,
+ 0x3d43,
+ 0x7f2d8e0c,
+ 0x161c43,
+ 0x120984,
+ 0x118ecb,
+ 0x119488,
+ 0x1965c4,
+ 0xa1342,
+ 0x45f03,
+ 0x1434307,
+ 0x15ce3c7,
+ 0x14dff08,
+ 0x1445f03,
+ 0x1c8bc8,
+ 0x1496944,
+ 0x183dcb,
+ 0x12c82,
+ 0x1300c7,
+ 0x14bc04,
0x2000c2,
- 0x216542,
- 0x23ec84,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x233243,
- 0x2296c3,
- 0x20cb83,
- 0x204683,
- 0x202b03,
- 0x39fc3,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x602,
- 0x1a143,
- 0x143b43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x233243,
- 0x2296c3,
- 0x20cb83,
- 0x22a042,
+ 0x205842,
+ 0x241284,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2335c3,
+ 0x2127c3,
+ 0x21f483,
+ 0x2a31c3,
+ 0x217083,
+ 0x13803,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0xb8c3,
+ 0x24d03,
+ 0x814e9c43,
+ 0x80407,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x2335c3,
+ 0x2127c3,
+ 0x21f483,
+ 0x26ca02,
0x2000c1,
0x2000c2,
0x200201,
- 0x338b82,
- 0x793c8,
- 0x224545,
+ 0x3385c2,
+ 0x7ffc8,
+ 0x224f85,
0x200101,
- 0x16543,
- 0x3a304,
- 0x201381,
+ 0x29f43,
+ 0x3b4c4,
+ 0x200d01,
0x200501,
- 0x201281,
- 0x251242,
- 0x251244,
- 0x251943,
+ 0x200c01,
+ 0x254602,
+ 0x395c04,
+ 0x254603,
0x200041,
0x200801,
0x200181,
- 0x18ab06,
+ 0x1eaa46,
0x200701,
- 0x30d307,
- 0x312d8f,
- 0x399086,
+ 0x3bc807,
+ 0x38decf,
+ 0x3786c6,
0x2004c1,
- 0x31a606,
- 0x200bc1,
+ 0x323986,
+ 0x200b41,
0x200581,
- 0x3e61ce,
+ 0x3b7fce,
0x2003c1,
- 0x20cb83,
+ 0x21f483,
0x200a81,
- 0x3a8d85,
- 0x204642,
- 0x24d905,
+ 0x328745,
+ 0x202082,
+ 0x216e05,
0x200401,
0x200741,
0x2007c1,
- 0x213402,
+ 0x208ec2,
0x200081,
- 0x201641,
- 0x207281,
- 0x2024c1,
- 0x208481,
- 0x5c549,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0xac1c8,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x2203c3,
- 0x2f43,
- 0x216543,
- 0x343b43,
- 0x9a348,
- 0x216443,
- 0x2296c3,
- 0x91c43,
- 0x20cb83,
- 0x82a99048,
- 0x1e9343,
- 0x12248,
- 0xcd42,
- 0x3c43,
- 0x13242,
- 0x4a42,
- 0x146c05,
- 0x793c8,
- 0x9fb06,
- 0x15edc7,
- 0xd903,
- 0x146c05,
- 0x171684,
- 0x1cdf88,
- 0x4f344,
- 0x106a47,
- 0x60244,
- 0xb1c0c,
- 0x1db944,
- 0xdaf45,
- 0x5c549,
- 0x16e507,
- 0x28846,
- 0x191ca,
- 0x14f990a,
- 0x793c8,
- 0x7ca83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x203b43,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x2e8fc4,
- 0x20cb83,
- 0x2655c5,
- 0x2484c4,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x201582,
- 0x2296c3,
- 0x20cb83,
- 0x2b03,
- 0xedac6,
- 0x12f6c4,
- 0x124c46,
- 0x253c43,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2296c3,
- 0x20cb83,
- 0x216542,
- 0x216543,
- 0x23a889,
- 0x222bc3,
- 0x2b79c9,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x84e04,
- 0xd903,
- 0x20cb83,
- 0x305308,
- 0x3e2687,
- 0x355b45,
- 0xd3a48,
- 0x1db108,
- 0x1cc547,
- 0xfe30a,
- 0x1c790b,
- 0x11a847,
- 0x48f08,
- 0xf4a0a,
- 0x26888,
- 0x14a709,
- 0x2f547,
- 0x1ed87,
- 0x10efc8,
- 0x10508,
- 0x4a2cf,
- 0xaad45,
- 0x1fc47,
- 0x432c6,
- 0x14cd47,
- 0x130286,
- 0x15d8c8,
- 0xa3706,
- 0x1405c7,
- 0x1798c9,
- 0x1df3c7,
- 0xc6d09,
- 0xcd749,
- 0xd3386,
- 0xd5c08,
- 0xd3d05,
- 0x86f4a,
- 0xdfc08,
- 0x103d03,
- 0xe6008,
- 0x3c787,
- 0x133485,
- 0x649d0,
- 0x4f83,
- 0x7ca83,
- 0x179747,
- 0x2d445,
- 0xffa48,
- 0x74505,
- 0xffcc3,
- 0x1a3108,
- 0x1a1386,
- 0x9ec09,
- 0xba247,
- 0x10e94b,
- 0x77a04,
- 0x113b84,
- 0x11ac8b,
- 0x11b248,
- 0x11bb07,
- 0x146c05,
- 0x216543,
- 0x222bc3,
- 0x2f5503,
- 0x20cb83,
- 0x248783,
- 0x343b43,
- 0x7ca83,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x9c1cb,
+ 0x205241,
+ 0x201541,
+ 0x201c41,
+ 0x201b81,
+ 0x60209,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x10e7c8,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x21fc83,
+ 0x1efd03,
+ 0x229f43,
+ 0x2e9c43,
+ 0xa1288,
+ 0x219c03,
+ 0x2127c3,
+ 0x9843,
+ 0x21f483,
+ 0x82f0ad88,
+ 0x1ef9c3,
+ 0x11448,
+ 0x12d02,
+ 0x2583,
+ 0x6cc2,
+ 0x1b02,
+ 0x145d45,
+ 0x7ffc8,
+ 0x9e0c6,
+ 0x161487,
+ 0xbc03,
+ 0x145d45,
+ 0x179c04,
+ 0x199ac8,
+ 0x51a44,
+ 0x1217c7,
+ 0x63e44,
+ 0x5818c,
+ 0x1e6644,
+ 0x27885,
+ 0x60209,
+ 0x176507,
+ 0x1df86,
+ 0x5b74a,
+ 0x156e00a,
+ 0x11d484,
+ 0x1506c43,
+ 0x7ffc8,
+ 0x81983,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2127c3,
+ 0x21f483,
+ 0x2030c3,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2ef2c4,
+ 0x21f483,
+ 0x28a685,
+ 0x279884,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2026c2,
+ 0x2127c3,
+ 0x21f483,
+ 0x17083,
+ 0xf3f86,
+ 0xc2904,
+ 0x124a86,
+ 0x258843,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2026c2,
+ 0x2127c3,
+ 0x21f483,
+ 0x217083,
+ 0x205842,
+ 0x229f43,
+ 0x23ba49,
+ 0x224d03,
+ 0x2bc9c9,
+ 0x219c03,
+ 0x2127c3,
+ 0x8d344,
+ 0xbc03,
+ 0x21f483,
+ 0x305548,
+ 0x245347,
+ 0x32e885,
+ 0xd2048,
+ 0x12e889,
+ 0x1e5e08,
+ 0x1d0347,
+ 0xff04a,
+ 0x15964b,
+ 0x123bc7,
+ 0x4af48,
+ 0x8fca,
+ 0xc9508,
+ 0x1e949,
+ 0x2e447,
+ 0x1d8c7,
+ 0xbd08,
+ 0xfdc8,
+ 0x4cc4f,
+ 0xb0045,
+ 0x1f507,
+ 0x3d286,
+ 0x41007,
+ 0x12c686,
+ 0xa9388,
+ 0xae506,
+ 0x1404c7,
+ 0x167fc9,
+ 0x1ca87,
+ 0xe7d89,
+ 0xd2449,
+ 0xd9106,
+ 0xdc448,
+ 0xd2305,
+ 0x158e0a,
+ 0xe59c8,
+ 0x62b03,
+ 0xec9c8,
+ 0x3e8c7,
+ 0x1865c5,
+ 0x160810,
+ 0x4b83,
+ 0x81983,
+ 0x183307,
+ 0x1c605,
+ 0xffd88,
+ 0x7a605,
+ 0x161c43,
+ 0x1dea48,
+ 0x2606,
+ 0x15f089,
+ 0xbfb87,
+ 0x17328b,
+ 0x7f144,
+ 0x112d84,
+ 0x118ecb,
+ 0x119488,
+ 0x119d47,
+ 0x145d45,
+ 0x229f43,
+ 0x224d03,
+ 0x28c6c3,
+ 0x21f483,
+ 0x249f03,
+ 0x2e9c43,
+ 0x81983,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x1ddb4b,
0x2000c2,
- 0x216542,
- 0x20cb83,
- 0xd42,
- 0x1582,
- 0x1642,
- 0x793c8,
- 0x1b7409,
- 0x1c4b88,
- 0x16542,
+ 0x205842,
+ 0x21f483,
+ 0x2102,
+ 0x26c2,
+ 0x5ec2,
+ 0x7ffc8,
+ 0x12b409,
+ 0x1c8bc8,
+ 0x5842,
0x2000c2,
- 0x216542,
+ 0x205842,
0x200382,
0x2005c2,
- 0x202042,
- 0x2296c3,
- 0x148ec6,
+ 0x205c02,
+ 0x2127c3,
+ 0x165c6,
0x2003c2,
- 0xd1984,
+ 0x4a3c4,
0x2000c2,
- 0x253c43,
- 0x216542,
- 0x216543,
- 0x222bc3,
+ 0x258843,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
0x200382,
- 0x343b43,
- 0x243543,
- 0x216443,
- 0x21b544,
- 0x2296c3,
- 0x20b243,
- 0xd903,
- 0x20cb83,
- 0x30ba84,
- 0x201643,
- 0x343b43,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x20d903,
- 0x20cb83,
- 0x3c5747,
- 0x216543,
- 0x2868c7,
- 0x3823c6,
- 0x209843,
- 0x21a003,
- 0x343b43,
- 0x20e443,
- 0x2b1b84,
- 0x243544,
- 0x3d66c6,
- 0x202803,
- 0x2296c3,
- 0x127f0b,
- 0x20cb83,
- 0x2655c5,
- 0x2f7184,
- 0x3b6703,
- 0x343483,
- 0x2db6c7,
- 0x2f6985,
- 0x1a1003,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x216443,
- 0x2296c3,
- 0x1c1184,
- 0x20cb83,
- 0x1fa83,
- 0x89f0b24c,
- 0x58083,
- 0x4bc47,
- 0x80dc6,
- 0x120047,
- 0x133d85,
- 0x205242,
- 0x246dc3,
- 0x211d43,
- 0x253c43,
- 0x8aa16543,
- 0x2080c2,
- 0x222bc3,
- 0x204f03,
- 0x343b43,
- 0x2b1b84,
- 0x34b203,
- 0x27b903,
- 0x216443,
- 0x21b544,
- 0x8ae06c02,
- 0x2296c3,
- 0x20cb83,
- 0x20e603,
- 0x209203,
- 0x2883c3,
- 0x22a042,
- 0x201643,
- 0x793c8,
- 0x343b43,
- 0x1a143,
- 0x258bc4,
- 0x253c43,
- 0x216542,
- 0x216543,
- 0x23ec84,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x243543,
- 0x239104,
- 0x28d4c4,
- 0x2e8306,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x21f6c3,
- 0x27d046,
- 0x4290b,
- 0x32f46,
- 0xb6c0a,
- 0x11faca,
- 0x793c8,
- 0x22f004,
- 0x8c216543,
- 0x32c744,
- 0x222bc3,
- 0x219a44,
- 0x343b43,
- 0x284103,
- 0x216443,
- 0x2296c3,
- 0x7ca83,
- 0x20cb83,
- 0x31c03,
- 0x348b0b,
- 0x3d368a,
- 0x3e8e4c,
- 0xefc08,
+ 0x2e9c43,
+ 0x25e043,
+ 0x219c03,
+ 0x222d84,
+ 0x2127c3,
+ 0x21c043,
+ 0xbc03,
+ 0x21f483,
+ 0x320984,
+ 0x205ec3,
+ 0x2e9c43,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x20bc03,
+ 0x21f483,
+ 0x3c96c7,
+ 0x229f43,
+ 0x24dac7,
+ 0x3a3d06,
+ 0x21b983,
+ 0x226403,
+ 0x2e9c43,
+ 0x204203,
+ 0x258104,
+ 0x3b4204,
+ 0x33ef46,
+ 0x231083,
+ 0x2127c3,
+ 0x10aacb,
+ 0x21f483,
+ 0x28a685,
+ 0x22b5c4,
+ 0x3b6a43,
+ 0x3d8003,
+ 0x2e1487,
+ 0x236f05,
+ 0x2283,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x1c3404,
+ 0x21f483,
+ 0x1f343,
+ 0x8a30d6cc,
+ 0x5db43,
+ 0x53a87,
+ 0x4c106,
+ 0xd5247,
+ 0x135f85,
+ 0x204e42,
+ 0x256803,
+ 0x219383,
+ 0x258843,
+ 0x8ae29f43,
+ 0x208542,
+ 0x224d03,
+ 0x204b03,
+ 0x2e9c43,
+ 0x258104,
+ 0x3ce883,
+ 0x372ac3,
+ 0x219c03,
+ 0x222d84,
+ 0x8b203bc2,
+ 0x2127c3,
+ 0x21f483,
+ 0x2043c3,
+ 0x229c83,
+ 0x212843,
+ 0x26ca02,
+ 0x205ec3,
+ 0x7ffc8,
+ 0x2e9c43,
+ 0xb8c3,
+ 0x285584,
+ 0x258843,
+ 0x205842,
+ 0x229f43,
+ 0x241284,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x25e043,
+ 0x276f44,
+ 0x292e44,
+ 0x2edcc6,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x202783,
+ 0x278606,
+ 0x46bcb,
+ 0x332c6,
+ 0x12650a,
+ 0x11e28a,
+ 0x7ffc8,
+ 0x243244,
+ 0x8c629f43,
+ 0x384f44,
+ 0x224d03,
+ 0x29e6c4,
+ 0x2e9c43,
+ 0x352e83,
+ 0x219c03,
+ 0x2127c3,
+ 0x81983,
+ 0x21f483,
+ 0x2f7c3,
+ 0x34804b,
+ 0x3dc94a,
+ 0x3ef4cc,
+ 0xf7088,
0x2000c2,
- 0x216542,
+ 0x205842,
0x200382,
- 0x2b96c5,
- 0x2b1b84,
- 0x201582,
- 0x216443,
- 0x28d4c4,
- 0x204cc2,
+ 0x235c45,
+ 0x258104,
+ 0x2026c2,
+ 0x219c03,
+ 0x292e44,
+ 0x2048c2,
0x2003c2,
- 0x202b02,
- 0x22a042,
- 0x53c43,
- 0x4042,
- 0x2d5fc9,
- 0x278a08,
- 0x3d8a09,
- 0x39d3c9,
- 0x2116ca,
- 0x21424a,
- 0x208d02,
- 0x22e702,
- 0x16542,
- 0x216543,
- 0x213b02,
- 0x24a1c6,
- 0x378742,
- 0x47402,
- 0x201442,
- 0x3c7c8e,
- 0x21f60e,
- 0x3d1b47,
- 0x219cc2,
- 0x222bc3,
- 0x343b43,
- 0x20bac2,
+ 0x2036c2,
+ 0x26ca02,
+ 0x58843,
+ 0x35c2,
+ 0x2da949,
+ 0x27ce48,
+ 0x2f0949,
+ 0x3a6ac9,
+ 0x212d4a,
+ 0x214aca,
+ 0x20d482,
+ 0x2b90c2,
+ 0x5842,
+ 0x229f43,
+ 0x20f1c2,
+ 0x24cb46,
+ 0x329c42,
+ 0x48e02,
+ 0x20ad42,
+ 0x3599ce,
+ 0x21eece,
+ 0x212747,
+ 0x2154c2,
+ 0x224d03,
+ 0x2e9c43,
+ 0x205d42,
0x2005c2,
- 0x6a7c3,
- 0x23ee8f,
+ 0x58103,
+ 0x24148f,
+ 0x21d942,
+ 0x2e8447,
+ 0x2ecb87,
+ 0x2f1d07,
+ 0x2f5d4c,
+ 0x2fbe8c,
+ 0x2fc844,
+ 0x291c0a,
0x21ee02,
- 0x2eae47,
- 0x2e2587,
- 0x2e61c7,
- 0x2f0e4c,
- 0x2f2e0c,
- 0x258884,
- 0x28c28a,
- 0x21f542,
- 0x207bc2,
- 0x2cf304,
+ 0x208042,
+ 0x2d4344,
0x200702,
- 0x2d8882,
- 0x2f3044,
- 0x21ab82,
- 0x209d42,
- 0x1b283,
- 0x2a3787,
- 0x288345,
- 0x2205c2,
- 0x319f04,
- 0x30f082,
- 0x2ef548,
- 0x2296c3,
- 0x3773c8,
- 0x204d82,
- 0x258a45,
- 0x39b086,
- 0x20cb83,
- 0x2059c2,
- 0x300947,
- 0x4642,
- 0x2504c5,
- 0x203505,
- 0x201782,
- 0x207f02,
- 0x3cfd8a,
- 0x27c68a,
- 0x279c42,
- 0x2a94c4,
- 0x200f02,
- 0x271148,
- 0x20e002,
- 0x2b4bc8,
- 0x17c1,
- 0x316887,
- 0x3174c9,
- 0x203582,
- 0x31c385,
- 0x372b05,
- 0x3d088b,
- 0x3d6c4c,
- 0x237288,
- 0x332588,
- 0x229782,
- 0x259342,
+ 0x24f6c2,
+ 0x2fc0c4,
+ 0x21c142,
+ 0x20b982,
+ 0x280c3,
+ 0x2ae587,
+ 0x35ba05,
+ 0x22d442,
+ 0x240f84,
+ 0x20bdc2,
+ 0x2f6908,
+ 0x2127c3,
+ 0x37f808,
+ 0x204982,
+ 0x2fca05,
+ 0x3a4706,
+ 0x21f483,
+ 0x206582,
+ 0x300b87,
+ 0x2082,
+ 0x252e45,
+ 0x331d05,
+ 0x20b082,
+ 0x208382,
+ 0x3cb68a,
+ 0x2805ca,
+ 0x246f82,
+ 0x2af444,
+ 0x202602,
+ 0x23a8c8,
+ 0x20d682,
+ 0x2dd588,
+ 0x4c01,
+ 0x314487,
+ 0x315189,
+ 0x252ec2,
+ 0x31ab85,
+ 0x37ba45,
+ 0x21c6cb,
+ 0x20d0cc,
+ 0x2323c8,
+ 0x32ff08,
+ 0x202742,
+ 0x25d042,
0x2000c2,
- 0x793c8,
- 0x216542,
- 0x216543,
+ 0x7ffc8,
+ 0x205842,
+ 0x229f43,
0x200382,
- 0x204cc2,
- 0xd903,
+ 0x2048c2,
+ 0xbc03,
0x2003c2,
- 0x20cb83,
- 0x202b02,
+ 0x21f483,
+ 0x2036c2,
0x2000c2,
- 0x146c05,
- 0x8d616542,
- 0x10b384,
- 0x405c5,
- 0x8e743b43,
- 0x21b283,
- 0x201582,
- 0x2296c3,
- 0x3e8603,
- 0x8ea0cb83,
- 0x2faf43,
- 0x2dc2c6,
- 0xf57c5,
- 0x1602b03,
- 0x146c05,
- 0x148d8b,
- 0x793c8,
- 0x8dbb6d08,
- 0x6be87,
- 0x8deca7ca,
- 0x791c7,
- 0x10f7c5,
- 0x8e200f89,
- 0x2f20d,
- 0x430c2,
- 0x11b842,
- 0xe01,
- 0xe91c4,
- 0xb530a,
- 0x7c4c7,
- 0x30044,
- 0x30083,
- 0x30084,
- 0x8f201f02,
- 0x8f600ac2,
- 0x8fa03b42,
- 0x8fe030c2,
- 0x90208742,
- 0x90604182,
- 0xb46c7,
- 0x90a16542,
- 0x90e19d82,
- 0x9121d802,
- 0x91603242,
- 0x21f603,
- 0x2a2c4,
- 0x91aac1c8,
- 0x213643,
- 0x91e18902,
- 0x68508,
- 0x92204982,
- 0x63187,
- 0x1b88c7,
- 0x92600042,
- 0x92a00d82,
- 0x92e00182,
- 0x932042c2,
- 0x93605502,
- 0x93a005c2,
- 0x11f405,
- 0x20af03,
- 0x2f44c4,
- 0x93e00702,
- 0x94211b82,
- 0x94605542,
- 0x92b8b,
- 0x94a00c42,
- 0x95256e02,
- 0x95601582,
- 0x95a02042,
- 0x98e48,
- 0x95e28882,
- 0x96200bc2,
- 0x96603742,
- 0x96a77782,
- 0x96e06c02,
- 0x97205782,
- 0x97604cc2,
- 0x97a18f02,
- 0x97e0d502,
- 0x9820f502,
- 0xac8c4,
- 0x332ec3,
- 0x9863d1c2,
- 0x98a0bbc2,
- 0x98e0cfc2,
- 0x992006c2,
- 0x996003c2,
- 0x99a00a82,
- 0xfa6c8,
- 0x9c347,
- 0x99e037c2,
- 0x9a202a82,
- 0x9a602b02,
- 0x9aa0a0c2,
- 0x176a8c,
- 0x9ae2bdc2,
- 0x9b22ce82,
- 0x9b602e02,
- 0x9ba05002,
- 0x9be08e42,
- 0x9c211842,
- 0x9c6089c2,
- 0x9ca13342,
- 0x9ce81202,
- 0x9d281742,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x207c3,
- 0xd2443,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x94f4b203,
- 0x2207c3,
- 0x3c25c4,
- 0x3d8906,
+ 0x145d45,
+ 0x8da05842,
+ 0x10d804,
+ 0x44005,
+ 0x8eae9c43,
+ 0x2280c3,
+ 0x2026c2,
+ 0x2127c3,
+ 0x3c5f83,
+ 0x8ee1f483,
+ 0x2fe343,
+ 0x2e2306,
+ 0x1976c5,
+ 0x1617083,
+ 0x145d45,
+ 0x1482cb,
+ 0x7ffc8,
+ 0x8dfce6c8,
+ 0x6b547,
+ 0x8e2ce18a,
+ 0x7fdc7,
+ 0xcab05,
+ 0x8e786f09,
+ 0x3204d,
+ 0x3d082,
+ 0x119a82,
+ 0xc41,
+ 0xf7544,
+ 0xb978a,
+ 0x80407,
+ 0x1e5c4,
+ 0x1e603,
+ 0x1e604,
+ 0x8f603e02,
+ 0x8fa00ac2,
+ 0x8fe00ec2,
+ 0x90200b82,
+ 0x90604142,
+ 0x90a03702,
+ 0xf1a47,
+ 0x90e05842,
+ 0x91215582,
+ 0x91605802,
+ 0x91a00d02,
+ 0x21eec3,
+ 0x2ba44,
+ 0x91f0e7c8,
+ 0x220f43,
+ 0x92217202,
+ 0x6d988,
+ 0x92602a82,
+ 0x82907,
+ 0x1bbe47,
+ 0x92a00042,
+ 0x92e02142,
+ 0x93200182,
+ 0x93603842,
+ 0x93a09c42,
+ 0x93e005c2,
+ 0x16a205,
+ 0x2191c3,
+ 0x368784,
+ 0x94200702,
+ 0x94619f42,
+ 0x94a065c2,
+ 0x8e04b,
+ 0x94e00b42,
+ 0x95654902,
+ 0x95a026c2,
+ 0x95e05c02,
+ 0x9dac8,
+ 0x9621dfc2,
+ 0x9660dec2,
+ 0x96a0f782,
+ 0x96e7eec2,
+ 0x97203bc2,
+ 0x97604242,
+ 0x97a048c2,
+ 0x97e0ee02,
+ 0x9822f002,
+ 0x9860e942,
+ 0xf9304,
+ 0x381983,
+ 0x98a3fa02,
+ 0x98e1d342,
+ 0x9920dcc2,
+ 0x996006c2,
+ 0x99a003c2,
+ 0x99e00a82,
+ 0xfde88,
+ 0x1ddcc7,
+ 0x9a202782,
+ 0x9a603342,
+ 0x9aa036c2,
+ 0x9ae1ee82,
+ 0x15804c,
+ 0x9b201c82,
+ 0x9b626d42,
+ 0x9ba06202,
+ 0x9be04c02,
+ 0x9c212182,
+ 0x9c612ec2,
+ 0x9ca05242,
+ 0x9ce0f542,
+ 0x9d288142,
+ 0x9d689482,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x2d643,
+ 0xc8503,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x953ce883,
+ 0x22d643,
+ 0x371b44,
+ 0x2f0846,
0x309a43,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x35c349,
- 0x204042,
- 0x271c43,
- 0x2cda43,
- 0x3b6945,
- 0x204f03,
- 0x34b203,
- 0x2207c3,
- 0x2e69c3,
- 0x22e683,
- 0x3ca009,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x204042,
- 0x204042,
- 0x34b203,
- 0x2207c3,
- 0x9da16543,
- 0x222bc3,
- 0x39d603,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x793c8,
- 0x216542,
- 0x216543,
- 0x2296c3,
- 0x20cb83,
- 0x145842,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x9e51d0c2,
- 0x216443,
- 0x2296c3,
- 0xd903,
- 0x20cb83,
- 0x1381,
- 0x21d684,
- 0x216542,
- 0x216543,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x271609,
+ 0x2035c2,
+ 0x367e03,
+ 0x2d2743,
+ 0x3b6c85,
+ 0x204b03,
+ 0x3ce883,
+ 0x22d643,
+ 0x2ed403,
+ 0x23c7c3,
+ 0x205249,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x2035c2,
+ 0x2035c2,
+ 0x3ce883,
+ 0x22d643,
+ 0x9de29f43,
+ 0x224d03,
+ 0x3a6d03,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0x7ffc8,
+ 0x205842,
+ 0x229f43,
+ 0x2127c3,
+ 0x21f483,
+ 0x71482,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x9e90b602,
+ 0x219c03,
+ 0x2127c3,
+ 0xbc03,
+ 0x21f483,
+ 0xd01,
+ 0x259b44,
+ 0x205842,
+ 0x229f43,
0x200983,
- 0x222bc3,
- 0x256d44,
- 0x2f5503,
- 0x343b43,
- 0x2b1b84,
- 0x243543,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x24c343,
- 0x355b45,
- 0x22e683,
- 0x201643,
+ 0x224d03,
+ 0x25b9c4,
+ 0x28c6c3,
+ 0x2e9c43,
+ 0x258104,
+ 0x25e043,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x23ffc3,
+ 0x32e885,
+ 0x23c7c3,
+ 0x205ec3,
0x882,
- 0xd903,
- 0x216542,
- 0x216543,
- 0x34b203,
- 0x2296c3,
- 0x20cb83,
+ 0xbc03,
+ 0x205842,
+ 0x229f43,
+ 0x3ce883,
+ 0x2127c3,
+ 0x21f483,
0x2000c2,
- 0x253c43,
- 0x793c8,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x239c86,
- 0x2b1b84,
- 0x243543,
- 0x21b544,
- 0x2296c3,
- 0x20cb83,
- 0x21f6c3,
- 0xe804,
- 0x2e702,
- 0x216543,
- 0x20a83,
- 0x222bc3,
- 0x1582,
- 0x2296c3,
- 0x20cb83,
- 0x10e104,
- 0x6ff44,
- 0x2a02,
- 0x148bb07,
- 0x125887,
- 0x216543,
- 0x32f46,
- 0x222bc3,
- 0x343b43,
- 0xf1386,
- 0x2296c3,
- 0x20cb83,
- 0x32f188,
- 0x3323c9,
- 0x341cc9,
- 0x34b688,
- 0x39d208,
- 0x39d209,
- 0x325d0a,
- 0x36084a,
- 0x3979ca,
- 0x39ecca,
- 0x3d368a,
- 0x3dfecb,
- 0x2fc28d,
- 0x2fcf4f,
- 0x247450,
- 0x3621cd,
- 0x3813cc,
- 0x39ea0b,
- 0x16108,
- 0x13ec08,
- 0x18a0c5,
- 0x190209,
- 0x1495c87,
- 0xde645,
+ 0x258843,
+ 0x7ffc8,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x2389c6,
+ 0x258104,
+ 0x25e043,
+ 0x222d84,
+ 0x2127c3,
+ 0x21f483,
+ 0x202783,
+ 0x45c4,
+ 0xb90c2,
+ 0x229f43,
+ 0x5483,
+ 0x224d03,
+ 0x26c2,
+ 0x2127c3,
+ 0x21f483,
+ 0x76c04,
+ 0x762c4,
+ 0xfc2,
+ 0x1489e07,
+ 0x187887,
+ 0x229f43,
+ 0x332c6,
+ 0x224d03,
+ 0x2e9c43,
+ 0xf8986,
+ 0x2127c3,
+ 0x21f483,
+ 0x32bbc8,
+ 0x32fd49,
+ 0x340f89,
+ 0x34b788,
+ 0x3a6908,
+ 0x3a6909,
+ 0x3254ca,
+ 0x362f8a,
+ 0x3a0d8a,
+ 0x3a8fca,
+ 0x3dc94a,
+ 0x3ea14b,
+ 0x230a4d,
+ 0x248e4f,
+ 0x36ea90,
+ 0x36668d,
+ 0x38b00c,
+ 0x3a8d0b,
+ 0x1a20c7,
+ 0x1299ce,
+ 0x12cd8a,
+ 0x12fa49,
+ 0x140f89,
+ 0x164fc9,
+ 0x16520a,
+ 0x16de09,
+ 0x16e789,
+ 0x17014b,
+ 0x29b08,
+ 0x10b448,
+ 0x14abc9,
+ 0x1498307,
+ 0xe3f05,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x1f483,
0x2000c2,
- 0x2f67c5,
- 0x209d03,
- 0xa1e16542,
- 0x222bc3,
- 0x343b43,
- 0x380b87,
- 0x24c243,
- 0x216443,
- 0x2296c3,
- 0x257743,
- 0x20b243,
- 0x20f1c3,
- 0x20d903,
- 0x20cb83,
- 0x259186,
- 0x213402,
- 0x201643,
- 0x793c8,
+ 0x236d45,
+ 0x228083,
+ 0xa2e05842,
+ 0x224d03,
+ 0x2e9c43,
+ 0x3664c7,
+ 0x21b643,
+ 0x219c03,
+ 0x2127c3,
+ 0x25c743,
+ 0x21c043,
+ 0x204003,
+ 0x20bc03,
+ 0x21f483,
+ 0x25ce86,
+ 0x208ec2,
+ 0x205ec3,
+ 0x7ffc8,
0x2000c2,
- 0x253c43,
- 0x216542,
- 0x216543,
- 0x222bc3,
- 0x343b43,
- 0x2b1b84,
- 0x216443,
- 0x2296c3,
- 0x20cb83,
- 0x202b03,
- 0x125887,
- 0x14182,
- 0x10e684,
- 0x1534746,
+ 0x258843,
+ 0x205842,
+ 0x229f43,
+ 0x224d03,
+ 0x2e9c43,
+ 0x258104,
+ 0x219c03,
+ 0x2127c3,
+ 0x21f483,
+ 0x217083,
+ 0x187887,
+ 0x12c82,
+ 0x9744,
+ 0x151d546,
0x2000c2,
- 0x216542,
- 0x343b43,
- 0x216443,
- 0x20cb83,
+ 0x205842,
+ 0x2e9c43,
+ 0x219c03,
+ 0x21f483,
}
// children is the list of nodes' children, the parent's wildcard bit and the
@@ -9781,49 +9862,50 @@ var children = [...]uint32{
0x40000000,
0x50000000,
0x60000000,
- 0x17bc5e9,
- 0x17c05ef,
- 0x17c45f0,
- 0x17e85f1,
- 0x19405fa,
- 0x1958650,
- 0x196c656,
- 0x198465b,
- 0x19a4661,
- 0x19c8669,
- 0x19e0672,
- 0x1a08678,
- 0x1a0c682,
- 0x1a34683,
- 0x1a3868d,
- 0x1a5068e,
+ 0x17a05e2,
+ 0x17a45e8,
+ 0x17a85e9,
+ 0x17cc5ea,
+ 0x19245f3,
+ 0x193c649,
+ 0x195064f,
+ 0x1968654,
+ 0x198865a,
+ 0x19ac662,
+ 0x19c466b,
+ 0x1a04671,
+ 0x1a08681,
+ 0x1a30682,
+ 0x1a3468c,
+ 0x1a4c68d,
+ 0x1a50693,
0x1a54694,
- 0x1a58695,
- 0x1a98696,
+ 0x1a94695,
+ 0x1a986a5,
0x1a9c6a6,
- 0x1aa06a7,
- 0x21aa46a8,
- 0x61aac6a9,
- 0x21ab46ab,
- 0x1afc6ad,
- 0x1b046bf,
- 0x21b086c1,
- 0x1b2c6c2,
- 0x1b306cb,
- 0x1b446cc,
- 0x1b486d1,
- 0x1b686d2,
- 0x1b986da,
- 0x1bb46e6,
- 0x1bbc6ed,
- 0x1be46ef,
- 0x1bf86f9,
+ 0x21aa06a7,
+ 0x61aa86a8,
+ 0x21ab06aa,
+ 0x1af86ac,
+ 0x1b006be,
+ 0x21b046c0,
+ 0x1b286c1,
+ 0x1b2c6ca,
+ 0x1b406cb,
+ 0x1b446d0,
+ 0x1b646d1,
+ 0x1b946d9,
+ 0x1bb06e5,
+ 0x1bb86ec,
+ 0x1be06ee,
+ 0x1bf86f8,
0x21bfc6fe,
- 0x1c006ff,
- 0x1c98700,
- 0x1cac726,
- 0x1cc072b,
- 0x1cfc730,
+ 0x21c006ff,
+ 0x1c04700,
+ 0x1c9c701,
+ 0x1cb0727,
+ 0x1cc472c,
+ 0x1cfc731,
0x1d0c73f,
0x1d20743,
0x1d38748,
@@ -9837,549 +9919,532 @@ var children = [...]uint32{
0x211083e,
0x2124844,
0x2128849,
- 0x213084a,
- 0x214884c,
- 0x214c852,
- 0x2170853,
- 0x21c085c,
- 0x21c4870,
- 0x221c8871,
- 0x21e8872,
- 0x21ec87a,
+ 0x212c84a,
+ 0x213484b,
+ 0x214c84d,
+ 0x2150853,
+ 0x2174854,
+ 0x21c485d,
+ 0x21c8871,
+ 0x221cc872,
+ 0x21ec873,
0x21f087b,
- 0x221c87c,
- 0x62220887,
- 0x22228888,
- 0x2222c88a,
- 0x227088b,
- 0x227489c,
+ 0x21f487c,
+ 0x222087d,
+ 0x62224888,
+ 0x2222c889,
+ 0x2223088b,
+ 0x227488c,
0x6227889d,
0x229489e,
- 0x22e88a5,
- 0x222ec8ba,
+ 0x22ec8a5,
0x222f08bb,
- 0x222f88bc,
- 0x222fc8be,
+ 0x222f48bc,
+ 0x222fc8bd,
0x223008bf,
0x223048c0,
- 0x230c8c1,
- 0x23108c3,
- 0x2231c8c4,
- 0x223248c7,
- 0x23348c9,
- 0x23448cd,
- 0x23f88d1,
- 0x23fc8fe,
- 0x2240c8ff,
- 0x22410903,
- 0x22418904,
- 0x2470906,
- 0x247491c,
+ 0x23088c1,
+ 0x23108c2,
+ 0x23148c4,
+ 0x223208c5,
+ 0x223288c8,
+ 0x23388ca,
+ 0x23488ce,
+ 0x23fc8d2,
+ 0x24008ff,
+ 0x22410900,
+ 0x22414904,
+ 0x2241c905,
+ 0x2474907,
0x247891d,
- 0x29ec91e,
- 0x29f0a7b,
- 0x22a98a7c,
- 0x22a9caa6,
- 0x22aa0aa7,
- 0x22aacaa8,
- 0x22ab0aab,
- 0x22abcaac,
- 0x22ac0aaf,
- 0x22ac4ab0,
- 0x22ac8ab1,
- 0x22accab2,
- 0x22ad0ab3,
- 0x22adcab4,
- 0x22ae0ab7,
- 0x22aecab8,
- 0x22af0abb,
- 0x22af4abc,
- 0x22af8abd,
- 0x22b04abe,
- 0x22b08ac1,
- 0x22b14ac2,
- 0x22b18ac5,
- 0x22b1cac6,
+ 0x247c91e,
+ 0x248091f,
+ 0x2a4c920,
+ 0x2a50a93,
+ 0x22af8a94,
+ 0x22afcabe,
+ 0x22b00abf,
+ 0x22b0cac0,
+ 0x22b10ac3,
+ 0x22b1cac4,
0x22b20ac7,
- 0x2b24ac8,
+ 0x22b24ac8,
0x22b28ac9,
- 0x22b34aca,
- 0x22b38acd,
- 0x2b3cace,
- 0x2b44acf,
- 0x22b50ad1,
- 0x62b5cad4,
- 0x2ba0ad7,
- 0x2ba4ae8,
- 0x22bc4ae9,
- 0x22bc8af1,
- 0x22bccaf2,
- 0x22bd4af3,
- 0x22bdcaf5,
- 0x22be0af7,
- 0x22be4af8,
- 0x22becaf9,
- 0x22bf0afb,
- 0x22bf4afc,
- 0x2bf8afd,
- 0x22c18afe,
+ 0x22b2caca,
+ 0x22b30acb,
+ 0x22b3cacc,
+ 0x22b40acf,
+ 0x22b4cad0,
+ 0x22b50ad3,
+ 0x22b54ad4,
+ 0x22b58ad5,
+ 0x22b64ad6,
+ 0x22b68ad9,
+ 0x22b74ada,
+ 0x22b78add,
+ 0x22b7cade,
+ 0x22b80adf,
+ 0x2b84ae0,
+ 0x22b88ae1,
+ 0x22b94ae2,
+ 0x22b98ae5,
+ 0x2b9cae6,
+ 0x2ba4ae7,
+ 0x62bb0ae9,
+ 0x2bf4aec,
+ 0x22c14afd,
+ 0x22c18b05,
0x22c1cb06,
- 0x22c20b07,
- 0x22c24b08,
- 0x22c28b09,
- 0x22c34b0a,
- 0x22c38b0d,
- 0x2c3cb0e,
- 0x2c44b0f,
- 0x2c4cb11,
- 0x2c50b13,
- 0x2c6cb14,
- 0x2c84b1b,
- 0x2c88b21,
- 0x2c98b22,
- 0x2ca4b26,
- 0x2cd8b29,
- 0x2ce0b36,
- 0x22ce4b38,
- 0x2cfcb39,
- 0x22d04b3f,
- 0x22d08b41,
- 0x22d10b42,
- 0x2e0cb44,
- 0x22e10b83,
- 0x2e18b84,
- 0x2e1cb86,
- 0x22e20b87,
- 0x2e24b88,
- 0x2e54b89,
- 0x2e58b95,
- 0x2e5cb96,
- 0x2e74b97,
- 0x2e88b9d,
- 0x2eb0ba2,
- 0x2ed8bac,
- 0x2edcbb6,
- 0x62ee0bb7,
- 0x2f14bb8,
- 0x2f18bc5,
- 0x22f1cbc6,
- 0x2f20bc7,
- 0x2f48bc8,
- 0x2f4cbd2,
- 0x2f70bd3,
- 0x2f74bdc,
- 0x2f88bdd,
- 0x2f8cbe2,
- 0x2f90be3,
- 0x2fb0be4,
- 0x2fd4bec,
- 0x22fd8bf5,
- 0x22fdcbf6,
- 0x2fe0bf7,
- 0x22fe4bf8,
- 0x2fe8bf9,
- 0x2fecbfa,
+ 0x22c24b07,
+ 0x22c2cb09,
+ 0x22c30b0b,
+ 0x22c34b0c,
+ 0x22c3cb0d,
+ 0x22c40b0f,
+ 0x22c44b10,
+ 0x2c48b11,
+ 0x22c74b12,
+ 0x22c78b1d,
+ 0x22c7cb1e,
+ 0x2c80b1f,
+ 0x22c84b20,
+ 0x22c88b21,
+ 0x22c94b22,
+ 0x22c98b25,
+ 0x2c9cb26,
+ 0x2ca4b27,
+ 0x2cacb29,
+ 0x2cb0b2b,
+ 0x2cccb2c,
+ 0x2ce4b33,
+ 0x2ce8b39,
+ 0x2cf8b3a,
+ 0x2d04b3e,
+ 0x2d38b41,
+ 0x2d40b4e,
+ 0x22d44b50,
+ 0x2d5cb51,
+ 0x22d64b57,
+ 0x22d68b59,
+ 0x22d70b5a,
+ 0x2e74b5c,
+ 0x22e78b9d,
+ 0x2e80b9e,
+ 0x2e84ba0,
+ 0x22e88ba1,
+ 0x2e8cba2,
+ 0x2ed0ba3,
+ 0x2ed4bb4,
+ 0x2ed8bb5,
+ 0x2ef0bb6,
+ 0x2f04bbc,
+ 0x2f2cbc1,
+ 0x2f54bcb,
+ 0x2f58bd5,
+ 0x62f5cbd6,
+ 0x2f90bd7,
+ 0x2f94be4,
+ 0x22f98be5,
+ 0x2f9cbe6,
+ 0x2fc4be7,
+ 0x2fc8bf1,
+ 0x2fecbf2,
0x2ff0bfb,
- 0x2ff4bfc,
- 0x3010bfd,
- 0x23014c04,
- 0x2301cc05,
- 0x3020c07,
- 0x3048c08,
- 0x305cc12,
- 0x30d0c17,
- 0x30dcc34,
- 0x30e0c37,
- 0x3100c38,
- 0x3118c40,
- 0x311cc46,
- 0x3130c47,
- 0x3148c4c,
- 0x3168c52,
- 0x3180c5a,
- 0x3188c60,
- 0x31a4c62,
- 0x31c0c69,
- 0x31c4c70,
- 0x31f0c71,
- 0x3210c7c,
- 0x3230c84,
- 0x3298c8c,
- 0x32b8ca6,
- 0x32d8cae,
- 0x32dccb6,
- 0x32f4cb7,
- 0x3338cbd,
- 0x33b8cce,
- 0x33f4cee,
- 0x33f8cfd,
- 0x3404cfe,
- 0x3424d01,
- 0x3428d09,
- 0x344cd0a,
- 0x3454d13,
- 0x3494d15,
- 0x34e8d25,
- 0x34ecd3a,
- 0x34f0d3b,
- 0x35e4d3c,
- 0x235ecd79,
- 0x235f0d7b,
- 0x235f4d7c,
- 0x35f8d7d,
- 0x235fcd7e,
- 0x23600d7f,
- 0x23604d80,
- 0x3608d81,
- 0x2360cd82,
- 0x2361cd83,
- 0x23620d87,
- 0x23624d88,
- 0x23628d89,
- 0x2362cd8a,
- 0x23638d8b,
- 0x2363cd8e,
- 0x3654d8f,
- 0x3678d95,
- 0x3698d9e,
- 0x3d0cda6,
- 0x23d10f43,
- 0x23d14f44,
- 0x23d18f45,
- 0x23d1cf46,
- 0x3d2cf47,
- 0x3d4cf4b,
- 0x3f0cf53,
- 0x3fdcfc3,
- 0x404cff7,
- 0x40a5013,
- 0x418d029,
- 0x41e5063,
- 0x4221079,
- 0x431d088,
- 0x43e90c7,
- 0x44810fa,
- 0x4511120,
- 0x4575144,
- 0x47ad15d,
- 0x48651eb,
- 0x4931219,
- 0x497d24c,
- 0x4a0525f,
- 0x4a41281,
- 0x4a91290,
- 0x4b092a4,
- 0x64b0d2c2,
- 0x64b112c3,
- 0x64b152c4,
- 0x4b912c5,
- 0x4bed2e4,
- 0x4c692fb,
- 0x4ce131a,
- 0x4d61338,
- 0x4dcd358,
- 0x4ef9373,
- 0x4f513be,
- 0x64f553d4,
- 0x4fed3d5,
- 0x4ff53fb,
- 0x24ff93fd,
- 0x50813fe,
- 0x50cd420,
- 0x5135433,
- 0x51dd44d,
- 0x52a5477,
- 0x530d4a9,
- 0x54214c3,
- 0x65425508,
- 0x65429509,
- 0x548550a,
- 0x54e1521,
- 0x5571538,
- 0x55ed55c,
- 0x563157b,
- 0x571558c,
- 0x57495c5,
- 0x57a95d2,
- 0x581d5ea,
- 0x58a5607,
- 0x58e5629,
- 0x5955639,
- 0x65959655,
- 0x5981656,
- 0x5985660,
- 0x59b5661,
- 0x59d166d,
- 0x5a15674,
- 0x5a25685,
- 0x5a3d689,
- 0x5ab568f,
- 0x5abd6ad,
- 0x5ad96af,
- 0x5aed6b6,
- 0x5b116bb,
- 0x25b156c4,
- 0x5b416c5,
- 0x5b456d0,
- 0x5b4d6d1,
- 0x5b616d3,
- 0x5b816d8,
- 0x5b916e0,
- 0x5b9d6e4,
- 0x5bd96e7,
- 0x5bdd6f6,
- 0x5be56f7,
- 0x5bf96f9,
- 0x5c216fe,
- 0x5c2d708,
- 0x5c3570b,
- 0x5c5d70d,
- 0x5c81717,
- 0x5c99720,
- 0x5c9d726,
- 0x5ca5727,
- 0x5cad729,
- 0x5cc172b,
- 0x5d71730,
- 0x5d7575c,
- 0x5d7d75d,
- 0x5d8175f,
- 0x5da5760,
- 0x5dc9769,
- 0x5de5772,
- 0x5df9779,
- 0x5e0d77e,
- 0x5e15783,
+ 0x3004bfc,
+ 0x3008c01,
+ 0x300cc02,
+ 0x302cc03,
+ 0x304cc0b,
+ 0x23050c13,
+ 0x3054c14,
+ 0x23058c15,
+ 0x305cc16,
+ 0x3060c17,
+ 0x3064c18,
+ 0x3068c19,
+ 0x3084c1a,
+ 0x23088c21,
+ 0x23090c22,
+ 0x3094c24,
+ 0x30bcc25,
+ 0x30d0c2f,
+ 0x3144c34,
+ 0x3150c51,
+ 0x3154c54,
+ 0x3174c55,
+ 0x318cc5d,
+ 0x3190c63,
+ 0x31a4c64,
+ 0x31bcc69,
+ 0x31dcc6f,
+ 0x31f4c77,
+ 0x31fcc7d,
+ 0x3218c7f,
+ 0x3234c86,
+ 0x3238c8d,
+ 0x3264c8e,
+ 0x3284c99,
+ 0x32a4ca1,
+ 0x32a8ca9,
+ 0x3310caa,
+ 0x3330cc4,
+ 0x3358ccc,
+ 0x335ccd6,
+ 0x3374cd7,
+ 0x33b8cdd,
+ 0x3438cee,
+ 0x3478d0e,
+ 0x347cd1e,
+ 0x3488d1f,
+ 0x34a8d22,
+ 0x34b0d2a,
+ 0x34d4d2c,
+ 0x34dcd35,
+ 0x351cd37,
+ 0x3570d47,
+ 0x3574d5c,
+ 0x3678d5d,
+ 0x23680d9e,
+ 0x23684da0,
+ 0x23688da1,
+ 0x2368cda2,
+ 0x23690da3,
+ 0x3694da4,
+ 0x23698da5,
+ 0x2369cda6,
+ 0x236a0da7,
+ 0x36a4da8,
+ 0x236a8da9,
+ 0x236b8daa,
+ 0x236bcdae,
+ 0x236c0daf,
+ 0x236c4db0,
+ 0x236c8db1,
+ 0x236ccdb2,
+ 0x236d0db3,
+ 0x36e8db4,
+ 0x370cdba,
+ 0x372cdc3,
+ 0x3da0dcb,
+ 0x23da4f68,
+ 0x23da8f69,
+ 0x23dacf6a,
+ 0x23db0f6b,
+ 0x3dc0f6c,
+ 0x3de0f70,
+ 0x3fa0f78,
+ 0x4070fe8,
+ 0x40e101c,
+ 0x4139038,
+ 0x422104e,
+ 0x4279088,
+ 0x42b509e,
+ 0x43b10ad,
+ 0x447d0ec,
+ 0x451511f,
+ 0x45a5145,
+ 0x4609169,
+ 0x4841182,
+ 0x48f9210,
+ 0x49c523e,
+ 0x4a11271,
+ 0x4a99284,
+ 0x4ad52a6,
+ 0x4b252b5,
+ 0x4b9d2c9,
+ 0x64ba12e7,
+ 0x64ba52e8,
+ 0x64ba92e9,
+ 0x4c252ea,
+ 0x4c81309,
+ 0x4cfd320,
+ 0x4d7533f,
+ 0x4df535d,
+ 0x4e6137d,
+ 0x4f8d398,
+ 0x4fe53e3,
+ 0x64fe93f9,
+ 0x50813fa,
+ 0x5089420,
+ 0x2508d422,
+ 0x5115423,
+ 0x5161445,
+ 0x51c9458,
+ 0x5271472,
+ 0x533949c,
+ 0x53a14ce,
+ 0x54b54e8,
+ 0x654b952d,
+ 0x654bd52e,
+ 0x551952f,
+ 0x5575546,
+ 0x560555d,
+ 0x5681581,
+ 0x56c55a0,
+ 0x57a95b1,
+ 0x57dd5ea,
+ 0x583d5f7,
+ 0x58b160f,
+ 0x593962c,
+ 0x597964e,
+ 0x59e965e,
+ 0x659ed67a,
+ 0x5a1567b,
+ 0x5a19685,
+ 0x5a49686,
+ 0x5a65692,
+ 0x5aa9699,
+ 0x5ab96aa,
+ 0x5ad16ae,
+ 0x5b496b4,
+ 0x5b516d2,
+ 0x5b6d6d4,
+ 0x5b816db,
+ 0x5ba56e0,
+ 0x25ba96e9,
+ 0x5bd56ea,
+ 0x5bd96f5,
+ 0x5be16f6,
+ 0x5bf56f8,
+ 0x5c156fd,
+ 0x5c25705,
+ 0x5c31709,
+ 0x5c6d70c,
+ 0x5c7171b,
+ 0x5c7971c,
+ 0x5c8d71e,
+ 0x5cb5723,
+ 0x5cc172d,
+ 0x5cc9730,
+ 0x5cf1732,
+ 0x5d1573c,
+ 0x5d2d745,
+ 0x5d3174b,
+ 0x5d3974c,
+ 0x5d4174e,
+ 0x5d55750,
+ 0x5e11755,
+ 0x5e15784,
0x5e1d785,
- 0x5e25787,
- 0x5e3d789,
- 0x5e4d78f,
- 0x5e51793,
- 0x5e6d794,
- 0x66f579b,
- 0x672d9bd,
- 0x67599cb,
- 0x67759d6,
- 0x67799dd,
- 0x2677d9de,
- 0x679d9df,
- 0x67bd9e7,
- 0x68019ef,
- 0x6809a00,
- 0x2680da02,
- 0x26811a03,
- 0x6819a04,
- 0x6a35a06,
- 0x6a49a8d,
- 0x26a4da92,
- 0x6a51a93,
- 0x6a59a94,
- 0x26a5da96,
- 0x26a61a97,
- 0x26a6da98,
- 0x26a7da9b,
- 0x26a85a9f,
- 0x26a91aa1,
- 0x6a95aa4,
- 0x26a99aa5,
- 0x26ab1aa6,
- 0x26ab9aac,
- 0x26abdaae,
- 0x26ac5aaf,
- 0x26ac9ab1,
- 0x26acdab2,
- 0x26ad5ab3,
- 0x6addab5,
- 0x6af1ab7,
- 0x6b19abc,
- 0x6b55ac6,
- 0x6b59ad5,
- 0x6b91ad6,
- 0x6bb5ae4,
- 0x770daed,
- 0x7711dc3,
- 0x7715dc4,
- 0x27719dc5,
- 0x771ddc6,
- 0x27721dc7,
- 0x7725dc8,
- 0x27731dc9,
- 0x7735dcc,
- 0x7739dcd,
- 0x2773ddce,
- 0x7741dcf,
- 0x27749dd0,
- 0x774ddd2,
- 0x7751dd3,
- 0x27761dd4,
- 0x7765dd8,
- 0x7769dd9,
- 0x776ddda,
- 0x7771ddb,
- 0x27775ddc,
- 0x7779ddd,
- 0x777ddde,
- 0x7781ddf,
- 0x7785de0,
- 0x2778dde1,
- 0x7791de3,
- 0x7795de4,
- 0x7799de5,
- 0x2779dde6,
- 0x77a1de7,
- 0x277a9de8,
- 0x277addea,
- 0x77c9deb,
- 0x77e1df2,
- 0x7825df8,
+ 0x5e21787,
+ 0x5e45788,
+ 0x5e69791,
+ 0x5e8579a,
+ 0x5e997a1,
+ 0x5ead7a6,
+ 0x5eb57ab,
+ 0x5ebd7ad,
+ 0x5ec57af,
+ 0x5edd7b1,
+ 0x5eed7b7,
+ 0x5ef17bb,
+ 0x5f0d7bc,
+ 0x67957c3,
+ 0x67cd9e5,
+ 0x67f99f3,
+ 0x68159fe,
+ 0x6839a05,
+ 0x6859a0e,
+ 0x689da16,
+ 0x68a5a27,
+ 0x268a9a29,
+ 0x268ada2a,
+ 0x68b5a2b,
+ 0x6ae5a2d,
+ 0x6af9ab9,
+ 0x26afdabe,
+ 0x6b01abf,
+ 0x6b09ac0,
+ 0x26b15ac2,
+ 0x26b25ac5,
+ 0x26b2dac9,
+ 0x26b39acb,
+ 0x6b3dace,
+ 0x26b41acf,
+ 0x26b59ad0,
+ 0x26b61ad6,
+ 0x26b69ad8,
+ 0x26b6dada,
+ 0x26b75adb,
+ 0x6b79add,
+ 0x26b7dade,
+ 0x6b81adf,
+ 0x26b8dae0,
+ 0x6b95ae3,
+ 0x6ba9ae5,
+ 0x6badaea,
+ 0x6bd5aeb,
+ 0x6c11af5,
+ 0x6c15b04,
+ 0x6c4db05,
+ 0x6c71b13,
+ 0x77c9b1c,
+ 0x77cddf2,
+ 0x77d1df3,
+ 0x277d5df4,
+ 0x77d9df5,
+ 0x277dddf6,
+ 0x77e1df7,
+ 0x277eddf8,
+ 0x77f1dfb,
+ 0x77f5dfc,
+ 0x277f9dfd,
+ 0x77fddfe,
+ 0x27805dff,
+ 0x7809e01,
+ 0x780de02,
+ 0x2781de03,
+ 0x7821e07,
+ 0x7825e08,
0x7829e09,
- 0x784de0a,
- 0x7861e13,
- 0x7865e18,
- 0x7869e19,
- 0x7a2de1a,
- 0x27a31e8b,
- 0x27a39e8c,
- 0x27a3de8e,
- 0x27a41e8f,
- 0x7a49e90,
- 0x7b25e92,
- 0x27b31ec9,
- 0x27b35ecc,
- 0x27b39ecd,
- 0x27b3dece,
- 0x7b41ecf,
- 0x7b6ded0,
- 0x7b79edb,
- 0x7b7dede,
- 0x7ba1edf,
- 0x7badee8,
- 0x7bcdeeb,
- 0x7bd1ef3,
- 0x7c09ef4,
- 0x7ebdf02,
- 0x7f79faf,
- 0x7f7dfde,
- 0x7f81fdf,
- 0x7f95fe0,
- 0x7f99fe5,
- 0x7fcdfe6,
- 0x8005ff3,
- 0x2800a001,
- 0x8026002,
- 0x804e009,
- 0x8052013,
- 0x8076014,
- 0x809201d,
- 0x80ba024,
- 0x80ca02e,
- 0x80ce032,
- 0x80d2033,
- 0x810e034,
- 0x811a043,
- 0x8142046,
- 0x81de050,
- 0x281e2077,
- 0x81e6078,
- 0x81f6079,
- 0x281fa07d,
- 0x820a07e,
- 0x8226082,
- 0x8246089,
- 0x824a091,
- 0x825e092,
- 0x8272097,
- 0x827609c,
- 0x827a09d,
- 0x827e09e,
- 0x829e09f,
- 0x834a0a7,
- 0x834e0d2,
- 0x836e0d3,
- 0x839a0db,
- 0x283aa0e6,
- 0x83ae0ea,
- 0x83be0eb,
- 0x83f60ef,
- 0x83fe0fd,
- 0x84120ff,
- 0x8432104,
- 0x844e10c,
- 0x845a113,
- 0x8472116,
- 0x84aa11c,
- 0x84ae12a,
- 0x858212b,
- 0x8586160,
- 0x859a161,
- 0x85a2166,
- 0x85ba168,
- 0x85be16e,
- 0x85ca16f,
- 0x85d6172,
- 0x85da175,
- 0x85e2176,
- 0x85e6178,
- 0x860a179,
- 0x864a182,
- 0x864e192,
- 0x866e193,
- 0x86c219b,
- 0x86f21b0,
- 0x286f61bc,
- 0x86fe1bd,
- 0x87561bf,
- 0x875a1d5,
- 0x875e1d6,
- 0x87621d7,
- 0x87a61d8,
- 0x87b61e9,
- 0x87f61ed,
- 0x87fa1fd,
- 0x882a1fe,
- 0x897620a,
- 0x899e25d,
- 0x89da267,
- 0x8a02276,
- 0x28a0a280,
- 0x28a0e282,
- 0x28a12283,
- 0x8a1a284,
- 0x8a26286,
- 0x8b4a289,
- 0x8b562d2,
- 0x8b622d5,
- 0x8b6e2d8,
- 0x8b7a2db,
- 0x8b862de,
- 0x8b922e1,
- 0x8b9e2e4,
- 0x8baa2e7,
- 0x8bb62ea,
- 0x8bc22ed,
- 0x28bc62f0,
- 0x8bd22f1,
- 0x8bde2f4,
- 0x8bea2f7,
- 0x8bf22fa,
- 0x8bfe2fc,
- 0x8c0a2ff,
- 0x8c16302,
- 0x8c22305,
- 0x8c2e308,
- 0x8c3a30b,
- 0x8c4630e,
- 0x8c52311,
- 0x8c5e314,
- 0x8c6a317,
- 0x8c7631a,
- 0x8ca231d,
- 0x8cae328,
+ 0x782de0a,
+ 0x27831e0b,
+ 0x7835e0c,
+ 0x7839e0d,
+ 0x783de0e,
+ 0x7841e0f,
+ 0x27849e10,
+ 0x784de12,
+ 0x7851e13,
+ 0x7855e14,
+ 0x27859e15,
+ 0x785de16,
+ 0x27865e17,
+ 0x27869e19,
+ 0x7885e1a,
+ 0x789de21,
+ 0x78e1e27,
+ 0x78e5e38,
+ 0x7909e39,
+ 0x791de42,
+ 0x7921e47,
+ 0x7925e48,
+ 0x7ae9e49,
+ 0x27aedeba,
+ 0x27af5ebb,
+ 0x27af9ebd,
+ 0x27afdebe,
+ 0x7b05ebf,
+ 0x7be1ec1,
+ 0x27bedef8,
+ 0x27bf1efb,
+ 0x27bf5efc,
+ 0x27bf9efd,
+ 0x7bfdefe,
+ 0x7c29eff,
+ 0x7c39f0a,
+ 0x7c3df0e,
+ 0x7c61f0f,
+ 0x7c6df18,
+ 0x7c8df1b,
+ 0x7c91f23,
+ 0x7cc9f24,
+ 0x7f85f32,
+ 0x8041fe1,
+ 0x8046010,
+ 0x804a011,
+ 0x805e012,
+ 0x8062017,
+ 0x8096018,
+ 0x80ce025,
+ 0x280d2033,
+ 0x80ee034,
+ 0x811603b,
+ 0x811a045,
+ 0x813e046,
+ 0x815a04f,
+ 0x8182056,
+ 0x8192060,
+ 0x8196064,
+ 0x819a065,
+ 0x81d6066,
+ 0x81e2075,
+ 0x820a078,
+ 0x82ae082,
+ 0x282b20ab,
+ 0x82b60ac,
+ 0x82c60ad,
+ 0x282ca0b1,
+ 0x82de0b2,
+ 0x82fa0b7,
+ 0x831a0be,
+ 0x831e0c6,
+ 0x83320c7,
+ 0x83460cc,
+ 0x834a0d1,
+ 0x83520d2,
+ 0x83560d4,
+ 0x83760d5,
+ 0x84220dd,
+ 0x8426108,
+ 0x8446109,
+ 0x8472111,
+ 0x2848211c,
+ 0x8486120,
+ 0x8496121,
+ 0x84d6125,
+ 0x84de135,
+ 0x84f2137,
+ 0x851213c,
+ 0x852e144,
+ 0x853a14b,
+ 0x855a14e,
+ 0x858e156,
+ 0x8596163,
+ 0x866a165,
+ 0x866e19a,
+ 0x868219b,
+ 0x868a1a0,
+ 0x86a21a2,
+ 0x86a61a8,
+ 0x86b21a9,
+ 0x86be1ac,
+ 0x86c21af,
+ 0x86ca1b0,
+ 0x86ce1b2,
+ 0x86f21b3,
+ 0x87321bc,
+ 0x87361cc,
+ 0x87561cd,
+ 0x87aa1d5,
+ 0x87da1ea,
+ 0x287de1f6,
+ 0x87e61f7,
+ 0x883e1f9,
+ 0x884220f,
+ 0x8846210,
+ 0x884a211,
+ 0x888e212,
+ 0x889e223,
+ 0x88de227,
+ 0x88e2237,
+ 0x8912238,
+ 0x8a5e244,
+ 0x8a86297,
+ 0x8ac22a1,
+ 0x8aea2b0,
+ 0x28af22ba,
+ 0x28af62bc,
+ 0x28afa2bd,
+ 0x8b022be,
+ 0x8b0e2c0,
+ 0x8c322c3,
+ 0x8c3e30c,
+ 0x8c4a30f,
+ 0x8c56312,
+ 0x8c62315,
+ 0x8c6e318,
+ 0x8c7a31b,
+ 0x8c8631e,
+ 0x8c92321,
+ 0x8c9e324,
+ 0x8caa327,
+ 0x28cae32a,
0x8cba32b,
0x8cc632e,
0x8cd2331,
- 0x8cde334,
- 0x8ce6337,
+ 0x8cda334,
+ 0x8ce6336,
0x8cf2339,
0x8cfe33c,
0x8d0a33f,
@@ -10390,46 +10455,66 @@ var children = [...]uint32{
0x8d4634e,
0x8d52351,
0x8d5e354,
- 0x8d6a357,
- 0x8d7235a,
- 0x8d7e35c,
- 0x8d8635f,
- 0x8d92361,
- 0x8d9e364,
- 0x8daa367,
- 0x8db636a,
- 0x8dc236d,
- 0x8dce370,
+ 0x8d8a357,
+ 0x8d96362,
+ 0x8da2365,
+ 0x8dae368,
+ 0x8dba36b,
+ 0x8dc636e,
+ 0x8dce371,
0x8dda373,
0x8de6376,
- 0x8dea379,
- 0x8df637a,
- 0x8e1237d,
- 0x8e16384,
- 0x8e26385,
- 0x8e4a389,
- 0x8e4e392,
- 0x8e92393,
- 0x8e9a3a4,
- 0x8eae3a6,
- 0x8ee23ab,
- 0x8f023b8,
- 0x8f063c0,
- 0x8f0e3c1,
+ 0x8df2379,
+ 0x8dfe37c,
+ 0x8e0a37f,
+ 0x8e16382,
+ 0x8e22385,
+ 0x8e2e388,
+ 0x8e3a38b,
+ 0x8e4638e,
+ 0x8e52391,
+ 0x8e5a394,
+ 0x8e66396,
+ 0x8e6e399,
+ 0x8e7a39b,
+ 0x8e8639e,
+ 0x8e923a1,
+ 0x8e9e3a4,
+ 0x8eaa3a7,
+ 0x8eb63aa,
+ 0x8ec23ad,
+ 0x8ece3b0,
+ 0x8ed23b3,
+ 0x8ede3b4,
+ 0x8efa3b7,
+ 0x8efe3be,
+ 0x8f0e3bf,
0x8f323c3,
- 0x8f4a3cc,
- 0x8f623d2,
- 0x8f7a3d8,
- 0x8f923de,
- 0x28fda3e4,
- 0x8fde3f6,
- 0x900a3f7,
- 0x901a402,
- 0x902e406,
+ 0x8f363cc,
+ 0x8f7a3cd,
+ 0x8f823de,
+ 0x8f963e0,
+ 0x8fca3e5,
+ 0x8fea3f2,
+ 0x8fee3fa,
+ 0x8ff63fb,
+ 0x901a3fd,
+ 0x9032406,
+ 0x904a40c,
+ 0x9062412,
+ 0x908a418,
+ 0x909e422,
+ 0x90b6427,
+ 0x90ba42d,
+ 0x2910242e,
+ 0x9106440,
+ 0x9132441,
+ 0x914244c,
+ 0x9156450,
}
-// max children 650 (capacity 1023)
-// max text offset 31341 (capacity 32767)
+// max children 654 (capacity 1023)
+// max text offset 31758 (capacity 32767)
// max text length 36 (capacity 63)
-// max hi 9227 (capacity 16383)
-// max lo 9222 (capacity 16383)
+// max hi 9301 (capacity 16383)
+// max lo 9296 (capacity 16383)
diff --git a/vendor/golang.org/x/sys/execabs/execabs.go b/vendor/golang.org/x/sys/execabs/execabs.go
new file mode 100644
index 00000000000..78192498db0
--- /dev/null
+++ b/vendor/golang.org/x/sys/execabs/execabs.go
@@ -0,0 +1,102 @@
+// 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 execabs is a drop-in replacement for os/exec
+// that requires PATH lookups to find absolute paths.
+// That is, execabs.Command("cmd") runs the same PATH lookup
+// as exec.Command("cmd"), but if the result is a path
+// which is relative, the Run and Start methods will report
+// an error instead of running the executable.
+//
+// See https://blog.golang.org/path-security for more information
+// about when it may be necessary or appropriate to use this package.
+package execabs
+
+import (
+ "context"
+ "fmt"
+ "os/exec"
+ "path/filepath"
+ "reflect"
+ "unsafe"
+)
+
+// ErrNotFound is the error resulting if a path search failed to find an executable file.
+// It is an alias for exec.ErrNotFound.
+var ErrNotFound = exec.ErrNotFound
+
+// Cmd represents an external command being prepared or run.
+// It is an alias for exec.Cmd.
+type Cmd = exec.Cmd
+
+// Error is returned by LookPath when it fails to classify a file as an executable.
+// It is an alias for exec.Error.
+type Error = exec.Error
+
+// An ExitError reports an unsuccessful exit by a command.
+// It is an alias for exec.ExitError.
+type ExitError = exec.ExitError
+
+func relError(file, path string) error {
+ return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path)
+}
+
+// LookPath searches for an executable named file in the directories
+// named by the PATH environment variable. If file contains a slash,
+// it is tried directly and the PATH is not consulted. The result will be
+// an absolute path.
+//
+// LookPath differs from exec.LookPath in its handling of PATH lookups,
+// which are used for file names without slashes. If exec.LookPath's
+// PATH lookup would have returned an executable from the current directory,
+// LookPath instead returns an error.
+func LookPath(file string) (string, error) {
+ path, err := exec.LookPath(file)
+ if err != nil {
+ return "", err
+ }
+ if filepath.Base(file) == file && !filepath.IsAbs(path) {
+ return "", relError(file, path)
+ }
+ return path, nil
+}
+
+func fixCmd(name string, cmd *exec.Cmd) {
+ if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) {
+ // exec.Command was called with a bare binary name and
+ // exec.LookPath returned a path which is not absolute.
+ // Set cmd.lookPathErr and clear cmd.Path so that it
+ // cannot be run.
+ lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer()))
+ if *lookPathErr == nil {
+ *lookPathErr = relError(name, cmd.Path)
+ }
+ cmd.Path = ""
+ }
+}
+
+// CommandContext is like Command but includes a context.
+//
+// The provided context is used to kill the process (by calling os.Process.Kill)
+// if the context becomes done before the command completes on its own.
+func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd {
+ cmd := exec.CommandContext(ctx, name, arg...)
+ fixCmd(name, cmd)
+ return cmd
+
+}
+
+// Command returns the Cmd struct to execute the named program with the given arguments.
+// See exec.Command for most details.
+//
+// Command differs from exec.Command in its handling of PATH lookups,
+// which are used when the program name contains no slashes.
+// If exec.Command would have returned an exec.Cmd configured to run an
+// executable from the current directory, Command instead
+// returns an exec.Cmd that will return an error from Start or Run.
+func Command(name string, arg ...string) *exec.Cmd {
+ cmd := exec.Command(name, arg...)
+ fixCmd(name, cmd)
+ return cmd
+}
diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
index eb3157f0b20..e15b7bf6a7c 100644
--- a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
+++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
@@ -57,7 +57,7 @@ loop:
err = transform.ErrShortSrc
break loop
}
- r = utf8.RuneError
+ r, size = utf8.RuneError, 1
goto write
}
size = 2
diff --git a/vendor/golang.org/x/text/internal/language/compact/tables.go b/vendor/golang.org/x/text/internal/language/compact/tables.go
index 554ca354b63..fe7ad9ea7c8 100644
--- a/vendor/golang.org/x/text/internal/language/compact/tables.go
+++ b/vendor/golang.org/x/text/internal/language/compact/tables.go
@@ -802,16 +802,16 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
0x03a0010b, 0x03a00115, 0x03a00117, 0x03a0011c,
0x03a00120, 0x03a00128, 0x03a0015e, 0x04000000,
0x04300000, 0x04300099, 0x04400000, 0x0440012f,
- 0x04800000, 0x0480006e, 0x05800000, 0x0581f000,
- 0x0581f032, 0x05857000, 0x05857032, 0x05e00000,
+ 0x04800000, 0x0480006e, 0x05800000, 0x05820000,
+ 0x05820032, 0x0585a000, 0x0585a032, 0x05e00000,
0x05e00052, 0x07100000, 0x07100047, 0x07500000,
0x07500162, 0x07900000, 0x0790012f, 0x07e00000,
0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c3,
// Entry 40 - 5F
0x0a500000, 0x0a500035, 0x0a500099, 0x0a900000,
0x0a900053, 0x0a900099, 0x0b200000, 0x0b200078,
- 0x0b500000, 0x0b500099, 0x0b700000, 0x0b71f000,
- 0x0b71f033, 0x0b757000, 0x0b757033, 0x0d700000,
+ 0x0b500000, 0x0b500099, 0x0b700000, 0x0b720000,
+ 0x0b720033, 0x0b75a000, 0x0b75a033, 0x0d700000,
0x0d700022, 0x0d70006e, 0x0d700078, 0x0d70009e,
0x0db00000, 0x0db00035, 0x0db00099, 0x0dc00000,
0x0dc00106, 0x0df00000, 0x0df00131, 0x0e500000,
@@ -947,7 +947,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
0x38900000, 0x38900131, 0x39000000, 0x3900006f,
0x390000a4, 0x39500000, 0x39500099, 0x39800000,
0x3980007d, 0x39800106, 0x39d00000, 0x39d05000,
- 0x39d050e8, 0x39d33000, 0x39d33099, 0x3a100000,
+ 0x39d050e8, 0x39d36000, 0x39d36099, 0x3a100000,
0x3b300000, 0x3b3000e9, 0x3bd00000, 0x3bd00001,
0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a,
0x3c000041, 0x3c00004e, 0x3c00005a, 0x3c000086,
@@ -966,7 +966,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
0x3fd00000, 0x3fd00072, 0x3fd000da, 0x3fd0010c,
0x3ff00000, 0x3ff000d1, 0x40100000, 0x401000c3,
0x40200000, 0x4020004c, 0x40700000, 0x40800000,
- 0x40857000, 0x408570ba, 0x408dc000, 0x408dc0ba,
+ 0x4085a000, 0x4085a0ba, 0x408e3000, 0x408e30ba,
0x40c00000, 0x40c000b3, 0x41200000, 0x41200111,
0x41600000, 0x4160010f, 0x41c00000, 0x41d00000,
// Entry 280 - 29F
@@ -974,9 +974,9 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
0x42300000, 0x42300164, 0x42900000, 0x42900062,
0x4290006f, 0x429000a4, 0x42900115, 0x43100000,
0x43100027, 0x431000c2, 0x4310014d, 0x43200000,
- 0x4321f000, 0x4321f033, 0x4321f0bd, 0x4321f105,
- 0x4321f14d, 0x43257000, 0x43257033, 0x432570bd,
- 0x43257105, 0x4325714d, 0x43700000, 0x43a00000,
+ 0x43220000, 0x43220033, 0x432200bd, 0x43220105,
+ 0x4322014d, 0x4325a000, 0x4325a033, 0x4325a0bd,
+ 0x4325a105, 0x4325a14d, 0x43700000, 0x43a00000,
0x43b00000, 0x44400000, 0x44400031, 0x44400072,
// Entry 2A0 - 2BF
0x4440010c, 0x44500000, 0x4450004b, 0x445000a4,
@@ -992,24 +992,24 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements
0x49400106, 0x4a400000, 0x4a4000d4, 0x4a900000,
0x4a9000ba, 0x4ac00000, 0x4ac00053, 0x4ae00000,
0x4ae00130, 0x4b400000, 0x4b400099, 0x4b4000e8,
- 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc1f000,
- 0x4bc1f137, 0x4bc57000, 0x4bc57137, 0x4be00000,
- 0x4be57000, 0x4be570b4, 0x4bee3000, 0x4bee30b4,
+ 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000,
+ 0x4bc20137, 0x4bc5a000, 0x4bc5a137, 0x4be00000,
+ 0x4be5a000, 0x4be5a0b4, 0x4beeb000, 0x4beeb0b4,
0x4c000000, 0x4c300000, 0x4c30013e, 0x4c900000,
// Entry 2E0 - 2FF
0x4c900001, 0x4cc00000, 0x4cc0012f, 0x4ce00000,
0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500114,
0x4f200000, 0x4fb00000, 0x4fb00131, 0x50900000,
0x50900052, 0x51200000, 0x51200001, 0x51800000,
- 0x5180003b, 0x518000d6, 0x51f00000, 0x51f38000,
- 0x51f38053, 0x51f39000, 0x51f3908d, 0x52800000,
- 0x528000ba, 0x52900000, 0x52938000, 0x52938053,
- 0x5293808d, 0x529380c6, 0x5293810d, 0x52939000,
+ 0x5180003b, 0x518000d6, 0x51f00000, 0x51f3b000,
+ 0x51f3b053, 0x51f3c000, 0x51f3c08d, 0x52800000,
+ 0x528000ba, 0x52900000, 0x5293b000, 0x5293b053,
+ 0x5293b08d, 0x5293b0c6, 0x5293b10d, 0x5293c000,
// Entry 300 - 31F
- 0x5293908d, 0x529390c6, 0x5293912e, 0x52f00000,
+ 0x5293c08d, 0x5293c0c6, 0x5293c12e, 0x52f00000,
0x52f00161,
} // Size: 3116 bytes
const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix"
-// Total table size 3147 bytes (3KiB); checksum: F4E57D15
+// Total table size 3147 bytes (3KiB); checksum: BE816D44
diff --git a/vendor/golang.org/x/text/internal/language/language.go b/vendor/golang.org/x/text/internal/language/language.go
index 1e74d1affd2..f41aedcfc8a 100644
--- a/vendor/golang.org/x/text/internal/language/language.go
+++ b/vendor/golang.org/x/text/internal/language/language.go
@@ -303,9 +303,17 @@ func (t Tag) Extensions() []string {
// 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 {
- return t.str[start:end]
+ 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 ""
}
@@ -329,13 +337,13 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
// Remove the setting if value is "".
if value == "" {
- start, end, _ := t.findTypeForKey(key)
- if start != end {
- // Remove key tag and leading '-'.
- start -= 4
-
+ start, sep, end, _ := t.findTypeForKey(key)
+ if start != sep {
// Remove a possible empty extension.
- if (end == len(t.str) || t.str[end+2] == '-') && t.str[start-2] == '-' {
+ 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) {
@@ -381,14 +389,14 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
t.str = string(buf[:uStart+len(b)])
} else {
s := t.str
- start, end, hasExt := t.findTypeForKey(key)
- if start == end {
+ start, sep, end, hasExt := t.findTypeForKey(key)
+ if start == sep {
if hasExt {
b = b[2:]
}
- t.str = fmt.Sprintf("%s-%s%s", s[:start], b, s[end:])
+ t.str = fmt.Sprintf("%s-%s%s", s[:sep], b, s[end:])
} else {
- t.str = fmt.Sprintf("%s%s%s", s[:start], value, s[end:])
+ t.str = fmt.Sprintf("%s-%s%s", s[:start+3], value, s[end:])
}
}
return t, nil
@@ -399,10 +407,10 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
// 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, end int, hasExt bool) {
+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, false
+ return p, p, p, false
}
s := t.str
@@ -410,10 +418,10 @@ func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) {
for p++; s[p] != 'u'; p++ {
if s[p] > 'u' {
p--
- return p, p, false
+ return p, p, p, false
}
if p = nextExtension(s, p); p == len(s) {
- return len(s), len(s), false
+ return len(s), len(s), len(s), false
}
}
// Proceed to the hyphen following the extension name.
@@ -424,40 +432,28 @@ func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) {
// Iterate over keys until we get the end of a section.
for {
- // p points to the hyphen preceding the current token.
- if p3 := p + 3; s[p3] == '-' {
- // Found a key.
- // Check whether we just processed the key that was requested.
- if curKey == key {
- return start, p, true
- }
- // Set to the next key and continue scanning type tokens.
- curKey = s[p+1 : p3]
- if curKey > key {
- return p, p, true
- }
- // Start of the type token sequence.
- start = p + 4
- // A type is at least 3 characters long.
- p += 7 // 4 + 3
- } else {
- // Attribute or type, which is at least 3 characters long.
- p += 4
- }
- // p points past the third character of a type or attribute.
- max := p + 5 // maximum length of token plus hyphen.
- if len(s) < max {
- max = len(s)
+ end = p
+ for p++; p < len(s) && s[p] != '-'; p++ {
}
- for ; p < max && s[p] != '-'; p++ {
+ n := p - end - 1
+ if n <= 2 && curKey == key {
+ if sep < end {
+ sep++
+ }
+ return start, sep, end, true
}
- // Bail if we have exhausted all tokens or if the next token starts
- // a new extension.
- if p == len(s) || s[p+2] == '-' {
- if curKey == key {
- return start, p, 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
}
- return p, p, true
+ start = end
+ sep = p
}
}
}
diff --git a/vendor/golang.org/x/text/internal/language/parse.go b/vendor/golang.org/x/text/internal/language/parse.go
index 2be83e1da54..c696fd0bd86 100644
--- a/vendor/golang.org/x/text/internal/language/parse.go
+++ b/vendor/golang.org/x/text/internal/language/parse.go
@@ -133,14 +133,15 @@ func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) {
s.start = oldStart
if end := oldStart + newSize; end != oldEnd {
diff := end - oldEnd
- if end < cap(s.b) {
- b := make([]byte, len(s.b)+diff)
+ var b []byte
+ if n := len(s.b) + diff; n > cap(s.b) {
+ b = make([]byte, n)
copy(b, s.b[:oldStart])
- copy(b[end:], s.b[oldEnd:])
- s.b = b
} else {
- s.b = append(s.b[end:], s.b[oldEnd:]...)
+ b = s.b[:n]
}
+ copy(b[end:], s.b[oldEnd:])
+ s.b = b
s.next = end + (s.next - s.end)
s.end = end
}
@@ -482,7 +483,7 @@ func parseExtensions(scan *scanner) int {
func parseExtension(scan *scanner) int {
start, end := scan.start, scan.end
switch scan.token[0] {
- case 'u':
+ case 'u': // https://www.ietf.org/rfc/rfc6067.txt
attrStart := end
scan.scan()
for last := []byte{}; len(scan.token) > 2; scan.scan() {
@@ -502,27 +503,29 @@ func parseExtension(scan *scanner) int {
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
- keyEnd := scan.end
- end = scan.acceptMinSize(3)
+ end = scan.end
+ for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() {
+ end = scan.end
+ }
// TODO: check key value validity
- if keyEnd == end || bytes.Compare(key, last) != 1 {
+ 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, keyEnd := scan.start, scan.end
- end = scan.acceptMinSize(3)
- if keyEnd != end {
- keys = append(keys, scan.b[keyStart:end])
- } else {
- scan.setError(ErrSyntax)
- end = keyStart
+ 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 {
@@ -546,7 +549,7 @@ func parseExtension(scan *scanner) int {
break
}
}
- case 't':
+ 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)
diff --git a/vendor/golang.org/x/text/internal/language/tables.go b/vendor/golang.org/x/text/internal/language/tables.go
index 239e2d29eb7..a19480c5ba6 100644
--- a/vendor/golang.org/x/text/internal/language/tables.go
+++ b/vendor/golang.org/x/text/internal/language/tables.go
@@ -7,9 +7,9 @@ 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 = 8665
+const NumLanguages = 8717
-const NumScripts = 242
+const NumScripts = 251
const NumRegions = 357
@@ -284,14 +284,14 @@ var langNoIndex = [2197]uint8{
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, 0x20, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80,
+ 0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80,
// Entry C0 - FF
0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96,
- 0x1b, 0x14, 0x08, 0xf2, 0x2b, 0xe7, 0x17, 0x56,
- 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef,
+ 0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56,
+ 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7b, 0xf3, 0xef,
0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10,
- 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35,
- 0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x00, 0x81, 0x00,
+ 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x73, 0x35,
+ 0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00,
0xb0, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03,
0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d,
// Entry 100 - 13F
@@ -299,14 +299,14 @@ var langNoIndex = [2197]uint8{
0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00,
0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3,
0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x01, 0x0c,
- 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc5, 0x67, 0x5f,
- 0x56, 0x89, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00,
+ 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, 0x69, 0x01, 0x2c, 0x96, 0x69, 0x20, 0xfb,
// Entry 140 - 17F
- 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x16,
- 0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x06,
- 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x09,
+ 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16,
+ 0x03, 0x00, 0x00, 0xb0, 0x14, 0x03, 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, 0x04,
0x08, 0x00, 0x00, 0x04, 0x00, 0x80, 0x28, 0x04,
@@ -322,7 +322,7 @@ var langNoIndex = [2197]uint8{
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
// Entry 1C0 - 1FF
- 0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 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,
@@ -332,28 +332,28 @@ var langNoIndex = [2197]uint8{
0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf,
// Entry 200 - 23F
0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27,
- 0xcd, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5,
+ 0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5,
0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe0, 0xdf,
- 0x03, 0x44, 0x08, 0x10, 0x01, 0x04, 0x01, 0xe3,
- 0x92, 0x54, 0xdb, 0x28, 0xd1, 0x5f, 0xf6, 0x6d,
+ 0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x01, 0xe3,
+ 0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d,
0x79, 0xed, 0x1c, 0x7d, 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, 0x38, 0x02, 0x05, 0x84, 0x00, 0xf0,
+ 0x20, 0x7b, 0x78, 0x02, 0x05, 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,
- 0x11, 0x04, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff,
- 0x7b, 0x7f, 0x60, 0x00, 0x05, 0x9b, 0xdd, 0x66,
+ 0x11, 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,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60,
+ 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,
@@ -397,9 +397,9 @@ var langNoIndex = [2197]uint8{
0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57,
0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7,
0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x00,
- 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xd9, 0x0e, 0x11,
- 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01,
- 0x05, 0xd1, 0x50, 0x58, 0x00, 0x00, 0x00, 0x10,
+ 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xf9, 0x2e, 0x11,
+ 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x01,
+ 0x05, 0xd1, 0x50, 0x5c, 0x00, 0x00, 0x00, 0x10,
0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2,
0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe,
// Entry 400 - 43F
@@ -417,14 +417,14 @@ var langNoIndex = [2197]uint8{
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, 0xbd,
+ 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
- 0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xfd, 0x99, 0xfb,
+ 0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb,
0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20,
0x14, 0x00, 0x55, 0x51, 0x82, 0x65, 0xf5, 0x41,
- 0xe2, 0xff, 0xfc, 0xdf, 0x00, 0x05, 0xc5, 0x05,
+ 0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x05, 0xc5, 0x05,
0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x04,
0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00,
@@ -437,12 +437,12 @@ var langNoIndex = [2197]uint8{
0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00,
0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d,
- 0xba, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,
+ 0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,
// Entry 500 - 53F
0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49,
0x2d, 0x14, 0x27, 0x57, 0xed, 0xf1, 0x3f, 0xe7,
0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8,
- 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe5, 0xf7,
+ 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,
@@ -473,7 +473,7 @@ var langNoIndex = [2197]uint8{
0x31, 0x00, 0x00, 0x00, 0x01, 0x10, 0x02, 0x20,
0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00,
0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f,
- 0x1f, 0x98, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe,
+ 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,
@@ -484,28 +484,28 @@ var langNoIndex = [2197]uint8{
0xbe, 0x5f, 0x46, 0x1b, 0xe9, 0x5f, 0x50, 0x18,
0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f,
// Entry 640 - 67F
- 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf1, 0x57, 0x6c,
+ 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c,
0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde,
- 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x1f, 0x00, 0x98,
+ 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98,
0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff,
- 0xb9, 0xda, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4,
+ 0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4,
0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7,
0x5f, 0xff, 0xff, 0x9e, 0xdb, 0xf6, 0xd7, 0xb9,
0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3,
// Entry 680 - 6BF
0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37,
- 0xce, 0x7f, 0x04, 0x1d, 0x53, 0x7f, 0xf8, 0xda,
+ 0xce, 0x7f, 0x04, 0x1d, 0x73, 0x7f, 0xf8, 0xda,
0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x69, 0xa0,
0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08,
0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00,
0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06,
0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00,
- 0x04, 0x00, 0x10, 0xcc, 0x58, 0xd5, 0x0d, 0x0f,
+ 0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f,
// Entry 6C0 - 6FF
0x14, 0x4d, 0xf1, 0x16, 0x44, 0xd1, 0x42, 0x08,
0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x08, 0x41,
- 0x04, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 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,
@@ -524,7 +524,7 @@ var langNoIndex = [2197]uint8{
0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x44,
0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04,
0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a,
- 0x01, 0x00, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55,
+ 0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75,
0x97, 0x7c, 0x9f, 0x31, 0xcc, 0x68, 0xd1, 0x03,
0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60,
@@ -538,8 +538,8 @@ var langNoIndex = [2197]uint8{
0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02,
0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed,
// Entry 7C0 - 7FF
- 0xdd, 0xbf, 0x72, 0x19, 0xc7, 0x0c, 0xd5, 0x42,
- 0x54, 0xdd, 0x77, 0x14, 0x00, 0x80, 0x40, 0x56,
+ 0xdd, 0xbf, 0x72, 0x1d, 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,
@@ -556,7 +556,7 @@ var langNoIndex = [2197]uint8{
0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10,
0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00,
// Entry 840 - 87F
- 0xf0, 0xfb, 0xfd, 0x3f, 0x05, 0x00, 0x12, 0x81,
+ 0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x12, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02,
0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28,
0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00,
@@ -582,8 +582,8 @@ var altLangIndex = [6]uint16{
}
// AliasMap maps langIDs to their suggested replacements.
-// Size: 656 bytes, 164 elements
-var AliasMap = [164]FromTo{
+// Size: 704 bytes, 176 elements
+var AliasMap = [176]FromTo{
0: {From: 0x82, To: 0x88},
1: {From: 0x187, To: 0x1ae},
2: {From: 0x1f3, To: 0x1e1},
@@ -603,224 +603,237 @@ var AliasMap = [164]FromTo{
16: {From: 0x662, To: 0x431},
17: {From: 0x6ed, To: 0x3a},
18: {From: 0x6f8, To: 0x1d7},
- 19: {From: 0x73e, To: 0x21a1},
- 20: {From: 0x7b3, To: 0x56},
- 21: {From: 0x7b9, To: 0x299b},
- 22: {From: 0x7c5, To: 0x58},
- 23: {From: 0x7e6, To: 0x145},
- 24: {From: 0x80c, To: 0x5a},
- 25: {From: 0x815, To: 0x8d},
- 26: {From: 0x87e, To: 0x810},
- 27: {From: 0x8c3, To: 0xee3},
- 28: {From: 0x9ef, To: 0x331},
- 29: {From: 0xa36, To: 0x2c5},
- 30: {From: 0xa3d, To: 0xbf},
- 31: {From: 0xabe, To: 0x3322},
- 32: {From: 0xb38, To: 0x529},
- 33: {From: 0xb75, To: 0x265a},
- 34: {From: 0xb7e, To: 0xbc3},
- 35: {From: 0xb9b, To: 0x44e},
- 36: {From: 0xbbc, To: 0x4229},
- 37: {From: 0xbbf, To: 0x529},
- 38: {From: 0xbfe, To: 0x2da7},
- 39: {From: 0xc2e, To: 0x3181},
- 40: {From: 0xcb9, To: 0xf3},
- 41: {From: 0xd08, To: 0xfa},
- 42: {From: 0xdc8, To: 0x11a},
- 43: {From: 0xdd7, To: 0x32d},
- 44: {From: 0xdf8, To: 0xdfb},
- 45: {From: 0xdfe, To: 0x531},
- 46: {From: 0xedf, To: 0x205a},
- 47: {From: 0xeee, To: 0x2e9a},
- 48: {From: 0xf39, To: 0x367},
- 49: {From: 0x10d0, To: 0x140},
- 50: {From: 0x1104, To: 0x2d0},
- 51: {From: 0x11a0, To: 0x1ec},
- 52: {From: 0x1279, To: 0x21},
- 53: {From: 0x1424, To: 0x15e},
- 54: {From: 0x1470, To: 0x14e},
- 55: {From: 0x151f, To: 0xd9b},
- 56: {From: 0x1523, To: 0x390},
- 57: {From: 0x1532, To: 0x19f},
- 58: {From: 0x1580, To: 0x210},
- 59: {From: 0x1583, To: 0x10d},
- 60: {From: 0x15a3, To: 0x3caf},
- 61: {From: 0x166a, To: 0x19b},
- 62: {From: 0x16c8, To: 0x136},
- 63: {From: 0x1700, To: 0x29f8},
- 64: {From: 0x1718, To: 0x194},
- 65: {From: 0x1727, To: 0xf3f},
- 66: {From: 0x177a, To: 0x178},
- 67: {From: 0x1809, To: 0x17b6},
- 68: {From: 0x1816, To: 0x18f3},
- 69: {From: 0x188a, To: 0x436},
- 70: {From: 0x1979, To: 0x1d01},
- 71: {From: 0x1a74, To: 0x2bb0},
- 72: {From: 0x1a8a, To: 0x1f8},
- 73: {From: 0x1b5a, To: 0x1fa},
- 74: {From: 0x1b86, To: 0x1515},
- 75: {From: 0x1d64, To: 0x2c9b},
- 76: {From: 0x2038, To: 0x37b1},
- 77: {From: 0x203d, To: 0x20dd},
- 78: {From: 0x205a, To: 0x30b},
- 79: {From: 0x20e3, To: 0x274},
- 80: {From: 0x20ee, To: 0x263},
- 81: {From: 0x20f2, To: 0x22d},
- 82: {From: 0x20f9, To: 0x256},
- 83: {From: 0x210f, To: 0x21eb},
- 84: {From: 0x2135, To: 0x27d},
- 85: {From: 0x2160, To: 0x913},
- 86: {From: 0x2199, To: 0x121},
- 87: {From: 0x21ce, To: 0x1561},
- 88: {From: 0x21e6, To: 0x504},
- 89: {From: 0x21f4, To: 0x49f},
- 90: {From: 0x222d, To: 0x121},
- 91: {From: 0x2237, To: 0x121},
- 92: {From: 0x2262, To: 0x92a},
- 93: {From: 0x2316, To: 0x3226},
- 94: {From: 0x2382, To: 0x3365},
- 95: {From: 0x2472, To: 0x2c7},
- 96: {From: 0x24e4, To: 0x2ff},
- 97: {From: 0x24f0, To: 0x2fa},
- 98: {From: 0x24fa, To: 0x31f},
- 99: {From: 0x2550, To: 0xb5b},
- 100: {From: 0x25a9, To: 0xe2},
- 101: {From: 0x263e, To: 0x2d0},
- 102: {From: 0x26c9, To: 0x26b4},
- 103: {From: 0x26f9, To: 0x3c8},
- 104: {From: 0x2727, To: 0x3caf},
- 105: {From: 0x2765, To: 0x26b4},
- 106: {From: 0x2789, To: 0x4358},
- 107: {From: 0x28ef, To: 0x2837},
- 108: {From: 0x2914, To: 0x351},
- 109: {From: 0x2986, To: 0x2da7},
- 110: {From: 0x2b1a, To: 0x38d},
- 111: {From: 0x2bfc, To: 0x395},
- 112: {From: 0x2c3f, To: 0x3caf},
- 113: {From: 0x2cfc, To: 0x3be},
- 114: {From: 0x2d13, To: 0x597},
- 115: {From: 0x2d47, To: 0x148},
- 116: {From: 0x2d48, To: 0x148},
- 117: {From: 0x2dff, To: 0x2f1},
- 118: {From: 0x2e08, To: 0x19cc},
- 119: {From: 0x2e1a, To: 0x2d95},
- 120: {From: 0x2e21, To: 0x292},
- 121: {From: 0x2e54, To: 0x7d},
- 122: {From: 0x2e65, To: 0x2282},
- 123: {From: 0x2ea0, To: 0x2e9b},
- 124: {From: 0x2eef, To: 0x2ed7},
- 125: {From: 0x3193, To: 0x3c4},
- 126: {From: 0x3366, To: 0x338e},
- 127: {From: 0x342a, To: 0x3dc},
- 128: {From: 0x34ee, To: 0x18d0},
- 129: {From: 0x35c8, To: 0x2c9b},
- 130: {From: 0x35e6, To: 0x412},
- 131: {From: 0x3658, To: 0x246},
- 132: {From: 0x3676, To: 0x3f4},
- 133: {From: 0x36fd, To: 0x445},
- 134: {From: 0x37c0, To: 0x121},
- 135: {From: 0x3816, To: 0x38f2},
- 136: {From: 0x382b, To: 0x2c9b},
- 137: {From: 0x382f, To: 0xa9},
- 138: {From: 0x3832, To: 0x3228},
- 139: {From: 0x386c, To: 0x39a6},
- 140: {From: 0x3892, To: 0x3fc0},
- 141: {From: 0x38a5, To: 0x39d7},
- 142: {From: 0x38b4, To: 0x1fa4},
- 143: {From: 0x38b5, To: 0x2e9a},
- 144: {From: 0x395c, To: 0x47e},
- 145: {From: 0x3b4e, To: 0xd91},
- 146: {From: 0x3b78, To: 0x137},
- 147: {From: 0x3c99, To: 0x4bc},
- 148: {From: 0x3fbd, To: 0x100},
- 149: {From: 0x4208, To: 0xa91},
- 150: {From: 0x42be, To: 0x573},
- 151: {From: 0x42f9, To: 0x3f60},
- 152: {From: 0x4378, To: 0x25a},
- 153: {From: 0x43cb, To: 0x36cb},
- 154: {From: 0x43cd, To: 0x10f},
- 155: {From: 0x44af, To: 0x3322},
- 156: {From: 0x44e3, To: 0x512},
- 157: {From: 0x45ca, To: 0x2409},
- 158: {From: 0x45dd, To: 0x26dc},
- 159: {From: 0x4610, To: 0x48ae},
- 160: {From: 0x46ae, To: 0x46a0},
- 161: {From: 0x473e, To: 0x4745},
- 162: {From: 0x4916, To: 0x31f},
- 163: {From: 0x49a7, To: 0x523},
+ 19: {From: 0x709, To: 0x3625},
+ 20: {From: 0x73e, To: 0x21a1},
+ 21: {From: 0x7b3, To: 0x56},
+ 22: {From: 0x7b9, To: 0x299b},
+ 23: {From: 0x7c5, To: 0x58},
+ 24: {From: 0x7e6, To: 0x145},
+ 25: {From: 0x80c, To: 0x5a},
+ 26: {From: 0x815, To: 0x8d},
+ 27: {From: 0x87e, To: 0x810},
+ 28: {From: 0x8c3, To: 0xee3},
+ 29: {From: 0x9ef, To: 0x331},
+ 30: {From: 0xa36, To: 0x2c5},
+ 31: {From: 0xa3d, To: 0xbf},
+ 32: {From: 0xabe, To: 0x3322},
+ 33: {From: 0xb38, To: 0x529},
+ 34: {From: 0xb75, To: 0x265a},
+ 35: {From: 0xb7e, To: 0xbc3},
+ 36: {From: 0xb9b, To: 0x44e},
+ 37: {From: 0xbbc, To: 0x4229},
+ 38: {From: 0xbbf, To: 0x529},
+ 39: {From: 0xbfe, To: 0x2da7},
+ 40: {From: 0xc2e, To: 0x3181},
+ 41: {From: 0xcb9, To: 0xf3},
+ 42: {From: 0xd08, To: 0xfa},
+ 43: {From: 0xdc8, To: 0x11a},
+ 44: {From: 0xdd7, To: 0x32d},
+ 45: {From: 0xdf8, To: 0xdfb},
+ 46: {From: 0xdfe, To: 0x531},
+ 47: {From: 0xe01, To: 0xdf3},
+ 48: {From: 0xedf, To: 0x205a},
+ 49: {From: 0xee9, To: 0x222e},
+ 50: {From: 0xeee, To: 0x2e9a},
+ 51: {From: 0xf39, To: 0x367},
+ 52: {From: 0x10d0, To: 0x140},
+ 53: {From: 0x1104, To: 0x2d0},
+ 54: {From: 0x11a0, To: 0x1ec},
+ 55: {From: 0x1279, To: 0x21},
+ 56: {From: 0x1424, To: 0x15e},
+ 57: {From: 0x1470, To: 0x14e},
+ 58: {From: 0x151f, To: 0xd9b},
+ 59: {From: 0x1523, To: 0x390},
+ 60: {From: 0x1532, To: 0x19f},
+ 61: {From: 0x1580, To: 0x210},
+ 62: {From: 0x1583, To: 0x10d},
+ 63: {From: 0x15a3, To: 0x3caf},
+ 64: {From: 0x1630, To: 0x222e},
+ 65: {From: 0x166a, To: 0x19b},
+ 66: {From: 0x16c8, To: 0x136},
+ 67: {From: 0x1700, To: 0x29f8},
+ 68: {From: 0x1718, To: 0x194},
+ 69: {From: 0x1727, To: 0xf3f},
+ 70: {From: 0x177a, To: 0x178},
+ 71: {From: 0x1809, To: 0x17b6},
+ 72: {From: 0x1816, To: 0x18f3},
+ 73: {From: 0x188a, To: 0x436},
+ 74: {From: 0x1979, To: 0x1d01},
+ 75: {From: 0x1a74, To: 0x2bb0},
+ 76: {From: 0x1a8a, To: 0x1f8},
+ 77: {From: 0x1b5a, To: 0x1fa},
+ 78: {From: 0x1b86, To: 0x1515},
+ 79: {From: 0x1d64, To: 0x2c9b},
+ 80: {From: 0x2038, To: 0x37b1},
+ 81: {From: 0x203d, To: 0x20dd},
+ 82: {From: 0x205a, To: 0x30b},
+ 83: {From: 0x20e3, To: 0x274},
+ 84: {From: 0x20ee, To: 0x263},
+ 85: {From: 0x20f2, To: 0x22d},
+ 86: {From: 0x20f9, To: 0x256},
+ 87: {From: 0x210f, To: 0x21eb},
+ 88: {From: 0x2135, To: 0x27d},
+ 89: {From: 0x2160, To: 0x913},
+ 90: {From: 0x2199, To: 0x121},
+ 91: {From: 0x21ce, To: 0x1561},
+ 92: {From: 0x21e6, To: 0x504},
+ 93: {From: 0x21f4, To: 0x49f},
+ 94: {From: 0x21fb, To: 0x269},
+ 95: {From: 0x222d, To: 0x121},
+ 96: {From: 0x2237, To: 0x121},
+ 97: {From: 0x2262, To: 0x92a},
+ 98: {From: 0x2316, To: 0x3226},
+ 99: {From: 0x236a, To: 0x2835},
+ 100: {From: 0x2382, To: 0x3365},
+ 101: {From: 0x2472, To: 0x2c7},
+ 102: {From: 0x24e4, To: 0x2ff},
+ 103: {From: 0x24f0, To: 0x2fa},
+ 104: {From: 0x24fa, To: 0x31f},
+ 105: {From: 0x2550, To: 0xb5b},
+ 106: {From: 0x25a9, To: 0xe2},
+ 107: {From: 0x263e, To: 0x2d0},
+ 108: {From: 0x26c9, To: 0x26b4},
+ 109: {From: 0x26f9, To: 0x3c8},
+ 110: {From: 0x2727, To: 0x3caf},
+ 111: {From: 0x2755, To: 0x6a4},
+ 112: {From: 0x2765, To: 0x26b4},
+ 113: {From: 0x2789, To: 0x4358},
+ 114: {From: 0x27c9, To: 0x2001},
+ 115: {From: 0x28ea, To: 0x27b1},
+ 116: {From: 0x28ef, To: 0x2837},
+ 117: {From: 0x2914, To: 0x351},
+ 118: {From: 0x2986, To: 0x2da7},
+ 119: {From: 0x29f0, To: 0x96b},
+ 120: {From: 0x2b1a, To: 0x38d},
+ 121: {From: 0x2bfc, To: 0x395},
+ 122: {From: 0x2c3f, To: 0x3caf},
+ 123: {From: 0x2cfc, To: 0x3be},
+ 124: {From: 0x2d13, To: 0x597},
+ 125: {From: 0x2d47, To: 0x148},
+ 126: {From: 0x2d48, To: 0x148},
+ 127: {From: 0x2dff, To: 0x2f1},
+ 128: {From: 0x2e08, To: 0x19cc},
+ 129: {From: 0x2e1a, To: 0x2d95},
+ 130: {From: 0x2e21, To: 0x292},
+ 131: {From: 0x2e54, To: 0x7d},
+ 132: {From: 0x2e65, To: 0x2282},
+ 133: {From: 0x2ea0, To: 0x2e9b},
+ 134: {From: 0x2eef, To: 0x2ed7},
+ 135: {From: 0x3193, To: 0x3c4},
+ 136: {From: 0x3366, To: 0x338e},
+ 137: {From: 0x342a, To: 0x3dc},
+ 138: {From: 0x34ee, To: 0x18d0},
+ 139: {From: 0x35c8, To: 0x2c9b},
+ 140: {From: 0x35e6, To: 0x412},
+ 141: {From: 0x3658, To: 0x246},
+ 142: {From: 0x3676, To: 0x3f4},
+ 143: {From: 0x36fd, To: 0x445},
+ 144: {From: 0x37c0, To: 0x121},
+ 145: {From: 0x3816, To: 0x38f2},
+ 146: {From: 0x382a, To: 0x2b48},
+ 147: {From: 0x382b, To: 0x2c9b},
+ 148: {From: 0x382f, To: 0xa9},
+ 149: {From: 0x3832, To: 0x3228},
+ 150: {From: 0x386c, To: 0x39a6},
+ 151: {From: 0x3892, To: 0x3fc0},
+ 152: {From: 0x38a5, To: 0x39d7},
+ 153: {From: 0x38b4, To: 0x1fa4},
+ 154: {From: 0x38b5, To: 0x2e9a},
+ 155: {From: 0x395c, To: 0x47e},
+ 156: {From: 0x3b4e, To: 0xd91},
+ 157: {From: 0x3b78, To: 0x137},
+ 158: {From: 0x3c99, To: 0x4bc},
+ 159: {From: 0x3fbd, To: 0x100},
+ 160: {From: 0x4208, To: 0xa91},
+ 161: {From: 0x42be, To: 0x573},
+ 162: {From: 0x42f9, To: 0x3f60},
+ 163: {From: 0x4378, To: 0x25a},
+ 164: {From: 0x43b8, To: 0xe6c},
+ 165: {From: 0x43cd, To: 0x10f},
+ 166: {From: 0x44af, To: 0x3322},
+ 167: {From: 0x44e3, To: 0x512},
+ 168: {From: 0x45ca, To: 0x2409},
+ 169: {From: 0x45dd, To: 0x26dc},
+ 170: {From: 0x4610, To: 0x48ae},
+ 171: {From: 0x46ae, To: 0x46a0},
+ 172: {From: 0x473e, To: 0x4745},
+ 173: {From: 0x4817, To: 0x3503},
+ 174: {From: 0x4916, To: 0x31f},
+ 175: {From: 0x49a7, To: 0x523},
}
-// Size: 164 bytes, 164 elements
-var AliasTypes = [164]AliasType{
+// Size: 176 bytes, 176 elements
+var AliasTypes = [176]AliasType{
// Entry 0 - 3F
1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2,
- 1, 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, 0,
- 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0,
- 2, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0,
+ 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 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, 1, 2, 2, 0,
// Entry 40 - 7F
- 1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 1, 1,
- 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
- 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1,
- 0, 1, 0, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2,
+ 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 0, 1, 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, 1, 0, 0, 1, 1, 0, 1, 0, 2, 1, 1,
// Entry 80 - BF
- 0, 0, 2, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 1, 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,
- 0, 1, 1, 1,
+ 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 0, 2, 1, 1, 1,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2,
+ 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1,
}
const (
- _Latn = 87
- _Hani = 54
- _Hans = 56
- _Hant = 57
- _Qaaa = 139
- _Qaai = 147
- _Qabx = 188
- _Zinh = 236
- _Zyyy = 241
- _Zzzz = 242
+ _Latn = 90
+ _Hani = 57
+ _Hans = 59
+ _Hant = 60
+ _Qaaa = 143
+ _Qaai = 151
+ _Qabx = 192
+ _Zinh = 245
+ _Zyyy = 250
+ _Zzzz = 251
)
// 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: 976 bytes
+const script tag.Index = "" + // Size: 1012 bytes
"----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" +
- "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCpmnCprtCyrlCyrsDevaDogrDsrt" +
- "DuplEgydEgyhEgypElbaEthiGeokGeorGlagGongGonmGothGranGrekGujrGuruHanbHang" +
- "HaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamoJavaJpanJurc" +
- "KaliKanaKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepc" +
- "LimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedfMendMercMeroMlym" +
- "ModiMongMoonMrooMteiMultMymrNarbNbatNewaNkdbNkgbNkooNshuOgamOlckOrkhOrya" +
- "OsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaae" +
- "QaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaaw" +
- "QaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabkQablQabmQabnQabo" +
- "QabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSaraSarbSaurSgnwShaw" +
- "ShrdShuiSiddSindSinhSoraSoyoSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTaml" +
- "TangTavtTeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWchoWoleXpeoXsux" +
- "YiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff\xff"
+ "BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak" +
+ "DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr" +
+ "GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo" +
+ "JavaJpanJurcKaliKanaKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatfLatg" +
+ "LatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedfMend" +
+ "MercMeroMlymModiMongMoonMrooMteiMultMymrNandNarbNbatNewaNkdbNkgbNkooNshu" +
+ "OgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPiqdPlrdPrtiQaaa" +
+ "QaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaas" +
+ "QaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabk" +
+ "QablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRohgRoroRunrSamr" +
+ "SaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogdSogoSoraSoyoSundSyloSyrcSyre" +
+ "SyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhToto" +
+ "UgarVaiiVispWaraWchoWoleXpeoXsuxYeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz" +
+ "\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, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29,
+ 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, 0x57, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 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,
@@ -828,66 +841,66 @@ var suppressScript = [1330]uint8{
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, 0x57,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
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, 0x57,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 100 - 13F
- 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,
+ 0x5a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xde, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x57, 0x00, 0x57, 0x00,
+ 0xe5, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x5a, 0x00, 0x5a, 0x00,
// Entry 140 - 17F
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,
- 0x00, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x57, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00,
+ 0x00, 0x5a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x5a, 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,
- 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x57, 0x32, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5a, 0x35, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x21, 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, 0x57, 0x57, 0x00, 0x57, 0x57, 0x00, 0x08,
+ 0x00, 0x5a, 0x5a, 0x00, 0x5a, 0x5a, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,
- 0x57, 0x57, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00,
+ 0x5a, 0x5a, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00,
// Entry 200 - 23F
- 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2b, 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, 0x1f, 0x00, 0x00, 0x57, 0x00, 0x00,
- 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x4f, 0x00, 0x00, 0x50, 0x00, 0x21, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x5a, 0x00, 0x00,
+ 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x52, 0x00, 0x00, 0x53, 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,
@@ -895,101 +908,101 @@ var suppressScript = [1330]uint8{
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, 0x57, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00,
- 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00,
+ 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 2C0 - 2FF
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 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,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
// Entry 300 - 33F
- 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x57,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5a,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,
+ 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00,
// Entry 340 - 37F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00,
- 0x57, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x57, 0x00,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00,
+ 0x5a, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x5a, 0x00,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 380 - 3BF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x00, 0x81, 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, 0x57, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
// Entry 3C0 - 3FF
- 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1f, 0x00, 0x00, 0x57, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x5a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Entry 400 - 43F
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,
- 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00,
+ 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00,
// Entry 440 - 47F
- 0x00, 0x00, 0x00, 0x00, 0x57, 0x57, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5a, 0x5a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xda, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x29,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,
+ 0x00, 0xe1, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x2c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00,
// Entry 480 - 4BF
- 0x57, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00,
+ 0x5a, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00,
+ 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
+ 0x5a, 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
- 0x57, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00,
+ 0x5a, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5a, 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, 0x3b, 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, 0x57,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
0x00, 0x00,
}
@@ -1255,97 +1268,117 @@ var fromM49 = [333]uint16{
0xc759, 0xc95a, 0xcb5b, 0xcd5c, 0xcf65,
}
-// Size: 1615 bytes
+// Size: 1995 bytes
var variantIndex = map[string]uint8{
"1606nict": 0x0,
"1694acad": 0x1,
"1901": 0x2,
"1959acad": 0x3,
- "1994": 0x4d,
+ "1994": 0x60,
"1996": 0x4,
"abl1943": 0x5,
"akuapem": 0x6,
- "alalc97": 0x4f,
+ "alalc97": 0x62,
"aluku": 0x7,
"ao1990": 0x8,
- "arevela": 0x9,
- "arevmda": 0xa,
- "asante": 0xb,
- "baku1926": 0xc,
- "balanka": 0xd,
- "barla": 0xe,
- "basiceng": 0xf,
- "bauddha": 0x10,
- "biscayan": 0x11,
- "biske": 0x48,
- "bohoric": 0x12,
- "boont": 0x13,
- "colb1945": 0x14,
- "cornu": 0x15,
- "dajnko": 0x16,
- "ekavsk": 0x17,
- "emodeng": 0x18,
- "fonipa": 0x50,
- "fonnapa": 0x51,
- "fonupa": 0x52,
- "fonxsamp": 0x53,
- "hepburn": 0x19,
- "heploc": 0x4e,
- "hognorsk": 0x1a,
- "hsistemo": 0x1b,
- "ijekavsk": 0x1c,
- "itihasa": 0x1d,
- "jauer": 0x1e,
- "jyutping": 0x1f,
- "kkcor": 0x20,
- "kociewie": 0x21,
- "kscor": 0x22,
- "laukika": 0x23,
- "lipaw": 0x49,
- "luna1918": 0x24,
- "metelko": 0x25,
- "monoton": 0x26,
- "ndyuka": 0x27,
- "nedis": 0x28,
- "newfound": 0x29,
- "njiva": 0x4a,
- "nulik": 0x2a,
- "osojs": 0x4b,
- "oxendict": 0x2b,
- "pahawh2": 0x2c,
- "pahawh3": 0x2d,
- "pahawh4": 0x2e,
- "pamaka": 0x2f,
- "petr1708": 0x30,
- "pinyin": 0x31,
- "polyton": 0x32,
- "puter": 0x33,
- "rigik": 0x34,
- "rozaj": 0x35,
- "rumgr": 0x36,
- "scotland": 0x37,
- "scouse": 0x38,
- "simple": 0x54,
- "solba": 0x4c,
- "sotav": 0x39,
- "spanglis": 0x3a,
- "surmiran": 0x3b,
- "sursilv": 0x3c,
- "sutsilv": 0x3d,
- "tarask": 0x3e,
- "uccor": 0x3f,
- "ucrcor": 0x40,
- "ulster": 0x41,
- "unifon": 0x42,
- "vaidika": 0x43,
- "valencia": 0x44,
- "vallader": 0x45,
- "wadegile": 0x46,
- "xsistemo": 0x47,
+ "aranes": 0x9,
+ "arevela": 0xa,
+ "arevmda": 0xb,
+ "asante": 0xc,
+ "auvern": 0xd,
+ "baku1926": 0xe,
+ "balanka": 0xf,
+ "barla": 0x10,
+ "basiceng": 0x11,
+ "bauddha": 0x12,
+ "biscayan": 0x13,
+ "biske": 0x5b,
+ "bohoric": 0x14,
+ "boont": 0x15,
+ "bornholm": 0x16,
+ "cisaup": 0x17,
+ "colb1945": 0x18,
+ "cornu": 0x19,
+ "creiss": 0x1a,
+ "dajnko": 0x1b,
+ "ekavsk": 0x1c,
+ "emodeng": 0x1d,
+ "fonipa": 0x63,
+ "fonkirsh": 0x64,
+ "fonnapa": 0x65,
+ "fonupa": 0x66,
+ "fonxsamp": 0x67,
+ "gascon": 0x1e,
+ "grclass": 0x1f,
+ "grital": 0x20,
+ "grmistr": 0x21,
+ "hepburn": 0x22,
+ "heploc": 0x61,
+ "hognorsk": 0x23,
+ "hsistemo": 0x24,
+ "ijekavsk": 0x25,
+ "itihasa": 0x26,
+ "ivanchov": 0x27,
+ "jauer": 0x28,
+ "jyutping": 0x29,
+ "kkcor": 0x2a,
+ "kociewie": 0x2b,
+ "kscor": 0x2c,
+ "laukika": 0x2d,
+ "lemosin": 0x2e,
+ "lengadoc": 0x2f,
+ "lipaw": 0x5c,
+ "luna1918": 0x30,
+ "metelko": 0x31,
+ "monoton": 0x32,
+ "ndyuka": 0x33,
+ "nedis": 0x34,
+ "newfound": 0x35,
+ "nicard": 0x36,
+ "njiva": 0x5d,
+ "nulik": 0x37,
+ "osojs": 0x5e,
+ "oxendict": 0x38,
+ "pahawh2": 0x39,
+ "pahawh3": 0x3a,
+ "pahawh4": 0x3b,
+ "pamaka": 0x3c,
+ "peano": 0x3d,
+ "petr1708": 0x3e,
+ "pinyin": 0x3f,
+ "polyton": 0x40,
+ "provenc": 0x41,
+ "puter": 0x42,
+ "rigik": 0x43,
+ "rozaj": 0x44,
+ "rumgr": 0x45,
+ "scotland": 0x46,
+ "scouse": 0x47,
+ "simple": 0x68,
+ "solba": 0x5f,
+ "sotav": 0x48,
+ "spanglis": 0x49,
+ "surmiran": 0x4a,
+ "sursilv": 0x4b,
+ "sutsilv": 0x4c,
+ "tarask": 0x4d,
+ "tongyong": 0x4e,
+ "tunumiit": 0x4f,
+ "uccor": 0x50,
+ "ucrcor": 0x51,
+ "ulster": 0x52,
+ "unifon": 0x53,
+ "vaidika": 0x54,
+ "valencia": 0x55,
+ "vallader": 0x56,
+ "vecdruka": 0x57,
+ "vivaraup": 0x58,
+ "wadegile": 0x59,
+ "xsistemo": 0x5a,
}
// variantNumSpecialized is the number of specialized variants in variants.
-const variantNumSpecialized = 79
+const variantNumSpecialized = 98
// nRegionGroups is the number of region groups.
const nRegionGroups = 33
@@ -1357,8 +1390,8 @@ type likelyLangRegion struct {
// likelyScript is a lookup table, indexed by scriptID, for the most likely
// languages and regions given a script.
-// Size: 976 bytes, 244 elements
-var likelyScript = [244]likelyLangRegion{
+// Size: 1012 bytes, 253 elements
+var likelyScript = [253]likelyLangRegion{
1: {lang: 0x14e, region: 0x84},
3: {lang: 0x2a2, region: 0x106},
4: {lang: 0x1f, region: 0x99},
@@ -1382,126 +1415,126 @@ var likelyScript = [244]likelyLangRegion{
24: {lang: 0x4f0, region: 0x12b},
25: {lang: 0xe7, region: 0x13e},
26: {lang: 0xe5, region: 0x135},
- 28: {lang: 0xf1, region: 0x6b},
- 30: {lang: 0x1a0, region: 0x5d},
- 31: {lang: 0x3e2, region: 0x106},
- 33: {lang: 0x1be, region: 0x99},
- 36: {lang: 0x15e, region: 0x78},
- 39: {lang: 0x133, region: 0x6b},
- 40: {lang: 0x431, region: 0x27},
- 41: {lang: 0x27, region: 0x6f},
- 43: {lang: 0x210, region: 0x7d},
- 44: {lang: 0xfe, region: 0x38},
- 46: {lang: 0x19b, region: 0x99},
- 47: {lang: 0x19e, region: 0x130},
- 48: {lang: 0x3e9, region: 0x99},
- 49: {lang: 0x136, region: 0x87},
- 50: {lang: 0x1a4, region: 0x99},
- 51: {lang: 0x39d, region: 0x99},
- 52: {lang: 0x529, region: 0x12e},
- 53: {lang: 0x254, region: 0xab},
- 54: {lang: 0x529, region: 0x53},
- 55: {lang: 0x1cb, region: 0xe7},
- 56: {lang: 0x529, region: 0x53},
- 57: {lang: 0x529, region: 0x12e},
- 58: {lang: 0x2fd, region: 0x9b},
- 59: {lang: 0x1bc, region: 0x97},
- 60: {lang: 0x200, region: 0xa2},
- 61: {lang: 0x1c5, region: 0x12b},
- 62: {lang: 0x1ca, region: 0xaf},
- 65: {lang: 0x1d5, region: 0x92},
- 67: {lang: 0x142, region: 0x9e},
- 68: {lang: 0x254, region: 0xab},
- 69: {lang: 0x20e, region: 0x95},
- 70: {lang: 0x200, region: 0xa2},
- 72: {lang: 0x135, region: 0xc4},
+ 29: {lang: 0xf1, region: 0x6b},
+ 31: {lang: 0x1a0, region: 0x5d},
+ 32: {lang: 0x3e2, region: 0x106},
+ 34: {lang: 0x1be, region: 0x99},
+ 38: {lang: 0x15e, region: 0x78},
+ 41: {lang: 0x133, region: 0x6b},
+ 42: {lang: 0x431, region: 0x27},
+ 44: {lang: 0x27, region: 0x6f},
+ 46: {lang: 0x210, region: 0x7d},
+ 47: {lang: 0xfe, region: 0x38},
+ 49: {lang: 0x19b, region: 0x99},
+ 50: {lang: 0x19e, region: 0x130},
+ 51: {lang: 0x3e9, region: 0x99},
+ 52: {lang: 0x136, region: 0x87},
+ 53: {lang: 0x1a4, region: 0x99},
+ 54: {lang: 0x39d, region: 0x99},
+ 55: {lang: 0x529, region: 0x12e},
+ 56: {lang: 0x254, region: 0xab},
+ 57: {lang: 0x529, region: 0x53},
+ 58: {lang: 0x1cb, region: 0xe7},
+ 59: {lang: 0x529, region: 0x53},
+ 60: {lang: 0x529, region: 0x12e},
+ 61: {lang: 0x2fd, region: 0x9b},
+ 62: {lang: 0x1bc, region: 0x97},
+ 63: {lang: 0x200, region: 0xa2},
+ 64: {lang: 0x1c5, region: 0x12b},
+ 65: {lang: 0x1ca, region: 0xaf},
+ 68: {lang: 0x1d5, region: 0x92},
+ 70: {lang: 0x142, region: 0x9e},
+ 71: {lang: 0x254, region: 0xab},
+ 72: {lang: 0x20e, region: 0x95},
73: {lang: 0x200, region: 0xa2},
- 74: {lang: 0x3bb, region: 0xe8},
- 75: {lang: 0x24a, region: 0xa6},
- 76: {lang: 0x3fa, region: 0x99},
- 79: {lang: 0x251, region: 0x99},
- 80: {lang: 0x254, region: 0xab},
- 82: {lang: 0x88, region: 0x99},
- 83: {lang: 0x370, region: 0x123},
- 84: {lang: 0x2b8, region: 0xaf},
- 89: {lang: 0x29f, region: 0x99},
- 90: {lang: 0x2a8, region: 0x99},
- 91: {lang: 0x28f, region: 0x87},
- 92: {lang: 0x1a0, region: 0x87},
- 93: {lang: 0x2ac, region: 0x53},
- 95: {lang: 0x4f4, region: 0x12b},
- 96: {lang: 0x4f5, region: 0x12b},
- 97: {lang: 0x1be, region: 0x99},
- 99: {lang: 0x337, region: 0x9c},
- 100: {lang: 0x4f7, region: 0x53},
- 101: {lang: 0xa9, region: 0x53},
- 104: {lang: 0x2e8, region: 0x112},
- 105: {lang: 0x4f8, region: 0x10b},
- 106: {lang: 0x4f8, region: 0x10b},
- 107: {lang: 0x304, region: 0x99},
- 108: {lang: 0x31b, region: 0x99},
- 109: {lang: 0x30b, region: 0x53},
- 111: {lang: 0x31e, region: 0x35},
- 112: {lang: 0x30e, region: 0x99},
- 113: {lang: 0x414, region: 0xe8},
- 114: {lang: 0x331, region: 0xc4},
- 115: {lang: 0x4f9, region: 0x108},
- 116: {lang: 0x3b, region: 0xa1},
- 117: {lang: 0x353, region: 0xdb},
- 120: {lang: 0x2d0, region: 0x84},
- 121: {lang: 0x52a, region: 0x53},
- 122: {lang: 0x403, region: 0x96},
- 123: {lang: 0x3ee, region: 0x99},
- 124: {lang: 0x39b, region: 0xc5},
- 125: {lang: 0x395, region: 0x99},
- 126: {lang: 0x399, region: 0x135},
- 127: {lang: 0x429, region: 0x115},
- 128: {lang: 0x3b, region: 0x11c},
- 129: {lang: 0xfd, region: 0xc4},
- 130: {lang: 0x27d, region: 0x106},
- 131: {lang: 0x2c9, region: 0x53},
- 132: {lang: 0x39f, region: 0x9c},
- 133: {lang: 0x39f, region: 0x53},
- 135: {lang: 0x3ad, region: 0xb0},
- 137: {lang: 0x1c6, region: 0x53},
- 138: {lang: 0x4fd, region: 0x9c},
- 189: {lang: 0x3cb, region: 0x95},
- 191: {lang: 0x372, region: 0x10c},
- 192: {lang: 0x420, region: 0x97},
- 194: {lang: 0x4ff, region: 0x15e},
- 195: {lang: 0x3f0, region: 0x99},
- 196: {lang: 0x45, region: 0x135},
- 197: {lang: 0x139, region: 0x7b},
- 198: {lang: 0x3e9, region: 0x99},
- 200: {lang: 0x3e9, region: 0x99},
- 201: {lang: 0x3fa, region: 0x99},
- 202: {lang: 0x40c, region: 0xb3},
- 203: {lang: 0x433, region: 0x99},
- 204: {lang: 0xef, region: 0xc5},
- 205: {lang: 0x43e, region: 0x95},
- 206: {lang: 0x44d, region: 0x35},
- 207: {lang: 0x44e, region: 0x9b},
- 211: {lang: 0x45a, region: 0xe7},
- 212: {lang: 0x11a, region: 0x99},
- 213: {lang: 0x45e, region: 0x53},
- 214: {lang: 0x232, region: 0x53},
- 215: {lang: 0x450, region: 0x99},
- 216: {lang: 0x4a5, region: 0x53},
- 217: {lang: 0x9f, region: 0x13e},
- 218: {lang: 0x461, region: 0x99},
- 220: {lang: 0x528, region: 0xba},
- 221: {lang: 0x153, region: 0xe7},
- 222: {lang: 0x128, region: 0xcd},
- 223: {lang: 0x46b, region: 0x123},
- 224: {lang: 0xa9, region: 0x53},
- 225: {lang: 0x2ce, region: 0x99},
- 226: {lang: 0x4ad, region: 0x11c},
- 227: {lang: 0x4be, region: 0xb4},
- 229: {lang: 0x1ce, region: 0x99},
- 232: {lang: 0x3a9, region: 0x9c},
- 233: {lang: 0x22, region: 0x9b},
- 234: {lang: 0x1ea, region: 0x53},
- 235: {lang: 0xef, region: 0xc5},
+ 75: {lang: 0x135, region: 0xc4},
+ 76: {lang: 0x200, region: 0xa2},
+ 77: {lang: 0x3bb, region: 0xe8},
+ 78: {lang: 0x24a, region: 0xa6},
+ 79: {lang: 0x3fa, region: 0x99},
+ 82: {lang: 0x251, region: 0x99},
+ 83: {lang: 0x254, region: 0xab},
+ 85: {lang: 0x88, region: 0x99},
+ 86: {lang: 0x370, region: 0x123},
+ 87: {lang: 0x2b8, region: 0xaf},
+ 92: {lang: 0x29f, region: 0x99},
+ 93: {lang: 0x2a8, region: 0x99},
+ 94: {lang: 0x28f, region: 0x87},
+ 95: {lang: 0x1a0, region: 0x87},
+ 96: {lang: 0x2ac, region: 0x53},
+ 98: {lang: 0x4f4, region: 0x12b},
+ 99: {lang: 0x4f5, region: 0x12b},
+ 100: {lang: 0x1be, region: 0x99},
+ 102: {lang: 0x337, region: 0x9c},
+ 103: {lang: 0x4f7, region: 0x53},
+ 104: {lang: 0xa9, region: 0x53},
+ 107: {lang: 0x2e8, region: 0x112},
+ 108: {lang: 0x4f8, region: 0x10b},
+ 109: {lang: 0x4f8, region: 0x10b},
+ 110: {lang: 0x304, region: 0x99},
+ 111: {lang: 0x31b, region: 0x99},
+ 112: {lang: 0x30b, region: 0x53},
+ 114: {lang: 0x31e, region: 0x35},
+ 115: {lang: 0x30e, region: 0x99},
+ 116: {lang: 0x414, region: 0xe8},
+ 117: {lang: 0x331, region: 0xc4},
+ 119: {lang: 0x4f9, region: 0x108},
+ 120: {lang: 0x3b, region: 0xa1},
+ 121: {lang: 0x353, region: 0xdb},
+ 124: {lang: 0x2d0, region: 0x84},
+ 125: {lang: 0x52a, region: 0x53},
+ 126: {lang: 0x403, region: 0x96},
+ 127: {lang: 0x3ee, region: 0x99},
+ 128: {lang: 0x39b, region: 0xc5},
+ 129: {lang: 0x395, region: 0x99},
+ 130: {lang: 0x399, region: 0x135},
+ 131: {lang: 0x429, region: 0x115},
+ 132: {lang: 0x3b, region: 0x11c},
+ 133: {lang: 0xfd, region: 0xc4},
+ 134: {lang: 0x27d, region: 0x106},
+ 135: {lang: 0x2c9, region: 0x53},
+ 136: {lang: 0x39f, region: 0x9c},
+ 137: {lang: 0x39f, region: 0x53},
+ 139: {lang: 0x3ad, region: 0xb0},
+ 141: {lang: 0x1c6, region: 0x53},
+ 142: {lang: 0x4fd, region: 0x9c},
+ 193: {lang: 0x3cb, region: 0x95},
+ 196: {lang: 0x372, region: 0x10c},
+ 197: {lang: 0x420, region: 0x97},
+ 199: {lang: 0x4ff, region: 0x15e},
+ 200: {lang: 0x3f0, region: 0x99},
+ 201: {lang: 0x45, region: 0x135},
+ 202: {lang: 0x139, region: 0x7b},
+ 203: {lang: 0x3e9, region: 0x99},
+ 205: {lang: 0x3e9, region: 0x99},
+ 206: {lang: 0x3fa, region: 0x99},
+ 207: {lang: 0x40c, region: 0xb3},
+ 210: {lang: 0x433, region: 0x99},
+ 211: {lang: 0xef, region: 0xc5},
+ 212: {lang: 0x43e, region: 0x95},
+ 213: {lang: 0x44d, region: 0x35},
+ 214: {lang: 0x44e, region: 0x9b},
+ 218: {lang: 0x45a, region: 0xe7},
+ 219: {lang: 0x11a, region: 0x99},
+ 220: {lang: 0x45e, region: 0x53},
+ 221: {lang: 0x232, region: 0x53},
+ 222: {lang: 0x450, region: 0x99},
+ 223: {lang: 0x4a5, region: 0x53},
+ 224: {lang: 0x9f, region: 0x13e},
+ 225: {lang: 0x461, region: 0x99},
+ 227: {lang: 0x528, region: 0xba},
+ 228: {lang: 0x153, region: 0xe7},
+ 229: {lang: 0x128, region: 0xcd},
+ 230: {lang: 0x46b, region: 0x123},
+ 231: {lang: 0xa9, region: 0x53},
+ 232: {lang: 0x2ce, region: 0x99},
+ 234: {lang: 0x4ad, region: 0x11c},
+ 235: {lang: 0x4be, region: 0xb4},
+ 237: {lang: 0x1ce, region: 0x99},
+ 240: {lang: 0x3a9, region: 0x9c},
+ 241: {lang: 0x22, region: 0x9b},
+ 243: {lang: 0x1ea, region: 0x53},
+ 244: {lang: 0xef, region: 0xc5},
}
type likelyScriptRegion struct {
@@ -1516,1423 +1549,1423 @@ type likelyScriptRegion struct {
// of the list in likelyLangList.
// Size: 5320 bytes, 1330 elements
var likelyLang = [1330]likelyScriptRegion{
- 0: {region: 0x135, script: 0x57, flags: 0x0},
- 1: {region: 0x6f, script: 0x57, flags: 0x0},
- 2: {region: 0x165, script: 0x57, flags: 0x0},
- 3: {region: 0x165, script: 0x57, flags: 0x0},
- 4: {region: 0x165, script: 0x57, flags: 0x0},
- 5: {region: 0x7d, script: 0x1f, flags: 0x0},
- 6: {region: 0x165, script: 0x57, flags: 0x0},
- 7: {region: 0x165, script: 0x1f, flags: 0x0},
- 8: {region: 0x80, script: 0x57, flags: 0x0},
- 9: {region: 0x165, script: 0x57, flags: 0x0},
- 10: {region: 0x165, script: 0x57, flags: 0x0},
- 11: {region: 0x165, script: 0x57, flags: 0x0},
- 12: {region: 0x95, script: 0x57, flags: 0x0},
- 13: {region: 0x131, script: 0x57, flags: 0x0},
- 14: {region: 0x80, script: 0x57, flags: 0x0},
- 15: {region: 0x165, script: 0x57, flags: 0x0},
- 16: {region: 0x165, script: 0x57, flags: 0x0},
- 17: {region: 0x106, script: 0x1f, flags: 0x0},
- 18: {region: 0x165, script: 0x57, flags: 0x0},
+ 0: {region: 0x135, script: 0x5a, flags: 0x0},
+ 1: {region: 0x6f, script: 0x5a, flags: 0x0},
+ 2: {region: 0x165, script: 0x5a, flags: 0x0},
+ 3: {region: 0x165, script: 0x5a, flags: 0x0},
+ 4: {region: 0x165, script: 0x5a, flags: 0x0},
+ 5: {region: 0x7d, script: 0x20, flags: 0x0},
+ 6: {region: 0x165, script: 0x5a, flags: 0x0},
+ 7: {region: 0x165, script: 0x20, flags: 0x0},
+ 8: {region: 0x80, script: 0x5a, flags: 0x0},
+ 9: {region: 0x165, script: 0x5a, flags: 0x0},
+ 10: {region: 0x165, script: 0x5a, flags: 0x0},
+ 11: {region: 0x165, script: 0x5a, flags: 0x0},
+ 12: {region: 0x95, script: 0x5a, flags: 0x0},
+ 13: {region: 0x131, script: 0x5a, flags: 0x0},
+ 14: {region: 0x80, script: 0x5a, flags: 0x0},
+ 15: {region: 0x165, script: 0x5a, flags: 0x0},
+ 16: {region: 0x165, script: 0x5a, flags: 0x0},
+ 17: {region: 0x106, script: 0x20, flags: 0x0},
+ 18: {region: 0x165, script: 0x5a, flags: 0x0},
19: {region: 0x9c, script: 0x9, flags: 0x0},
20: {region: 0x128, script: 0x5, flags: 0x0},
- 21: {region: 0x165, script: 0x57, flags: 0x0},
- 22: {region: 0x161, script: 0x57, flags: 0x0},
- 23: {region: 0x165, script: 0x57, flags: 0x0},
- 24: {region: 0x165, script: 0x57, flags: 0x0},
- 25: {region: 0x165, script: 0x57, flags: 0x0},
- 26: {region: 0x165, script: 0x57, flags: 0x0},
- 27: {region: 0x165, script: 0x57, flags: 0x0},
- 28: {region: 0x52, script: 0x57, flags: 0x0},
- 29: {region: 0x165, script: 0x57, flags: 0x0},
- 30: {region: 0x165, script: 0x57, flags: 0x0},
+ 21: {region: 0x165, script: 0x5a, flags: 0x0},
+ 22: {region: 0x161, script: 0x5a, flags: 0x0},
+ 23: {region: 0x165, script: 0x5a, flags: 0x0},
+ 24: {region: 0x165, script: 0x5a, flags: 0x0},
+ 25: {region: 0x165, script: 0x5a, flags: 0x0},
+ 26: {region: 0x165, script: 0x5a, flags: 0x0},
+ 27: {region: 0x165, script: 0x5a, flags: 0x0},
+ 28: {region: 0x52, script: 0x5a, flags: 0x0},
+ 29: {region: 0x165, script: 0x5a, flags: 0x0},
+ 30: {region: 0x165, script: 0x5a, flags: 0x0},
31: {region: 0x99, script: 0x4, flags: 0x0},
- 32: {region: 0x165, script: 0x57, flags: 0x0},
- 33: {region: 0x80, script: 0x57, flags: 0x0},
- 34: {region: 0x9b, script: 0xe9, flags: 0x0},
- 35: {region: 0x165, script: 0x57, flags: 0x0},
- 36: {region: 0x165, script: 0x57, flags: 0x0},
- 37: {region: 0x14d, script: 0x57, flags: 0x0},
- 38: {region: 0x106, script: 0x1f, flags: 0x0},
- 39: {region: 0x6f, script: 0x29, flags: 0x0},
- 40: {region: 0x165, script: 0x57, flags: 0x0},
- 41: {region: 0x165, script: 0x57, flags: 0x0},
- 42: {region: 0xd6, script: 0x57, flags: 0x0},
- 43: {region: 0x165, script: 0x57, flags: 0x0},
- 45: {region: 0x165, script: 0x57, flags: 0x0},
- 46: {region: 0x165, script: 0x57, flags: 0x0},
- 47: {region: 0x165, script: 0x57, flags: 0x0},
- 48: {region: 0x165, script: 0x57, flags: 0x0},
- 49: {region: 0x165, script: 0x57, flags: 0x0},
- 50: {region: 0x165, script: 0x57, flags: 0x0},
- 51: {region: 0x95, script: 0x57, flags: 0x0},
+ 32: {region: 0x165, script: 0x5a, flags: 0x0},
+ 33: {region: 0x80, script: 0x5a, flags: 0x0},
+ 34: {region: 0x9b, script: 0xf1, flags: 0x0},
+ 35: {region: 0x165, script: 0x5a, flags: 0x0},
+ 36: {region: 0x165, script: 0x5a, flags: 0x0},
+ 37: {region: 0x14d, script: 0x5a, flags: 0x0},
+ 38: {region: 0x106, script: 0x20, flags: 0x0},
+ 39: {region: 0x6f, script: 0x2c, flags: 0x0},
+ 40: {region: 0x165, script: 0x5a, flags: 0x0},
+ 41: {region: 0x165, script: 0x5a, flags: 0x0},
+ 42: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 43: {region: 0x165, script: 0x5a, flags: 0x0},
+ 45: {region: 0x165, script: 0x5a, flags: 0x0},
+ 46: {region: 0x165, script: 0x5a, flags: 0x0},
+ 47: {region: 0x165, script: 0x5a, flags: 0x0},
+ 48: {region: 0x165, script: 0x5a, flags: 0x0},
+ 49: {region: 0x165, script: 0x5a, flags: 0x0},
+ 50: {region: 0x165, script: 0x5a, flags: 0x0},
+ 51: {region: 0x95, script: 0x5a, flags: 0x0},
52: {region: 0x165, script: 0x5, flags: 0x0},
53: {region: 0x122, script: 0x5, flags: 0x0},
- 54: {region: 0x165, script: 0x57, flags: 0x0},
- 55: {region: 0x165, script: 0x57, flags: 0x0},
- 56: {region: 0x165, script: 0x57, flags: 0x0},
- 57: {region: 0x165, script: 0x57, flags: 0x0},
+ 54: {region: 0x165, script: 0x5a, flags: 0x0},
+ 55: {region: 0x165, script: 0x5a, flags: 0x0},
+ 56: {region: 0x165, script: 0x5a, flags: 0x0},
+ 57: {region: 0x165, script: 0x5a, flags: 0x0},
58: {region: 0x6b, script: 0x5, flags: 0x0},
59: {region: 0x0, script: 0x3, flags: 0x1},
- 60: {region: 0x165, script: 0x57, flags: 0x0},
- 61: {region: 0x51, script: 0x57, flags: 0x0},
- 62: {region: 0x3f, script: 0x57, flags: 0x0},
+ 60: {region: 0x165, script: 0x5a, flags: 0x0},
+ 61: {region: 0x51, script: 0x5a, flags: 0x0},
+ 62: {region: 0x3f, script: 0x5a, flags: 0x0},
63: {region: 0x67, script: 0x5, flags: 0x0},
65: {region: 0xba, script: 0x5, flags: 0x0},
66: {region: 0x6b, script: 0x5, flags: 0x0},
67: {region: 0x99, script: 0xe, flags: 0x0},
- 68: {region: 0x12f, script: 0x57, flags: 0x0},
- 69: {region: 0x135, script: 0xc4, flags: 0x0},
- 70: {region: 0x165, script: 0x57, flags: 0x0},
- 71: {region: 0x165, script: 0x57, flags: 0x0},
- 72: {region: 0x6e, script: 0x57, flags: 0x0},
- 73: {region: 0x165, script: 0x57, flags: 0x0},
- 74: {region: 0x165, script: 0x57, flags: 0x0},
- 75: {region: 0x49, script: 0x57, flags: 0x0},
- 76: {region: 0x165, script: 0x57, flags: 0x0},
- 77: {region: 0x106, script: 0x1f, flags: 0x0},
+ 68: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 69: {region: 0x135, script: 0xc9, flags: 0x0},
+ 70: {region: 0x165, script: 0x5a, flags: 0x0},
+ 71: {region: 0x165, script: 0x5a, flags: 0x0},
+ 72: {region: 0x6e, script: 0x5a, flags: 0x0},
+ 73: {region: 0x165, script: 0x5a, flags: 0x0},
+ 74: {region: 0x165, script: 0x5a, flags: 0x0},
+ 75: {region: 0x49, script: 0x5a, flags: 0x0},
+ 76: {region: 0x165, script: 0x5a, flags: 0x0},
+ 77: {region: 0x106, script: 0x20, flags: 0x0},
78: {region: 0x165, script: 0x5, flags: 0x0},
- 79: {region: 0x165, script: 0x57, flags: 0x0},
- 80: {region: 0x165, script: 0x57, flags: 0x0},
- 81: {region: 0x165, script: 0x57, flags: 0x0},
- 82: {region: 0x99, script: 0x21, flags: 0x0},
- 83: {region: 0x165, script: 0x57, flags: 0x0},
- 84: {region: 0x165, script: 0x57, flags: 0x0},
- 85: {region: 0x165, script: 0x57, flags: 0x0},
- 86: {region: 0x3f, script: 0x57, flags: 0x0},
- 87: {region: 0x165, script: 0x57, flags: 0x0},
+ 79: {region: 0x165, script: 0x5a, flags: 0x0},
+ 80: {region: 0x165, script: 0x5a, flags: 0x0},
+ 81: {region: 0x165, script: 0x5a, flags: 0x0},
+ 82: {region: 0x99, script: 0x22, flags: 0x0},
+ 83: {region: 0x165, script: 0x5a, flags: 0x0},
+ 84: {region: 0x165, script: 0x5a, flags: 0x0},
+ 85: {region: 0x165, script: 0x5a, flags: 0x0},
+ 86: {region: 0x3f, script: 0x5a, flags: 0x0},
+ 87: {region: 0x165, script: 0x5a, flags: 0x0},
88: {region: 0x3, script: 0x5, flags: 0x1},
- 89: {region: 0x106, script: 0x1f, flags: 0x0},
+ 89: {region: 0x106, script: 0x20, flags: 0x0},
90: {region: 0xe8, script: 0x5, flags: 0x0},
- 91: {region: 0x95, script: 0x57, flags: 0x0},
- 92: {region: 0xdb, script: 0x21, flags: 0x0},
- 93: {region: 0x2e, script: 0x57, flags: 0x0},
- 94: {region: 0x52, script: 0x57, flags: 0x0},
- 95: {region: 0x165, script: 0x57, flags: 0x0},
+ 91: {region: 0x95, script: 0x5a, flags: 0x0},
+ 92: {region: 0xdb, script: 0x22, flags: 0x0},
+ 93: {region: 0x2e, script: 0x5a, flags: 0x0},
+ 94: {region: 0x52, script: 0x5a, flags: 0x0},
+ 95: {region: 0x165, script: 0x5a, flags: 0x0},
96: {region: 0x52, script: 0xb, flags: 0x0},
- 97: {region: 0x165, script: 0x57, flags: 0x0},
- 98: {region: 0x165, script: 0x57, flags: 0x0},
- 99: {region: 0x95, script: 0x57, flags: 0x0},
- 100: {region: 0x165, script: 0x57, flags: 0x0},
- 101: {region: 0x52, script: 0x57, flags: 0x0},
- 102: {region: 0x165, script: 0x57, flags: 0x0},
- 103: {region: 0x165, script: 0x57, flags: 0x0},
- 104: {region: 0x165, script: 0x57, flags: 0x0},
- 105: {region: 0x165, script: 0x57, flags: 0x0},
- 106: {region: 0x4f, script: 0x57, flags: 0x0},
- 107: {region: 0x165, script: 0x57, flags: 0x0},
- 108: {region: 0x165, script: 0x57, flags: 0x0},
- 109: {region: 0x165, script: 0x57, flags: 0x0},
- 110: {region: 0x165, script: 0x29, flags: 0x0},
- 111: {region: 0x165, script: 0x57, flags: 0x0},
- 112: {region: 0x165, script: 0x57, flags: 0x0},
- 113: {region: 0x47, script: 0x1f, flags: 0x0},
- 114: {region: 0x165, script: 0x57, flags: 0x0},
- 115: {region: 0x165, script: 0x57, flags: 0x0},
+ 97: {region: 0x165, script: 0x5a, flags: 0x0},
+ 98: {region: 0x165, script: 0x5a, flags: 0x0},
+ 99: {region: 0x95, script: 0x5a, flags: 0x0},
+ 100: {region: 0x165, script: 0x5a, flags: 0x0},
+ 101: {region: 0x52, script: 0x5a, flags: 0x0},
+ 102: {region: 0x165, script: 0x5a, flags: 0x0},
+ 103: {region: 0x165, script: 0x5a, flags: 0x0},
+ 104: {region: 0x165, script: 0x5a, flags: 0x0},
+ 105: {region: 0x165, script: 0x5a, flags: 0x0},
+ 106: {region: 0x4f, script: 0x5a, flags: 0x0},
+ 107: {region: 0x165, script: 0x5a, flags: 0x0},
+ 108: {region: 0x165, script: 0x5a, flags: 0x0},
+ 109: {region: 0x165, script: 0x5a, flags: 0x0},
+ 110: {region: 0x165, script: 0x2c, flags: 0x0},
+ 111: {region: 0x165, script: 0x5a, flags: 0x0},
+ 112: {region: 0x165, script: 0x5a, flags: 0x0},
+ 113: {region: 0x47, script: 0x20, flags: 0x0},
+ 114: {region: 0x165, script: 0x5a, flags: 0x0},
+ 115: {region: 0x165, script: 0x5a, flags: 0x0},
116: {region: 0x10b, script: 0x5, flags: 0x0},
- 117: {region: 0x162, script: 0x57, flags: 0x0},
- 118: {region: 0x165, script: 0x57, flags: 0x0},
- 119: {region: 0x95, script: 0x57, flags: 0x0},
- 120: {region: 0x165, script: 0x57, flags: 0x0},
- 121: {region: 0x12f, script: 0x57, flags: 0x0},
- 122: {region: 0x52, script: 0x57, flags: 0x0},
- 123: {region: 0x99, script: 0xd7, flags: 0x0},
+ 117: {region: 0x162, script: 0x5a, flags: 0x0},
+ 118: {region: 0x165, script: 0x5a, flags: 0x0},
+ 119: {region: 0x95, script: 0x5a, flags: 0x0},
+ 120: {region: 0x165, script: 0x5a, flags: 0x0},
+ 121: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 122: {region: 0x52, script: 0x5a, flags: 0x0},
+ 123: {region: 0x99, script: 0xde, flags: 0x0},
124: {region: 0xe8, script: 0x5, flags: 0x0},
- 125: {region: 0x99, script: 0x21, flags: 0x0},
- 126: {region: 0x38, script: 0x1f, flags: 0x0},
- 127: {region: 0x99, script: 0x21, flags: 0x0},
+ 125: {region: 0x99, script: 0x22, flags: 0x0},
+ 126: {region: 0x38, script: 0x20, flags: 0x0},
+ 127: {region: 0x99, script: 0x22, flags: 0x0},
128: {region: 0xe8, script: 0x5, flags: 0x0},
- 129: {region: 0x12b, script: 0x31, flags: 0x0},
- 131: {region: 0x99, script: 0x21, flags: 0x0},
- 132: {region: 0x165, script: 0x57, flags: 0x0},
- 133: {region: 0x99, script: 0x21, flags: 0x0},
- 134: {region: 0xe7, script: 0x57, flags: 0x0},
- 135: {region: 0x165, script: 0x57, flags: 0x0},
- 136: {region: 0x99, script: 0x21, flags: 0x0},
- 137: {region: 0x165, script: 0x57, flags: 0x0},
- 138: {region: 0x13f, script: 0x57, flags: 0x0},
- 139: {region: 0x165, script: 0x57, flags: 0x0},
- 140: {region: 0x165, script: 0x57, flags: 0x0},
- 141: {region: 0xe7, script: 0x57, flags: 0x0},
- 142: {region: 0x165, script: 0x57, flags: 0x0},
- 143: {region: 0xd6, script: 0x57, flags: 0x0},
- 144: {region: 0x165, script: 0x57, flags: 0x0},
- 145: {region: 0x165, script: 0x57, flags: 0x0},
- 146: {region: 0x165, script: 0x57, flags: 0x0},
- 147: {region: 0x165, script: 0x29, flags: 0x0},
- 148: {region: 0x99, script: 0x21, flags: 0x0},
- 149: {region: 0x95, script: 0x57, flags: 0x0},
- 150: {region: 0x165, script: 0x57, flags: 0x0},
- 151: {region: 0x165, script: 0x57, flags: 0x0},
- 152: {region: 0x114, script: 0x57, flags: 0x0},
- 153: {region: 0x165, script: 0x57, flags: 0x0},
- 154: {region: 0x165, script: 0x57, flags: 0x0},
- 155: {region: 0x52, script: 0x57, flags: 0x0},
- 156: {region: 0x165, script: 0x57, flags: 0x0},
- 157: {region: 0xe7, script: 0x57, flags: 0x0},
- 158: {region: 0x165, script: 0x57, flags: 0x0},
- 159: {region: 0x13e, script: 0xd9, flags: 0x0},
- 160: {region: 0xc3, script: 0x57, flags: 0x0},
- 161: {region: 0x165, script: 0x57, flags: 0x0},
- 162: {region: 0x165, script: 0x57, flags: 0x0},
- 163: {region: 0xc3, script: 0x57, flags: 0x0},
- 164: {region: 0x165, script: 0x57, flags: 0x0},
+ 129: {region: 0x12b, script: 0x34, flags: 0x0},
+ 131: {region: 0x99, script: 0x22, flags: 0x0},
+ 132: {region: 0x165, script: 0x5a, flags: 0x0},
+ 133: {region: 0x99, script: 0x22, flags: 0x0},
+ 134: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 135: {region: 0x165, script: 0x5a, flags: 0x0},
+ 136: {region: 0x99, script: 0x22, flags: 0x0},
+ 137: {region: 0x165, script: 0x5a, flags: 0x0},
+ 138: {region: 0x13f, script: 0x5a, flags: 0x0},
+ 139: {region: 0x165, script: 0x5a, flags: 0x0},
+ 140: {region: 0x165, script: 0x5a, flags: 0x0},
+ 141: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 142: {region: 0x165, script: 0x5a, flags: 0x0},
+ 143: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 144: {region: 0x165, script: 0x5a, flags: 0x0},
+ 145: {region: 0x165, script: 0x5a, flags: 0x0},
+ 146: {region: 0x165, script: 0x5a, flags: 0x0},
+ 147: {region: 0x165, script: 0x2c, flags: 0x0},
+ 148: {region: 0x99, script: 0x22, flags: 0x0},
+ 149: {region: 0x95, script: 0x5a, flags: 0x0},
+ 150: {region: 0x165, script: 0x5a, flags: 0x0},
+ 151: {region: 0x165, script: 0x5a, flags: 0x0},
+ 152: {region: 0x114, script: 0x5a, flags: 0x0},
+ 153: {region: 0x165, script: 0x5a, flags: 0x0},
+ 154: {region: 0x165, script: 0x5a, flags: 0x0},
+ 155: {region: 0x52, script: 0x5a, flags: 0x0},
+ 156: {region: 0x165, script: 0x5a, flags: 0x0},
+ 157: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 158: {region: 0x165, script: 0x5a, flags: 0x0},
+ 159: {region: 0x13e, script: 0xe0, flags: 0x0},
+ 160: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 161: {region: 0x165, script: 0x5a, flags: 0x0},
+ 162: {region: 0x165, script: 0x5a, flags: 0x0},
+ 163: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 164: {region: 0x165, script: 0x5a, flags: 0x0},
165: {region: 0x35, script: 0xe, flags: 0x0},
- 166: {region: 0x165, script: 0x57, flags: 0x0},
- 167: {region: 0x165, script: 0x57, flags: 0x0},
- 168: {region: 0x165, script: 0x57, flags: 0x0},
- 169: {region: 0x53, script: 0xe0, flags: 0x0},
- 170: {region: 0x165, script: 0x57, flags: 0x0},
- 171: {region: 0x165, script: 0x57, flags: 0x0},
- 172: {region: 0x165, script: 0x57, flags: 0x0},
+ 166: {region: 0x165, script: 0x5a, flags: 0x0},
+ 167: {region: 0x165, script: 0x5a, flags: 0x0},
+ 168: {region: 0x165, script: 0x5a, flags: 0x0},
+ 169: {region: 0x53, script: 0xe7, flags: 0x0},
+ 170: {region: 0x165, script: 0x5a, flags: 0x0},
+ 171: {region: 0x165, script: 0x5a, flags: 0x0},
+ 172: {region: 0x165, script: 0x5a, flags: 0x0},
173: {region: 0x99, script: 0xe, flags: 0x0},
- 174: {region: 0x165, script: 0x57, flags: 0x0},
+ 174: {region: 0x165, script: 0x5a, flags: 0x0},
175: {region: 0x9c, script: 0x5, flags: 0x0},
- 176: {region: 0x165, script: 0x57, flags: 0x0},
- 177: {region: 0x4f, script: 0x57, flags: 0x0},
- 178: {region: 0x78, script: 0x57, flags: 0x0},
- 179: {region: 0x99, script: 0x21, flags: 0x0},
+ 176: {region: 0x165, script: 0x5a, flags: 0x0},
+ 177: {region: 0x4f, script: 0x5a, flags: 0x0},
+ 178: {region: 0x78, script: 0x5a, flags: 0x0},
+ 179: {region: 0x99, script: 0x22, flags: 0x0},
180: {region: 0xe8, script: 0x5, flags: 0x0},
- 181: {region: 0x99, script: 0x21, flags: 0x0},
- 182: {region: 0x165, script: 0x57, flags: 0x0},
- 183: {region: 0x33, script: 0x57, flags: 0x0},
- 184: {region: 0x165, script: 0x57, flags: 0x0},
+ 181: {region: 0x99, script: 0x22, flags: 0x0},
+ 182: {region: 0x165, script: 0x5a, flags: 0x0},
+ 183: {region: 0x33, script: 0x5a, flags: 0x0},
+ 184: {region: 0x165, script: 0x5a, flags: 0x0},
185: {region: 0xb4, script: 0xc, flags: 0x0},
- 186: {region: 0x52, script: 0x57, flags: 0x0},
- 187: {region: 0x165, script: 0x29, flags: 0x0},
- 188: {region: 0xe7, script: 0x57, flags: 0x0},
- 189: {region: 0x165, script: 0x57, flags: 0x0},
- 190: {region: 0xe8, script: 0x21, flags: 0x0},
- 191: {region: 0x106, script: 0x1f, flags: 0x0},
- 192: {region: 0x15f, script: 0x57, flags: 0x0},
- 193: {region: 0x165, script: 0x57, flags: 0x0},
- 194: {region: 0x95, script: 0x57, flags: 0x0},
- 195: {region: 0x165, script: 0x57, flags: 0x0},
- 196: {region: 0x52, script: 0x57, flags: 0x0},
- 197: {region: 0x165, script: 0x57, flags: 0x0},
- 198: {region: 0x165, script: 0x57, flags: 0x0},
- 199: {region: 0x165, script: 0x57, flags: 0x0},
- 200: {region: 0x86, script: 0x57, flags: 0x0},
- 201: {region: 0x165, script: 0x57, flags: 0x0},
- 202: {region: 0x165, script: 0x57, flags: 0x0},
- 203: {region: 0x165, script: 0x57, flags: 0x0},
- 204: {region: 0x165, script: 0x57, flags: 0x0},
- 205: {region: 0x6d, script: 0x29, flags: 0x0},
- 206: {region: 0x165, script: 0x57, flags: 0x0},
- 207: {region: 0x165, script: 0x57, flags: 0x0},
- 208: {region: 0x52, script: 0x57, flags: 0x0},
- 209: {region: 0x165, script: 0x57, flags: 0x0},
- 210: {region: 0x165, script: 0x57, flags: 0x0},
- 211: {region: 0xc3, script: 0x57, flags: 0x0},
- 212: {region: 0x165, script: 0x57, flags: 0x0},
- 213: {region: 0x165, script: 0x57, flags: 0x0},
- 214: {region: 0x165, script: 0x57, flags: 0x0},
- 215: {region: 0x6e, script: 0x57, flags: 0x0},
- 216: {region: 0x165, script: 0x57, flags: 0x0},
- 217: {region: 0x165, script: 0x57, flags: 0x0},
- 218: {region: 0xd6, script: 0x57, flags: 0x0},
+ 186: {region: 0x52, script: 0x5a, flags: 0x0},
+ 187: {region: 0x165, script: 0x2c, flags: 0x0},
+ 188: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 189: {region: 0x165, script: 0x5a, flags: 0x0},
+ 190: {region: 0xe8, script: 0x22, flags: 0x0},
+ 191: {region: 0x106, script: 0x20, flags: 0x0},
+ 192: {region: 0x15f, script: 0x5a, flags: 0x0},
+ 193: {region: 0x165, script: 0x5a, flags: 0x0},
+ 194: {region: 0x95, script: 0x5a, flags: 0x0},
+ 195: {region: 0x165, script: 0x5a, flags: 0x0},
+ 196: {region: 0x52, script: 0x5a, flags: 0x0},
+ 197: {region: 0x165, script: 0x5a, flags: 0x0},
+ 198: {region: 0x165, script: 0x5a, flags: 0x0},
+ 199: {region: 0x165, script: 0x5a, flags: 0x0},
+ 200: {region: 0x86, script: 0x5a, flags: 0x0},
+ 201: {region: 0x165, script: 0x5a, flags: 0x0},
+ 202: {region: 0x165, script: 0x5a, flags: 0x0},
+ 203: {region: 0x165, script: 0x5a, flags: 0x0},
+ 204: {region: 0x165, script: 0x5a, flags: 0x0},
+ 205: {region: 0x6d, script: 0x2c, flags: 0x0},
+ 206: {region: 0x165, script: 0x5a, flags: 0x0},
+ 207: {region: 0x165, script: 0x5a, flags: 0x0},
+ 208: {region: 0x52, script: 0x5a, flags: 0x0},
+ 209: {region: 0x165, script: 0x5a, flags: 0x0},
+ 210: {region: 0x165, script: 0x5a, flags: 0x0},
+ 211: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 212: {region: 0x165, script: 0x5a, flags: 0x0},
+ 213: {region: 0x165, script: 0x5a, flags: 0x0},
+ 214: {region: 0x165, script: 0x5a, flags: 0x0},
+ 215: {region: 0x6e, script: 0x5a, flags: 0x0},
+ 216: {region: 0x165, script: 0x5a, flags: 0x0},
+ 217: {region: 0x165, script: 0x5a, flags: 0x0},
+ 218: {region: 0xd6, script: 0x5a, flags: 0x0},
219: {region: 0x35, script: 0x16, flags: 0x0},
- 220: {region: 0x106, script: 0x1f, flags: 0x0},
- 221: {region: 0xe7, script: 0x57, flags: 0x0},
- 222: {region: 0x165, script: 0x57, flags: 0x0},
- 223: {region: 0x131, script: 0x57, flags: 0x0},
- 224: {region: 0x8a, script: 0x57, flags: 0x0},
- 225: {region: 0x75, script: 0x57, flags: 0x0},
- 226: {region: 0x106, script: 0x1f, flags: 0x0},
- 227: {region: 0x135, script: 0x57, flags: 0x0},
- 228: {region: 0x49, script: 0x57, flags: 0x0},
+ 220: {region: 0x106, script: 0x20, flags: 0x0},
+ 221: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 222: {region: 0x165, script: 0x5a, flags: 0x0},
+ 223: {region: 0x131, script: 0x5a, flags: 0x0},
+ 224: {region: 0x8a, script: 0x5a, flags: 0x0},
+ 225: {region: 0x75, script: 0x5a, flags: 0x0},
+ 226: {region: 0x106, script: 0x20, flags: 0x0},
+ 227: {region: 0x135, script: 0x5a, flags: 0x0},
+ 228: {region: 0x49, script: 0x5a, flags: 0x0},
229: {region: 0x135, script: 0x1a, flags: 0x0},
230: {region: 0xa6, script: 0x5, flags: 0x0},
231: {region: 0x13e, script: 0x19, flags: 0x0},
- 232: {region: 0x165, script: 0x57, flags: 0x0},
+ 232: {region: 0x165, script: 0x5a, flags: 0x0},
233: {region: 0x9b, script: 0x5, flags: 0x0},
- 234: {region: 0x165, script: 0x57, flags: 0x0},
- 235: {region: 0x165, script: 0x57, flags: 0x0},
- 236: {region: 0x165, script: 0x57, flags: 0x0},
- 237: {region: 0x165, script: 0x57, flags: 0x0},
- 238: {region: 0x165, script: 0x57, flags: 0x0},
- 239: {region: 0xc5, script: 0xcc, flags: 0x0},
- 240: {region: 0x78, script: 0x57, flags: 0x0},
- 241: {region: 0x6b, script: 0x1c, flags: 0x0},
- 242: {region: 0xe7, script: 0x57, flags: 0x0},
+ 234: {region: 0x165, script: 0x5a, flags: 0x0},
+ 235: {region: 0x165, script: 0x5a, flags: 0x0},
+ 236: {region: 0x165, script: 0x5a, flags: 0x0},
+ 237: {region: 0x165, script: 0x5a, flags: 0x0},
+ 238: {region: 0x165, script: 0x5a, flags: 0x0},
+ 239: {region: 0xc5, script: 0xd3, flags: 0x0},
+ 240: {region: 0x78, script: 0x5a, flags: 0x0},
+ 241: {region: 0x6b, script: 0x1d, flags: 0x0},
+ 242: {region: 0xe7, script: 0x5a, flags: 0x0},
243: {region: 0x49, script: 0x17, flags: 0x0},
- 244: {region: 0x130, script: 0x1f, flags: 0x0},
+ 244: {region: 0x130, 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: 0x10a, script: 0x57, flags: 0x0},
- 250: {region: 0x5e, script: 0x57, flags: 0x0},
- 251: {region: 0xe9, script: 0x57, flags: 0x0},
+ 249: {region: 0x10a, script: 0x5a, flags: 0x0},
+ 250: {region: 0x5e, script: 0x5a, flags: 0x0},
+ 251: {region: 0xe9, script: 0x5a, flags: 0x0},
252: {region: 0x49, script: 0x17, flags: 0x0},
- 253: {region: 0xc4, script: 0x81, flags: 0x0},
+ 253: {region: 0xc4, script: 0x85, flags: 0x0},
254: {region: 0x8, script: 0x2, flags: 0x1},
- 255: {region: 0x106, script: 0x1f, flags: 0x0},
- 256: {region: 0x7b, script: 0x57, flags: 0x0},
- 257: {region: 0x63, script: 0x57, flags: 0x0},
- 258: {region: 0x165, script: 0x57, flags: 0x0},
- 259: {region: 0x165, script: 0x57, flags: 0x0},
- 260: {region: 0x165, script: 0x57, flags: 0x0},
- 261: {region: 0x165, script: 0x57, flags: 0x0},
- 262: {region: 0x135, script: 0x57, flags: 0x0},
- 263: {region: 0x106, script: 0x1f, flags: 0x0},
- 264: {region: 0xa4, script: 0x57, flags: 0x0},
- 265: {region: 0x165, script: 0x57, flags: 0x0},
- 266: {region: 0x165, script: 0x57, flags: 0x0},
+ 255: {region: 0x106, script: 0x20, flags: 0x0},
+ 256: {region: 0x7b, script: 0x5a, flags: 0x0},
+ 257: {region: 0x63, script: 0x5a, flags: 0x0},
+ 258: {region: 0x165, script: 0x5a, flags: 0x0},
+ 259: {region: 0x165, script: 0x5a, flags: 0x0},
+ 260: {region: 0x165, script: 0x5a, flags: 0x0},
+ 261: {region: 0x165, script: 0x5a, flags: 0x0},
+ 262: {region: 0x135, script: 0x5a, flags: 0x0},
+ 263: {region: 0x106, script: 0x20, flags: 0x0},
+ 264: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 265: {region: 0x165, script: 0x5a, flags: 0x0},
+ 266: {region: 0x165, script: 0x5a, flags: 0x0},
267: {region: 0x99, script: 0x5, flags: 0x0},
- 268: {region: 0x165, script: 0x57, flags: 0x0},
- 269: {region: 0x60, script: 0x57, flags: 0x0},
- 270: {region: 0x165, script: 0x57, flags: 0x0},
- 271: {region: 0x49, script: 0x57, flags: 0x0},
- 272: {region: 0x165, script: 0x57, flags: 0x0},
- 273: {region: 0x165, script: 0x57, flags: 0x0},
- 274: {region: 0x165, script: 0x57, flags: 0x0},
+ 268: {region: 0x165, script: 0x5a, flags: 0x0},
+ 269: {region: 0x60, script: 0x5a, flags: 0x0},
+ 270: {region: 0x165, script: 0x5a, flags: 0x0},
+ 271: {region: 0x49, script: 0x5a, flags: 0x0},
+ 272: {region: 0x165, script: 0x5a, flags: 0x0},
+ 273: {region: 0x165, script: 0x5a, flags: 0x0},
+ 274: {region: 0x165, script: 0x5a, flags: 0x0},
275: {region: 0x165, script: 0x5, flags: 0x0},
- 276: {region: 0x49, script: 0x57, flags: 0x0},
- 277: {region: 0x165, script: 0x57, flags: 0x0},
- 278: {region: 0x165, script: 0x57, flags: 0x0},
- 279: {region: 0xd4, script: 0x57, flags: 0x0},
- 280: {region: 0x4f, script: 0x57, flags: 0x0},
- 281: {region: 0x165, script: 0x57, flags: 0x0},
+ 276: {region: 0x49, script: 0x5a, flags: 0x0},
+ 277: {region: 0x165, script: 0x5a, flags: 0x0},
+ 278: {region: 0x165, script: 0x5a, flags: 0x0},
+ 279: {region: 0xd4, script: 0x5a, flags: 0x0},
+ 280: {region: 0x4f, script: 0x5a, flags: 0x0},
+ 281: {region: 0x165, script: 0x5a, flags: 0x0},
282: {region: 0x99, script: 0x5, flags: 0x0},
- 283: {region: 0x165, script: 0x57, flags: 0x0},
- 284: {region: 0x165, script: 0x57, flags: 0x0},
- 285: {region: 0x165, script: 0x57, flags: 0x0},
- 286: {region: 0x165, script: 0x29, flags: 0x0},
- 287: {region: 0x60, script: 0x57, flags: 0x0},
- 288: {region: 0xc3, script: 0x57, flags: 0x0},
- 289: {region: 0xd0, script: 0x57, flags: 0x0},
- 290: {region: 0x165, script: 0x57, flags: 0x0},
- 291: {region: 0xdb, script: 0x21, flags: 0x0},
- 292: {region: 0x52, script: 0x57, flags: 0x0},
- 293: {region: 0x165, script: 0x57, flags: 0x0},
- 294: {region: 0x165, script: 0x57, flags: 0x0},
- 295: {region: 0x165, script: 0x57, flags: 0x0},
- 296: {region: 0xcd, script: 0xde, flags: 0x0},
- 297: {region: 0x165, script: 0x57, flags: 0x0},
- 298: {region: 0x165, script: 0x57, flags: 0x0},
- 299: {region: 0x114, script: 0x57, flags: 0x0},
- 300: {region: 0x37, script: 0x57, flags: 0x0},
- 301: {region: 0x43, script: 0xe0, flags: 0x0},
- 302: {region: 0x165, script: 0x57, flags: 0x0},
- 303: {region: 0xa4, script: 0x57, flags: 0x0},
- 304: {region: 0x80, script: 0x57, flags: 0x0},
- 305: {region: 0xd6, script: 0x57, flags: 0x0},
- 306: {region: 0x9e, script: 0x57, flags: 0x0},
- 307: {region: 0x6b, script: 0x27, flags: 0x0},
- 308: {region: 0x165, script: 0x57, flags: 0x0},
- 309: {region: 0xc4, script: 0x48, flags: 0x0},
- 310: {region: 0x87, script: 0x31, flags: 0x0},
- 311: {region: 0x165, script: 0x57, flags: 0x0},
- 312: {region: 0x165, script: 0x57, flags: 0x0},
+ 283: {region: 0x165, script: 0x5a, flags: 0x0},
+ 284: {region: 0x165, script: 0x5a, flags: 0x0},
+ 285: {region: 0x165, script: 0x5a, flags: 0x0},
+ 286: {region: 0x165, script: 0x2c, flags: 0x0},
+ 287: {region: 0x60, script: 0x5a, flags: 0x0},
+ 288: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 289: {region: 0xd0, script: 0x5a, flags: 0x0},
+ 290: {region: 0x165, script: 0x5a, flags: 0x0},
+ 291: {region: 0xdb, script: 0x22, flags: 0x0},
+ 292: {region: 0x52, script: 0x5a, flags: 0x0},
+ 293: {region: 0x165, script: 0x5a, flags: 0x0},
+ 294: {region: 0x165, script: 0x5a, flags: 0x0},
+ 295: {region: 0x165, script: 0x5a, flags: 0x0},
+ 296: {region: 0xcd, script: 0xe5, flags: 0x0},
+ 297: {region: 0x165, script: 0x5a, flags: 0x0},
+ 298: {region: 0x165, script: 0x5a, flags: 0x0},
+ 299: {region: 0x114, script: 0x5a, flags: 0x0},
+ 300: {region: 0x37, script: 0x5a, flags: 0x0},
+ 301: {region: 0x43, script: 0xe7, flags: 0x0},
+ 302: {region: 0x165, script: 0x5a, flags: 0x0},
+ 303: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 304: {region: 0x80, script: 0x5a, flags: 0x0},
+ 305: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 306: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 307: {region: 0x6b, script: 0x29, flags: 0x0},
+ 308: {region: 0x165, script: 0x5a, flags: 0x0},
+ 309: {region: 0xc4, script: 0x4b, flags: 0x0},
+ 310: {region: 0x87, script: 0x34, flags: 0x0},
+ 311: {region: 0x165, script: 0x5a, flags: 0x0},
+ 312: {region: 0x165, script: 0x5a, flags: 0x0},
313: {region: 0xa, script: 0x2, flags: 0x1},
- 314: {region: 0x165, script: 0x57, flags: 0x0},
- 315: {region: 0x165, script: 0x57, flags: 0x0},
- 316: {region: 0x1, script: 0x57, flags: 0x0},
- 317: {region: 0x165, script: 0x57, flags: 0x0},
- 318: {region: 0x6e, script: 0x57, flags: 0x0},
- 319: {region: 0x135, script: 0x57, flags: 0x0},
- 320: {region: 0x6a, script: 0x57, flags: 0x0},
- 321: {region: 0x165, script: 0x57, flags: 0x0},
- 322: {region: 0x9e, script: 0x43, flags: 0x0},
- 323: {region: 0x165, script: 0x57, flags: 0x0},
- 324: {region: 0x165, script: 0x57, flags: 0x0},
- 325: {region: 0x6e, script: 0x57, flags: 0x0},
- 326: {region: 0x52, script: 0x57, flags: 0x0},
- 327: {region: 0x6e, script: 0x57, flags: 0x0},
+ 314: {region: 0x165, script: 0x5a, flags: 0x0},
+ 315: {region: 0x165, script: 0x5a, flags: 0x0},
+ 316: {region: 0x1, script: 0x5a, flags: 0x0},
+ 317: {region: 0x165, script: 0x5a, flags: 0x0},
+ 318: {region: 0x6e, script: 0x5a, flags: 0x0},
+ 319: {region: 0x135, script: 0x5a, flags: 0x0},
+ 320: {region: 0x6a, script: 0x5a, flags: 0x0},
+ 321: {region: 0x165, script: 0x5a, flags: 0x0},
+ 322: {region: 0x9e, script: 0x46, flags: 0x0},
+ 323: {region: 0x165, script: 0x5a, flags: 0x0},
+ 324: {region: 0x165, script: 0x5a, flags: 0x0},
+ 325: {region: 0x6e, script: 0x5a, flags: 0x0},
+ 326: {region: 0x52, script: 0x5a, flags: 0x0},
+ 327: {region: 0x6e, script: 0x5a, flags: 0x0},
328: {region: 0x9c, script: 0x5, flags: 0x0},
- 329: {region: 0x165, script: 0x57, flags: 0x0},
- 330: {region: 0x165, script: 0x57, flags: 0x0},
- 331: {region: 0x165, script: 0x57, flags: 0x0},
- 332: {region: 0x165, script: 0x57, flags: 0x0},
- 333: {region: 0x86, script: 0x57, flags: 0x0},
+ 329: {region: 0x165, script: 0x5a, flags: 0x0},
+ 330: {region: 0x165, script: 0x5a, flags: 0x0},
+ 331: {region: 0x165, script: 0x5a, flags: 0x0},
+ 332: {region: 0x165, script: 0x5a, flags: 0x0},
+ 333: {region: 0x86, script: 0x5a, flags: 0x0},
334: {region: 0xc, script: 0x2, flags: 0x1},
- 335: {region: 0x165, script: 0x57, flags: 0x0},
- 336: {region: 0xc3, script: 0x57, flags: 0x0},
- 337: {region: 0x72, script: 0x57, flags: 0x0},
+ 335: {region: 0x165, script: 0x5a, flags: 0x0},
+ 336: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 337: {region: 0x72, script: 0x5a, flags: 0x0},
338: {region: 0x10b, script: 0x5, flags: 0x0},
- 339: {region: 0xe7, script: 0x57, flags: 0x0},
- 340: {region: 0x10c, script: 0x57, flags: 0x0},
- 341: {region: 0x73, script: 0x57, flags: 0x0},
- 342: {region: 0x165, script: 0x57, flags: 0x0},
- 343: {region: 0x165, script: 0x57, flags: 0x0},
- 344: {region: 0x76, script: 0x57, flags: 0x0},
- 345: {region: 0x165, script: 0x57, flags: 0x0},
- 346: {region: 0x3b, script: 0x57, flags: 0x0},
- 347: {region: 0x165, script: 0x57, flags: 0x0},
- 348: {region: 0x165, script: 0x57, flags: 0x0},
- 349: {region: 0x165, script: 0x57, flags: 0x0},
- 350: {region: 0x78, script: 0x57, flags: 0x0},
- 351: {region: 0x135, script: 0x57, flags: 0x0},
- 352: {region: 0x78, script: 0x57, flags: 0x0},
- 353: {region: 0x60, script: 0x57, flags: 0x0},
- 354: {region: 0x60, script: 0x57, flags: 0x0},
+ 339: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 340: {region: 0x10c, script: 0x5a, flags: 0x0},
+ 341: {region: 0x73, script: 0x5a, flags: 0x0},
+ 342: {region: 0x165, script: 0x5a, flags: 0x0},
+ 343: {region: 0x165, script: 0x5a, flags: 0x0},
+ 344: {region: 0x76, script: 0x5a, flags: 0x0},
+ 345: {region: 0x165, script: 0x5a, flags: 0x0},
+ 346: {region: 0x3b, script: 0x5a, flags: 0x0},
+ 347: {region: 0x165, script: 0x5a, flags: 0x0},
+ 348: {region: 0x165, script: 0x5a, flags: 0x0},
+ 349: {region: 0x165, script: 0x5a, flags: 0x0},
+ 350: {region: 0x78, script: 0x5a, flags: 0x0},
+ 351: {region: 0x135, script: 0x5a, flags: 0x0},
+ 352: {region: 0x78, script: 0x5a, flags: 0x0},
+ 353: {region: 0x60, script: 0x5a, flags: 0x0},
+ 354: {region: 0x60, script: 0x5a, flags: 0x0},
355: {region: 0x52, script: 0x5, flags: 0x0},
- 356: {region: 0x140, script: 0x57, flags: 0x0},
- 357: {region: 0x165, script: 0x57, flags: 0x0},
- 358: {region: 0x84, script: 0x57, flags: 0x0},
- 359: {region: 0x165, script: 0x57, flags: 0x0},
- 360: {region: 0xd4, script: 0x57, flags: 0x0},
- 361: {region: 0x9e, script: 0x57, flags: 0x0},
- 362: {region: 0xd6, script: 0x57, flags: 0x0},
- 363: {region: 0x165, script: 0x57, flags: 0x0},
- 364: {region: 0x10b, script: 0x57, flags: 0x0},
- 365: {region: 0xd9, script: 0x57, flags: 0x0},
- 366: {region: 0x96, script: 0x57, flags: 0x0},
- 367: {region: 0x80, script: 0x57, flags: 0x0},
- 368: {region: 0x165, script: 0x57, flags: 0x0},
- 369: {region: 0xbc, script: 0x57, flags: 0x0},
- 370: {region: 0x165, script: 0x57, flags: 0x0},
- 371: {region: 0x165, script: 0x57, flags: 0x0},
- 372: {region: 0x165, script: 0x57, flags: 0x0},
- 373: {region: 0x53, script: 0x38, flags: 0x0},
- 374: {region: 0x165, script: 0x57, flags: 0x0},
- 375: {region: 0x95, script: 0x57, flags: 0x0},
- 376: {region: 0x165, script: 0x57, flags: 0x0},
- 377: {region: 0x165, script: 0x57, flags: 0x0},
- 378: {region: 0x99, script: 0x21, flags: 0x0},
- 379: {region: 0x165, script: 0x57, flags: 0x0},
+ 356: {region: 0x140, script: 0x5a, flags: 0x0},
+ 357: {region: 0x165, script: 0x5a, flags: 0x0},
+ 358: {region: 0x84, script: 0x5a, flags: 0x0},
+ 359: {region: 0x165, script: 0x5a, flags: 0x0},
+ 360: {region: 0xd4, script: 0x5a, flags: 0x0},
+ 361: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 362: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 363: {region: 0x165, script: 0x5a, flags: 0x0},
+ 364: {region: 0x10b, script: 0x5a, flags: 0x0},
+ 365: {region: 0xd9, script: 0x5a, flags: 0x0},
+ 366: {region: 0x96, script: 0x5a, flags: 0x0},
+ 367: {region: 0x80, script: 0x5a, flags: 0x0},
+ 368: {region: 0x165, script: 0x5a, flags: 0x0},
+ 369: {region: 0xbc, script: 0x5a, flags: 0x0},
+ 370: {region: 0x165, script: 0x5a, flags: 0x0},
+ 371: {region: 0x165, script: 0x5a, flags: 0x0},
+ 372: {region: 0x165, script: 0x5a, flags: 0x0},
+ 373: {region: 0x53, script: 0x3b, flags: 0x0},
+ 374: {region: 0x165, script: 0x5a, flags: 0x0},
+ 375: {region: 0x95, script: 0x5a, flags: 0x0},
+ 376: {region: 0x165, script: 0x5a, flags: 0x0},
+ 377: {region: 0x165, script: 0x5a, flags: 0x0},
+ 378: {region: 0x99, script: 0x22, flags: 0x0},
+ 379: {region: 0x165, script: 0x5a, flags: 0x0},
380: {region: 0x9c, script: 0x5, flags: 0x0},
- 381: {region: 0x7e, script: 0x57, flags: 0x0},
- 382: {region: 0x7b, script: 0x57, flags: 0x0},
- 383: {region: 0x165, script: 0x57, flags: 0x0},
- 384: {region: 0x165, script: 0x57, flags: 0x0},
- 385: {region: 0x165, script: 0x57, flags: 0x0},
- 386: {region: 0x165, script: 0x57, flags: 0x0},
- 387: {region: 0x165, script: 0x57, flags: 0x0},
- 388: {region: 0x165, script: 0x57, flags: 0x0},
- 389: {region: 0x6f, script: 0x29, flags: 0x0},
- 390: {region: 0x165, script: 0x57, flags: 0x0},
- 391: {region: 0xdb, script: 0x21, flags: 0x0},
- 392: {region: 0x165, script: 0x57, flags: 0x0},
- 393: {region: 0xa7, script: 0x57, flags: 0x0},
- 394: {region: 0x165, script: 0x57, flags: 0x0},
+ 381: {region: 0x7e, script: 0x5a, flags: 0x0},
+ 382: {region: 0x7b, script: 0x5a, flags: 0x0},
+ 383: {region: 0x165, script: 0x5a, flags: 0x0},
+ 384: {region: 0x165, script: 0x5a, flags: 0x0},
+ 385: {region: 0x165, script: 0x5a, flags: 0x0},
+ 386: {region: 0x165, script: 0x5a, flags: 0x0},
+ 387: {region: 0x165, script: 0x5a, flags: 0x0},
+ 388: {region: 0x165, script: 0x5a, flags: 0x0},
+ 389: {region: 0x6f, script: 0x2c, flags: 0x0},
+ 390: {region: 0x165, script: 0x5a, flags: 0x0},
+ 391: {region: 0xdb, script: 0x22, flags: 0x0},
+ 392: {region: 0x165, script: 0x5a, flags: 0x0},
+ 393: {region: 0xa7, script: 0x5a, flags: 0x0},
+ 394: {region: 0x165, script: 0x5a, flags: 0x0},
395: {region: 0xe8, script: 0x5, flags: 0x0},
- 396: {region: 0x165, script: 0x57, flags: 0x0},
+ 396: {region: 0x165, script: 0x5a, flags: 0x0},
397: {region: 0xe8, script: 0x5, flags: 0x0},
- 398: {region: 0x165, script: 0x57, flags: 0x0},
- 399: {region: 0x165, script: 0x57, flags: 0x0},
- 400: {region: 0x6e, script: 0x57, flags: 0x0},
+ 398: {region: 0x165, script: 0x5a, flags: 0x0},
+ 399: {region: 0x165, script: 0x5a, flags: 0x0},
+ 400: {region: 0x6e, script: 0x5a, flags: 0x0},
401: {region: 0x9c, script: 0x5, flags: 0x0},
- 402: {region: 0x165, script: 0x57, flags: 0x0},
- 403: {region: 0x165, script: 0x29, flags: 0x0},
- 404: {region: 0xf1, script: 0x57, flags: 0x0},
- 405: {region: 0x165, script: 0x57, flags: 0x0},
- 406: {region: 0x165, script: 0x57, flags: 0x0},
- 407: {region: 0x165, script: 0x57, flags: 0x0},
- 408: {region: 0x165, script: 0x29, flags: 0x0},
- 409: {region: 0x165, script: 0x57, flags: 0x0},
- 410: {region: 0x99, script: 0x21, flags: 0x0},
- 411: {region: 0x99, script: 0xda, flags: 0x0},
- 412: {region: 0x95, script: 0x57, flags: 0x0},
- 413: {region: 0xd9, script: 0x57, flags: 0x0},
- 414: {region: 0x130, script: 0x2f, flags: 0x0},
- 415: {region: 0x165, script: 0x57, flags: 0x0},
+ 402: {region: 0x165, script: 0x5a, flags: 0x0},
+ 403: {region: 0x165, script: 0x2c, flags: 0x0},
+ 404: {region: 0xf1, script: 0x5a, flags: 0x0},
+ 405: {region: 0x165, script: 0x5a, flags: 0x0},
+ 406: {region: 0x165, script: 0x5a, flags: 0x0},
+ 407: {region: 0x165, script: 0x5a, flags: 0x0},
+ 408: {region: 0x165, script: 0x2c, flags: 0x0},
+ 409: {region: 0x165, script: 0x5a, flags: 0x0},
+ 410: {region: 0x99, script: 0x22, flags: 0x0},
+ 411: {region: 0x99, script: 0xe1, flags: 0x0},
+ 412: {region: 0x95, script: 0x5a, flags: 0x0},
+ 413: {region: 0xd9, script: 0x5a, flags: 0x0},
+ 414: {region: 0x130, script: 0x32, flags: 0x0},
+ 415: {region: 0x165, script: 0x5a, flags: 0x0},
416: {region: 0xe, script: 0x2, flags: 0x1},
417: {region: 0x99, script: 0xe, flags: 0x0},
- 418: {region: 0x165, script: 0x57, flags: 0x0},
- 419: {region: 0x4e, script: 0x57, flags: 0x0},
- 420: {region: 0x99, script: 0x32, flags: 0x0},
- 421: {region: 0x41, script: 0x57, flags: 0x0},
- 422: {region: 0x54, script: 0x57, flags: 0x0},
- 423: {region: 0x165, script: 0x57, flags: 0x0},
- 424: {region: 0x80, script: 0x57, flags: 0x0},
- 425: {region: 0x165, script: 0x57, flags: 0x0},
- 426: {region: 0x165, script: 0x57, flags: 0x0},
- 427: {region: 0xa4, script: 0x57, flags: 0x0},
- 428: {region: 0x98, script: 0x57, flags: 0x0},
- 429: {region: 0x165, script: 0x57, flags: 0x0},
- 430: {region: 0xdb, script: 0x21, flags: 0x0},
- 431: {region: 0x165, script: 0x57, flags: 0x0},
+ 418: {region: 0x165, script: 0x5a, flags: 0x0},
+ 419: {region: 0x4e, script: 0x5a, flags: 0x0},
+ 420: {region: 0x99, script: 0x35, flags: 0x0},
+ 421: {region: 0x41, script: 0x5a, flags: 0x0},
+ 422: {region: 0x54, script: 0x5a, flags: 0x0},
+ 423: {region: 0x165, script: 0x5a, flags: 0x0},
+ 424: {region: 0x80, script: 0x5a, flags: 0x0},
+ 425: {region: 0x165, script: 0x5a, flags: 0x0},
+ 426: {region: 0x165, script: 0x5a, flags: 0x0},
+ 427: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 428: {region: 0x98, script: 0x5a, flags: 0x0},
+ 429: {region: 0x165, script: 0x5a, flags: 0x0},
+ 430: {region: 0xdb, script: 0x22, flags: 0x0},
+ 431: {region: 0x165, script: 0x5a, flags: 0x0},
432: {region: 0x165, script: 0x5, flags: 0x0},
- 433: {region: 0x49, script: 0x57, flags: 0x0},
+ 433: {region: 0x49, script: 0x5a, flags: 0x0},
434: {region: 0x165, script: 0x5, flags: 0x0},
- 435: {region: 0x165, script: 0x57, flags: 0x0},
+ 435: {region: 0x165, script: 0x5a, flags: 0x0},
436: {region: 0x10, script: 0x3, flags: 0x1},
- 437: {region: 0x165, script: 0x57, flags: 0x0},
- 438: {region: 0x53, script: 0x38, flags: 0x0},
- 439: {region: 0x165, script: 0x57, flags: 0x0},
- 440: {region: 0x135, script: 0x57, flags: 0x0},
+ 437: {region: 0x165, script: 0x5a, flags: 0x0},
+ 438: {region: 0x53, script: 0x3b, flags: 0x0},
+ 439: {region: 0x165, script: 0x5a, flags: 0x0},
+ 440: {region: 0x135, script: 0x5a, flags: 0x0},
441: {region: 0x24, script: 0x5, flags: 0x0},
- 442: {region: 0x165, script: 0x57, flags: 0x0},
- 443: {region: 0x165, script: 0x29, flags: 0x0},
- 444: {region: 0x97, script: 0x3b, flags: 0x0},
- 445: {region: 0x165, script: 0x57, flags: 0x0},
- 446: {region: 0x99, script: 0x21, flags: 0x0},
- 447: {region: 0x165, script: 0x57, flags: 0x0},
- 448: {region: 0x73, script: 0x57, flags: 0x0},
- 449: {region: 0x165, script: 0x57, flags: 0x0},
- 450: {region: 0x165, script: 0x57, flags: 0x0},
- 451: {region: 0xe7, script: 0x57, flags: 0x0},
- 452: {region: 0x165, script: 0x57, flags: 0x0},
- 453: {region: 0x12b, script: 0x3d, flags: 0x0},
- 454: {region: 0x53, script: 0x89, flags: 0x0},
- 455: {region: 0x165, script: 0x57, flags: 0x0},
+ 442: {region: 0x165, script: 0x5a, flags: 0x0},
+ 443: {region: 0x165, script: 0x2c, flags: 0x0},
+ 444: {region: 0x97, script: 0x3e, flags: 0x0},
+ 445: {region: 0x165, script: 0x5a, flags: 0x0},
+ 446: {region: 0x99, script: 0x22, flags: 0x0},
+ 447: {region: 0x165, script: 0x5a, flags: 0x0},
+ 448: {region: 0x73, script: 0x5a, flags: 0x0},
+ 449: {region: 0x165, script: 0x5a, flags: 0x0},
+ 450: {region: 0x165, script: 0x5a, flags: 0x0},
+ 451: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 452: {region: 0x165, script: 0x5a, flags: 0x0},
+ 453: {region: 0x12b, script: 0x40, flags: 0x0},
+ 454: {region: 0x53, script: 0x8d, flags: 0x0},
+ 455: {region: 0x165, script: 0x5a, flags: 0x0},
456: {region: 0xe8, script: 0x5, flags: 0x0},
- 457: {region: 0x99, script: 0x21, flags: 0x0},
- 458: {region: 0xaf, script: 0x3e, flags: 0x0},
- 459: {region: 0xe7, script: 0x57, flags: 0x0},
+ 457: {region: 0x99, script: 0x22, flags: 0x0},
+ 458: {region: 0xaf, script: 0x41, flags: 0x0},
+ 459: {region: 0xe7, script: 0x5a, flags: 0x0},
460: {region: 0xe8, script: 0x5, flags: 0x0},
- 461: {region: 0xe6, script: 0x57, flags: 0x0},
- 462: {region: 0x99, script: 0x21, flags: 0x0},
- 463: {region: 0x99, script: 0x21, flags: 0x0},
- 464: {region: 0x165, script: 0x57, flags: 0x0},
- 465: {region: 0x90, script: 0x57, flags: 0x0},
- 466: {region: 0x60, script: 0x57, flags: 0x0},
- 467: {region: 0x53, script: 0x38, flags: 0x0},
- 468: {region: 0x91, script: 0x57, flags: 0x0},
- 469: {region: 0x92, script: 0x57, flags: 0x0},
- 470: {region: 0x165, script: 0x57, flags: 0x0},
+ 461: {region: 0xe6, script: 0x5a, flags: 0x0},
+ 462: {region: 0x99, script: 0x22, flags: 0x0},
+ 463: {region: 0x99, script: 0x22, flags: 0x0},
+ 464: {region: 0x165, script: 0x5a, flags: 0x0},
+ 465: {region: 0x90, script: 0x5a, flags: 0x0},
+ 466: {region: 0x60, script: 0x5a, flags: 0x0},
+ 467: {region: 0x53, script: 0x3b, flags: 0x0},
+ 468: {region: 0x91, script: 0x5a, flags: 0x0},
+ 469: {region: 0x92, script: 0x5a, flags: 0x0},
+ 470: {region: 0x165, script: 0x5a, flags: 0x0},
471: {region: 0x28, script: 0x8, flags: 0x0},
- 472: {region: 0xd2, script: 0x57, flags: 0x0},
- 473: {region: 0x78, script: 0x57, flags: 0x0},
- 474: {region: 0x165, script: 0x57, flags: 0x0},
- 475: {region: 0x165, script: 0x57, flags: 0x0},
- 476: {region: 0xd0, script: 0x57, flags: 0x0},
- 477: {region: 0xd6, script: 0x57, flags: 0x0},
- 478: {region: 0x165, script: 0x57, flags: 0x0},
- 479: {region: 0x165, script: 0x57, flags: 0x0},
- 480: {region: 0x165, script: 0x57, flags: 0x0},
- 481: {region: 0x95, script: 0x57, flags: 0x0},
- 482: {region: 0x165, script: 0x57, flags: 0x0},
- 483: {region: 0x165, script: 0x57, flags: 0x0},
- 484: {region: 0x165, script: 0x57, flags: 0x0},
- 486: {region: 0x122, script: 0x57, flags: 0x0},
- 487: {region: 0xd6, script: 0x57, flags: 0x0},
- 488: {region: 0x165, script: 0x57, flags: 0x0},
- 489: {region: 0x165, script: 0x57, flags: 0x0},
- 490: {region: 0x53, script: 0xea, flags: 0x0},
- 491: {region: 0x165, script: 0x57, flags: 0x0},
- 492: {region: 0x135, script: 0x57, flags: 0x0},
- 493: {region: 0x165, script: 0x57, flags: 0x0},
- 494: {region: 0x49, script: 0x57, flags: 0x0},
- 495: {region: 0x165, script: 0x57, flags: 0x0},
- 496: {region: 0x165, script: 0x57, flags: 0x0},
- 497: {region: 0xe7, script: 0x57, flags: 0x0},
- 498: {region: 0x165, script: 0x57, flags: 0x0},
- 499: {region: 0x95, script: 0x57, flags: 0x0},
- 500: {region: 0x106, script: 0x1f, flags: 0x0},
- 501: {region: 0x1, script: 0x57, flags: 0x0},
- 502: {region: 0x165, script: 0x57, flags: 0x0},
- 503: {region: 0x165, script: 0x57, flags: 0x0},
- 504: {region: 0x9d, script: 0x57, flags: 0x0},
- 505: {region: 0x9e, script: 0x57, flags: 0x0},
+ 472: {region: 0xd2, script: 0x5a, flags: 0x0},
+ 473: {region: 0x78, script: 0x5a, flags: 0x0},
+ 474: {region: 0x165, script: 0x5a, flags: 0x0},
+ 475: {region: 0x165, script: 0x5a, flags: 0x0},
+ 476: {region: 0xd0, script: 0x5a, flags: 0x0},
+ 477: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 478: {region: 0x165, script: 0x5a, flags: 0x0},
+ 479: {region: 0x165, script: 0x5a, flags: 0x0},
+ 480: {region: 0x165, script: 0x5a, flags: 0x0},
+ 481: {region: 0x95, script: 0x5a, flags: 0x0},
+ 482: {region: 0x165, script: 0x5a, flags: 0x0},
+ 483: {region: 0x165, script: 0x5a, flags: 0x0},
+ 484: {region: 0x165, script: 0x5a, flags: 0x0},
+ 486: {region: 0x122, script: 0x5a, flags: 0x0},
+ 487: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 488: {region: 0x165, script: 0x5a, flags: 0x0},
+ 489: {region: 0x165, script: 0x5a, flags: 0x0},
+ 490: {region: 0x53, script: 0xf3, flags: 0x0},
+ 491: {region: 0x165, script: 0x5a, flags: 0x0},
+ 492: {region: 0x135, script: 0x5a, flags: 0x0},
+ 493: {region: 0x165, script: 0x5a, flags: 0x0},
+ 494: {region: 0x49, script: 0x5a, flags: 0x0},
+ 495: {region: 0x165, script: 0x5a, flags: 0x0},
+ 496: {region: 0x165, script: 0x5a, flags: 0x0},
+ 497: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 498: {region: 0x165, script: 0x5a, flags: 0x0},
+ 499: {region: 0x95, script: 0x5a, flags: 0x0},
+ 500: {region: 0x106, script: 0x20, flags: 0x0},
+ 501: {region: 0x1, script: 0x5a, flags: 0x0},
+ 502: {region: 0x165, script: 0x5a, flags: 0x0},
+ 503: {region: 0x165, script: 0x5a, flags: 0x0},
+ 504: {region: 0x9d, script: 0x5a, flags: 0x0},
+ 505: {region: 0x9e, script: 0x5a, flags: 0x0},
506: {region: 0x49, script: 0x17, flags: 0x0},
- 507: {region: 0x97, script: 0x3b, flags: 0x0},
- 508: {region: 0x165, script: 0x57, flags: 0x0},
- 509: {region: 0x165, script: 0x57, flags: 0x0},
- 510: {region: 0x106, script: 0x57, flags: 0x0},
- 511: {region: 0x165, script: 0x57, flags: 0x0},
- 512: {region: 0xa2, script: 0x46, flags: 0x0},
- 513: {region: 0x165, script: 0x57, flags: 0x0},
- 514: {region: 0xa0, script: 0x57, flags: 0x0},
- 515: {region: 0x1, script: 0x57, flags: 0x0},
- 516: {region: 0x165, script: 0x57, flags: 0x0},
- 517: {region: 0x165, script: 0x57, flags: 0x0},
- 518: {region: 0x165, script: 0x57, flags: 0x0},
- 519: {region: 0x52, script: 0x57, flags: 0x0},
- 520: {region: 0x130, script: 0x3b, flags: 0x0},
- 521: {region: 0x165, script: 0x57, flags: 0x0},
- 522: {region: 0x12f, script: 0x57, flags: 0x0},
- 523: {region: 0xdb, script: 0x21, flags: 0x0},
- 524: {region: 0x165, script: 0x57, flags: 0x0},
- 525: {region: 0x63, script: 0x57, flags: 0x0},
- 526: {region: 0x95, script: 0x57, flags: 0x0},
- 527: {region: 0x95, script: 0x57, flags: 0x0},
- 528: {region: 0x7d, script: 0x2b, flags: 0x0},
- 529: {region: 0x137, script: 0x1f, flags: 0x0},
- 530: {region: 0x67, script: 0x57, flags: 0x0},
- 531: {region: 0xc4, script: 0x57, flags: 0x0},
- 532: {region: 0x165, script: 0x57, flags: 0x0},
- 533: {region: 0x165, script: 0x57, flags: 0x0},
- 534: {region: 0xd6, script: 0x57, flags: 0x0},
- 535: {region: 0xa4, script: 0x57, flags: 0x0},
- 536: {region: 0xc3, script: 0x57, flags: 0x0},
- 537: {region: 0x106, script: 0x1f, flags: 0x0},
- 538: {region: 0x165, script: 0x57, flags: 0x0},
- 539: {region: 0x165, script: 0x57, flags: 0x0},
- 540: {region: 0x165, script: 0x57, flags: 0x0},
- 541: {region: 0x165, script: 0x57, flags: 0x0},
+ 507: {region: 0x97, script: 0x3e, flags: 0x0},
+ 508: {region: 0x165, script: 0x5a, flags: 0x0},
+ 509: {region: 0x165, script: 0x5a, flags: 0x0},
+ 510: {region: 0x106, script: 0x5a, flags: 0x0},
+ 511: {region: 0x165, script: 0x5a, flags: 0x0},
+ 512: {region: 0xa2, script: 0x49, flags: 0x0},
+ 513: {region: 0x165, script: 0x5a, flags: 0x0},
+ 514: {region: 0xa0, script: 0x5a, flags: 0x0},
+ 515: {region: 0x1, script: 0x5a, flags: 0x0},
+ 516: {region: 0x165, script: 0x5a, flags: 0x0},
+ 517: {region: 0x165, script: 0x5a, flags: 0x0},
+ 518: {region: 0x165, script: 0x5a, flags: 0x0},
+ 519: {region: 0x52, script: 0x5a, flags: 0x0},
+ 520: {region: 0x130, script: 0x3e, flags: 0x0},
+ 521: {region: 0x165, script: 0x5a, flags: 0x0},
+ 522: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 523: {region: 0xdb, script: 0x22, flags: 0x0},
+ 524: {region: 0x165, script: 0x5a, flags: 0x0},
+ 525: {region: 0x63, script: 0x5a, flags: 0x0},
+ 526: {region: 0x95, script: 0x5a, flags: 0x0},
+ 527: {region: 0x95, script: 0x5a, flags: 0x0},
+ 528: {region: 0x7d, script: 0x2e, flags: 0x0},
+ 529: {region: 0x137, script: 0x20, flags: 0x0},
+ 530: {region: 0x67, script: 0x5a, flags: 0x0},
+ 531: {region: 0xc4, script: 0x5a, flags: 0x0},
+ 532: {region: 0x165, script: 0x5a, flags: 0x0},
+ 533: {region: 0x165, script: 0x5a, flags: 0x0},
+ 534: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 535: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 536: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 537: {region: 0x106, script: 0x20, flags: 0x0},
+ 538: {region: 0x165, script: 0x5a, flags: 0x0},
+ 539: {region: 0x165, script: 0x5a, flags: 0x0},
+ 540: {region: 0x165, script: 0x5a, flags: 0x0},
+ 541: {region: 0x165, script: 0x5a, flags: 0x0},
542: {region: 0xd4, script: 0x5, flags: 0x0},
- 543: {region: 0xd6, script: 0x57, flags: 0x0},
- 544: {region: 0x164, script: 0x57, flags: 0x0},
- 545: {region: 0x165, script: 0x57, flags: 0x0},
- 546: {region: 0x165, script: 0x57, flags: 0x0},
- 547: {region: 0x12f, script: 0x57, flags: 0x0},
+ 543: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 544: {region: 0x164, script: 0x5a, flags: 0x0},
+ 545: {region: 0x165, script: 0x5a, flags: 0x0},
+ 546: {region: 0x165, script: 0x5a, flags: 0x0},
+ 547: {region: 0x12f, script: 0x5a, flags: 0x0},
548: {region: 0x122, script: 0x5, flags: 0x0},
- 549: {region: 0x165, script: 0x57, flags: 0x0},
- 550: {region: 0x123, script: 0xdf, flags: 0x0},
- 551: {region: 0x5a, script: 0x57, flags: 0x0},
- 552: {region: 0x52, script: 0x57, flags: 0x0},
- 553: {region: 0x165, script: 0x57, flags: 0x0},
- 554: {region: 0x4f, script: 0x57, flags: 0x0},
- 555: {region: 0x99, script: 0x21, flags: 0x0},
- 556: {region: 0x99, script: 0x21, flags: 0x0},
- 557: {region: 0x4b, script: 0x57, flags: 0x0},
- 558: {region: 0x95, script: 0x57, flags: 0x0},
- 559: {region: 0x165, script: 0x57, flags: 0x0},
- 560: {region: 0x41, script: 0x57, flags: 0x0},
- 561: {region: 0x99, script: 0x57, flags: 0x0},
- 562: {region: 0x53, script: 0xd6, flags: 0x0},
- 563: {region: 0x99, script: 0x21, flags: 0x0},
- 564: {region: 0xc3, script: 0x57, flags: 0x0},
- 565: {region: 0x165, script: 0x57, flags: 0x0},
- 566: {region: 0x99, script: 0x72, flags: 0x0},
+ 549: {region: 0x165, script: 0x5a, flags: 0x0},
+ 550: {region: 0x123, script: 0xe6, flags: 0x0},
+ 551: {region: 0x5a, script: 0x5a, flags: 0x0},
+ 552: {region: 0x52, script: 0x5a, flags: 0x0},
+ 553: {region: 0x165, script: 0x5a, flags: 0x0},
+ 554: {region: 0x4f, script: 0x5a, flags: 0x0},
+ 555: {region: 0x99, script: 0x22, flags: 0x0},
+ 556: {region: 0x99, script: 0x22, flags: 0x0},
+ 557: {region: 0x4b, script: 0x5a, flags: 0x0},
+ 558: {region: 0x95, script: 0x5a, flags: 0x0},
+ 559: {region: 0x165, script: 0x5a, flags: 0x0},
+ 560: {region: 0x41, script: 0x5a, flags: 0x0},
+ 561: {region: 0x99, script: 0x5a, flags: 0x0},
+ 562: {region: 0x53, script: 0xdd, flags: 0x0},
+ 563: {region: 0x99, script: 0x22, flags: 0x0},
+ 564: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 565: {region: 0x165, script: 0x5a, flags: 0x0},
+ 566: {region: 0x99, script: 0x75, flags: 0x0},
567: {region: 0xe8, script: 0x5, flags: 0x0},
- 568: {region: 0x165, script: 0x57, flags: 0x0},
- 569: {region: 0xa4, script: 0x57, flags: 0x0},
- 570: {region: 0x165, script: 0x57, flags: 0x0},
- 571: {region: 0x12b, script: 0x57, flags: 0x0},
- 572: {region: 0x165, script: 0x57, flags: 0x0},
- 573: {region: 0xd2, script: 0x57, flags: 0x0},
- 574: {region: 0x165, script: 0x57, flags: 0x0},
- 575: {region: 0xaf, script: 0x54, flags: 0x0},
- 576: {region: 0x165, script: 0x57, flags: 0x0},
- 577: {region: 0x165, script: 0x57, flags: 0x0},
+ 568: {region: 0x165, script: 0x5a, flags: 0x0},
+ 569: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 570: {region: 0x165, script: 0x5a, flags: 0x0},
+ 571: {region: 0x12b, script: 0x5a, flags: 0x0},
+ 572: {region: 0x165, script: 0x5a, flags: 0x0},
+ 573: {region: 0xd2, script: 0x5a, flags: 0x0},
+ 574: {region: 0x165, script: 0x5a, flags: 0x0},
+ 575: {region: 0xaf, script: 0x57, flags: 0x0},
+ 576: {region: 0x165, script: 0x5a, flags: 0x0},
+ 577: {region: 0x165, script: 0x5a, flags: 0x0},
578: {region: 0x13, script: 0x6, flags: 0x1},
- 579: {region: 0x165, script: 0x57, flags: 0x0},
- 580: {region: 0x52, script: 0x57, flags: 0x0},
- 581: {region: 0x82, script: 0x57, flags: 0x0},
- 582: {region: 0xa4, script: 0x57, flags: 0x0},
- 583: {region: 0x165, script: 0x57, flags: 0x0},
- 584: {region: 0x165, script: 0x57, flags: 0x0},
- 585: {region: 0x165, script: 0x57, flags: 0x0},
- 586: {region: 0xa6, script: 0x4b, flags: 0x0},
- 587: {region: 0x2a, script: 0x57, flags: 0x0},
- 588: {region: 0x165, script: 0x57, flags: 0x0},
- 589: {region: 0x165, script: 0x57, flags: 0x0},
- 590: {region: 0x165, script: 0x57, flags: 0x0},
- 591: {region: 0x165, script: 0x57, flags: 0x0},
- 592: {region: 0x165, script: 0x57, flags: 0x0},
- 593: {region: 0x99, script: 0x4f, flags: 0x0},
- 594: {region: 0x8b, script: 0x57, flags: 0x0},
- 595: {region: 0x165, script: 0x57, flags: 0x0},
- 596: {region: 0xab, script: 0x50, flags: 0x0},
- 597: {region: 0x106, script: 0x1f, flags: 0x0},
- 598: {region: 0x99, script: 0x21, flags: 0x0},
- 599: {region: 0x165, script: 0x57, flags: 0x0},
- 600: {region: 0x75, script: 0x57, flags: 0x0},
- 601: {region: 0x165, script: 0x57, flags: 0x0},
- 602: {region: 0xb4, script: 0x57, flags: 0x0},
- 603: {region: 0x165, script: 0x57, flags: 0x0},
- 604: {region: 0x165, script: 0x57, flags: 0x0},
- 605: {region: 0x165, script: 0x57, flags: 0x0},
- 606: {region: 0x165, script: 0x57, flags: 0x0},
- 607: {region: 0x165, script: 0x57, flags: 0x0},
- 608: {region: 0x165, script: 0x57, flags: 0x0},
- 609: {region: 0x165, script: 0x57, flags: 0x0},
- 610: {region: 0x165, script: 0x29, flags: 0x0},
- 611: {region: 0x165, script: 0x57, flags: 0x0},
- 612: {region: 0x106, script: 0x1f, flags: 0x0},
- 613: {region: 0x112, script: 0x57, flags: 0x0},
- 614: {region: 0xe7, script: 0x57, flags: 0x0},
- 615: {region: 0x106, script: 0x57, flags: 0x0},
- 616: {region: 0x165, script: 0x57, flags: 0x0},
- 617: {region: 0x99, script: 0x21, flags: 0x0},
+ 579: {region: 0x165, script: 0x5a, flags: 0x0},
+ 580: {region: 0x52, script: 0x5a, flags: 0x0},
+ 581: {region: 0x82, script: 0x5a, flags: 0x0},
+ 582: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 583: {region: 0x165, script: 0x5a, flags: 0x0},
+ 584: {region: 0x165, script: 0x5a, flags: 0x0},
+ 585: {region: 0x165, script: 0x5a, flags: 0x0},
+ 586: {region: 0xa6, script: 0x4e, flags: 0x0},
+ 587: {region: 0x2a, script: 0x5a, flags: 0x0},
+ 588: {region: 0x165, script: 0x5a, flags: 0x0},
+ 589: {region: 0x165, script: 0x5a, flags: 0x0},
+ 590: {region: 0x165, script: 0x5a, flags: 0x0},
+ 591: {region: 0x165, script: 0x5a, flags: 0x0},
+ 592: {region: 0x165, script: 0x5a, flags: 0x0},
+ 593: {region: 0x99, script: 0x52, flags: 0x0},
+ 594: {region: 0x8b, script: 0x5a, flags: 0x0},
+ 595: {region: 0x165, script: 0x5a, flags: 0x0},
+ 596: {region: 0xab, script: 0x53, flags: 0x0},
+ 597: {region: 0x106, script: 0x20, flags: 0x0},
+ 598: {region: 0x99, script: 0x22, flags: 0x0},
+ 599: {region: 0x165, script: 0x5a, flags: 0x0},
+ 600: {region: 0x75, script: 0x5a, flags: 0x0},
+ 601: {region: 0x165, script: 0x5a, flags: 0x0},
+ 602: {region: 0xb4, script: 0x5a, flags: 0x0},
+ 603: {region: 0x165, script: 0x5a, flags: 0x0},
+ 604: {region: 0x165, script: 0x5a, flags: 0x0},
+ 605: {region: 0x165, script: 0x5a, flags: 0x0},
+ 606: {region: 0x165, script: 0x5a, flags: 0x0},
+ 607: {region: 0x165, script: 0x5a, flags: 0x0},
+ 608: {region: 0x165, script: 0x5a, flags: 0x0},
+ 609: {region: 0x165, script: 0x5a, flags: 0x0},
+ 610: {region: 0x165, script: 0x2c, flags: 0x0},
+ 611: {region: 0x165, script: 0x5a, flags: 0x0},
+ 612: {region: 0x106, script: 0x20, flags: 0x0},
+ 613: {region: 0x112, script: 0x5a, flags: 0x0},
+ 614: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 615: {region: 0x106, script: 0x5a, flags: 0x0},
+ 616: {region: 0x165, script: 0x5a, flags: 0x0},
+ 617: {region: 0x99, script: 0x22, flags: 0x0},
618: {region: 0x99, script: 0x5, flags: 0x0},
- 619: {region: 0x12f, script: 0x57, flags: 0x0},
- 620: {region: 0x165, script: 0x57, flags: 0x0},
- 621: {region: 0x52, script: 0x57, flags: 0x0},
- 622: {region: 0x60, script: 0x57, flags: 0x0},
- 623: {region: 0x165, script: 0x57, flags: 0x0},
- 624: {region: 0x165, script: 0x57, flags: 0x0},
- 625: {region: 0x165, script: 0x29, flags: 0x0},
- 626: {region: 0x165, script: 0x57, flags: 0x0},
- 627: {region: 0x165, script: 0x57, flags: 0x0},
+ 619: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 620: {region: 0x165, script: 0x5a, flags: 0x0},
+ 621: {region: 0x52, script: 0x5a, flags: 0x0},
+ 622: {region: 0x60, script: 0x5a, flags: 0x0},
+ 623: {region: 0x165, script: 0x5a, flags: 0x0},
+ 624: {region: 0x165, script: 0x5a, flags: 0x0},
+ 625: {region: 0x165, script: 0x2c, flags: 0x0},
+ 626: {region: 0x165, script: 0x5a, flags: 0x0},
+ 627: {region: 0x165, script: 0x5a, flags: 0x0},
628: {region: 0x19, script: 0x3, flags: 0x1},
- 629: {region: 0x165, script: 0x57, flags: 0x0},
- 630: {region: 0x165, script: 0x57, flags: 0x0},
- 631: {region: 0x165, script: 0x57, flags: 0x0},
- 632: {region: 0x165, script: 0x57, flags: 0x0},
- 633: {region: 0x106, script: 0x1f, flags: 0x0},
- 634: {region: 0x165, script: 0x57, flags: 0x0},
- 635: {region: 0x165, script: 0x57, flags: 0x0},
- 636: {region: 0x165, script: 0x57, flags: 0x0},
- 637: {region: 0x106, script: 0x1f, flags: 0x0},
- 638: {region: 0x165, script: 0x57, flags: 0x0},
- 639: {region: 0x95, script: 0x57, flags: 0x0},
+ 629: {region: 0x165, script: 0x5a, flags: 0x0},
+ 630: {region: 0x165, script: 0x5a, flags: 0x0},
+ 631: {region: 0x165, script: 0x5a, flags: 0x0},
+ 632: {region: 0x165, script: 0x5a, flags: 0x0},
+ 633: {region: 0x106, script: 0x20, flags: 0x0},
+ 634: {region: 0x165, script: 0x5a, flags: 0x0},
+ 635: {region: 0x165, script: 0x5a, flags: 0x0},
+ 636: {region: 0x165, script: 0x5a, flags: 0x0},
+ 637: {region: 0x106, script: 0x20, flags: 0x0},
+ 638: {region: 0x165, script: 0x5a, flags: 0x0},
+ 639: {region: 0x95, script: 0x5a, flags: 0x0},
640: {region: 0xe8, script: 0x5, flags: 0x0},
- 641: {region: 0x7b, script: 0x57, flags: 0x0},
- 642: {region: 0x165, script: 0x57, flags: 0x0},
- 643: {region: 0x165, script: 0x57, flags: 0x0},
- 644: {region: 0x165, script: 0x57, flags: 0x0},
- 645: {region: 0x165, script: 0x29, flags: 0x0},
- 646: {region: 0x123, script: 0xdf, flags: 0x0},
+ 641: {region: 0x7b, script: 0x5a, flags: 0x0},
+ 642: {region: 0x165, script: 0x5a, flags: 0x0},
+ 643: {region: 0x165, script: 0x5a, flags: 0x0},
+ 644: {region: 0x165, script: 0x5a, flags: 0x0},
+ 645: {region: 0x165, script: 0x2c, flags: 0x0},
+ 646: {region: 0x123, script: 0xe6, flags: 0x0},
647: {region: 0xe8, script: 0x5, flags: 0x0},
- 648: {region: 0x165, script: 0x57, flags: 0x0},
- 649: {region: 0x165, script: 0x57, flags: 0x0},
+ 648: {region: 0x165, script: 0x5a, flags: 0x0},
+ 649: {region: 0x165, script: 0x5a, flags: 0x0},
650: {region: 0x1c, script: 0x5, flags: 0x1},
- 651: {region: 0x165, script: 0x57, flags: 0x0},
- 652: {region: 0x165, script: 0x57, flags: 0x0},
- 653: {region: 0x165, script: 0x57, flags: 0x0},
- 654: {region: 0x138, script: 0x57, flags: 0x0},
- 655: {region: 0x87, script: 0x5b, flags: 0x0},
- 656: {region: 0x97, script: 0x3b, flags: 0x0},
- 657: {region: 0x12f, script: 0x57, flags: 0x0},
+ 651: {region: 0x165, script: 0x5a, flags: 0x0},
+ 652: {region: 0x165, script: 0x5a, flags: 0x0},
+ 653: {region: 0x165, script: 0x5a, flags: 0x0},
+ 654: {region: 0x138, script: 0x5a, flags: 0x0},
+ 655: {region: 0x87, script: 0x5e, flags: 0x0},
+ 656: {region: 0x97, script: 0x3e, flags: 0x0},
+ 657: {region: 0x12f, script: 0x5a, flags: 0x0},
658: {region: 0xe8, script: 0x5, flags: 0x0},
- 659: {region: 0x131, script: 0x57, flags: 0x0},
- 660: {region: 0x165, script: 0x57, flags: 0x0},
- 661: {region: 0xb7, script: 0x57, flags: 0x0},
- 662: {region: 0x106, script: 0x1f, flags: 0x0},
- 663: {region: 0x165, script: 0x57, flags: 0x0},
- 664: {region: 0x95, script: 0x57, flags: 0x0},
- 665: {region: 0x165, script: 0x57, flags: 0x0},
- 666: {region: 0x53, script: 0xdf, flags: 0x0},
- 667: {region: 0x165, script: 0x57, flags: 0x0},
- 668: {region: 0x165, script: 0x57, flags: 0x0},
- 669: {region: 0x165, script: 0x57, flags: 0x0},
- 670: {region: 0x165, script: 0x57, flags: 0x0},
- 671: {region: 0x99, script: 0x59, flags: 0x0},
- 672: {region: 0x165, script: 0x57, flags: 0x0},
- 673: {region: 0x165, script: 0x57, flags: 0x0},
- 674: {region: 0x106, script: 0x1f, flags: 0x0},
- 675: {region: 0x131, script: 0x57, flags: 0x0},
- 676: {region: 0x165, script: 0x57, flags: 0x0},
- 677: {region: 0xd9, script: 0x57, flags: 0x0},
- 678: {region: 0x165, script: 0x57, flags: 0x0},
- 679: {region: 0x165, script: 0x57, flags: 0x0},
+ 659: {region: 0x131, script: 0x5a, flags: 0x0},
+ 660: {region: 0x165, script: 0x5a, flags: 0x0},
+ 661: {region: 0xb7, script: 0x5a, flags: 0x0},
+ 662: {region: 0x106, script: 0x20, flags: 0x0},
+ 663: {region: 0x165, script: 0x5a, flags: 0x0},
+ 664: {region: 0x95, script: 0x5a, flags: 0x0},
+ 665: {region: 0x165, script: 0x5a, flags: 0x0},
+ 666: {region: 0x53, script: 0xe6, flags: 0x0},
+ 667: {region: 0x165, script: 0x5a, flags: 0x0},
+ 668: {region: 0x165, script: 0x5a, flags: 0x0},
+ 669: {region: 0x165, script: 0x5a, flags: 0x0},
+ 670: {region: 0x165, script: 0x5a, flags: 0x0},
+ 671: {region: 0x99, script: 0x5c, flags: 0x0},
+ 672: {region: 0x165, script: 0x5a, flags: 0x0},
+ 673: {region: 0x165, script: 0x5a, flags: 0x0},
+ 674: {region: 0x106, script: 0x20, flags: 0x0},
+ 675: {region: 0x131, script: 0x5a, flags: 0x0},
+ 676: {region: 0x165, script: 0x5a, flags: 0x0},
+ 677: {region: 0xd9, script: 0x5a, flags: 0x0},
+ 678: {region: 0x165, script: 0x5a, flags: 0x0},
+ 679: {region: 0x165, script: 0x5a, flags: 0x0},
680: {region: 0x21, script: 0x2, flags: 0x1},
- 681: {region: 0x165, script: 0x57, flags: 0x0},
- 682: {region: 0x165, script: 0x57, flags: 0x0},
- 683: {region: 0x9e, script: 0x57, flags: 0x0},
- 684: {region: 0x53, script: 0x5d, flags: 0x0},
- 685: {region: 0x95, script: 0x57, flags: 0x0},
+ 681: {region: 0x165, script: 0x5a, flags: 0x0},
+ 682: {region: 0x165, script: 0x5a, flags: 0x0},
+ 683: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 684: {region: 0x53, script: 0x60, flags: 0x0},
+ 685: {region: 0x95, script: 0x5a, flags: 0x0},
686: {region: 0x9c, script: 0x5, flags: 0x0},
- 687: {region: 0x135, script: 0x57, flags: 0x0},
- 688: {region: 0x165, script: 0x57, flags: 0x0},
- 689: {region: 0x165, script: 0x57, flags: 0x0},
- 690: {region: 0x99, script: 0xda, flags: 0x0},
- 691: {region: 0x9e, script: 0x57, flags: 0x0},
- 692: {region: 0x165, script: 0x57, flags: 0x0},
- 693: {region: 0x4b, script: 0x57, flags: 0x0},
- 694: {region: 0x165, script: 0x57, flags: 0x0},
- 695: {region: 0x165, script: 0x57, flags: 0x0},
- 696: {region: 0xaf, script: 0x54, flags: 0x0},
- 697: {region: 0x165, script: 0x57, flags: 0x0},
- 698: {region: 0x165, script: 0x57, flags: 0x0},
- 699: {region: 0x4b, script: 0x57, flags: 0x0},
- 700: {region: 0x165, script: 0x57, flags: 0x0},
- 701: {region: 0x165, script: 0x57, flags: 0x0},
- 702: {region: 0x162, script: 0x57, flags: 0x0},
+ 687: {region: 0x135, script: 0x5a, flags: 0x0},
+ 688: {region: 0x165, script: 0x5a, flags: 0x0},
+ 689: {region: 0x165, script: 0x5a, flags: 0x0},
+ 690: {region: 0x99, script: 0xe1, flags: 0x0},
+ 691: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 692: {region: 0x165, script: 0x5a, flags: 0x0},
+ 693: {region: 0x4b, script: 0x5a, flags: 0x0},
+ 694: {region: 0x165, script: 0x5a, flags: 0x0},
+ 695: {region: 0x165, script: 0x5a, flags: 0x0},
+ 696: {region: 0xaf, script: 0x57, flags: 0x0},
+ 697: {region: 0x165, script: 0x5a, flags: 0x0},
+ 698: {region: 0x165, script: 0x5a, flags: 0x0},
+ 699: {region: 0x4b, script: 0x5a, flags: 0x0},
+ 700: {region: 0x165, script: 0x5a, flags: 0x0},
+ 701: {region: 0x165, script: 0x5a, flags: 0x0},
+ 702: {region: 0x162, script: 0x5a, flags: 0x0},
703: {region: 0x9c, script: 0x5, flags: 0x0},
- 704: {region: 0xb6, script: 0x57, flags: 0x0},
- 705: {region: 0xb8, script: 0x57, flags: 0x0},
- 706: {region: 0x4b, script: 0x57, flags: 0x0},
- 707: {region: 0x4b, script: 0x57, flags: 0x0},
- 708: {region: 0xa4, script: 0x57, flags: 0x0},
- 709: {region: 0xa4, script: 0x57, flags: 0x0},
+ 704: {region: 0xb6, script: 0x5a, flags: 0x0},
+ 705: {region: 0xb8, script: 0x5a, flags: 0x0},
+ 706: {region: 0x4b, script: 0x5a, flags: 0x0},
+ 707: {region: 0x4b, script: 0x5a, flags: 0x0},
+ 708: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 709: {region: 0xa4, script: 0x5a, flags: 0x0},
710: {region: 0x9c, script: 0x5, flags: 0x0},
- 711: {region: 0xb8, script: 0x57, flags: 0x0},
- 712: {region: 0x123, script: 0xdf, flags: 0x0},
- 713: {region: 0x53, script: 0x38, flags: 0x0},
- 714: {region: 0x12b, script: 0x57, flags: 0x0},
- 715: {region: 0x95, script: 0x57, flags: 0x0},
- 716: {region: 0x52, script: 0x57, flags: 0x0},
- 717: {region: 0x99, script: 0x21, flags: 0x0},
- 718: {region: 0x99, script: 0x21, flags: 0x0},
- 719: {region: 0x95, script: 0x57, flags: 0x0},
+ 711: {region: 0xb8, script: 0x5a, flags: 0x0},
+ 712: {region: 0x123, script: 0xe6, flags: 0x0},
+ 713: {region: 0x53, script: 0x3b, flags: 0x0},
+ 714: {region: 0x12b, script: 0x5a, flags: 0x0},
+ 715: {region: 0x95, script: 0x5a, flags: 0x0},
+ 716: {region: 0x52, script: 0x5a, flags: 0x0},
+ 717: {region: 0x99, script: 0x22, flags: 0x0},
+ 718: {region: 0x99, script: 0x22, flags: 0x0},
+ 719: {region: 0x95, script: 0x5a, flags: 0x0},
720: {region: 0x23, script: 0x3, flags: 0x1},
- 721: {region: 0xa4, script: 0x57, flags: 0x0},
- 722: {region: 0x165, script: 0x57, flags: 0x0},
- 723: {region: 0xcf, script: 0x57, flags: 0x0},
- 724: {region: 0x165, script: 0x57, flags: 0x0},
- 725: {region: 0x165, script: 0x57, flags: 0x0},
- 726: {region: 0x165, script: 0x57, flags: 0x0},
- 727: {region: 0x165, script: 0x57, flags: 0x0},
- 728: {region: 0x165, script: 0x57, flags: 0x0},
- 729: {region: 0x165, script: 0x57, flags: 0x0},
- 730: {region: 0x165, script: 0x57, flags: 0x0},
- 731: {region: 0x165, script: 0x57, flags: 0x0},
- 732: {region: 0x165, script: 0x57, flags: 0x0},
- 733: {region: 0x165, script: 0x57, flags: 0x0},
- 734: {region: 0x165, script: 0x57, flags: 0x0},
+ 721: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 722: {region: 0x165, script: 0x5a, flags: 0x0},
+ 723: {region: 0xcf, script: 0x5a, flags: 0x0},
+ 724: {region: 0x165, script: 0x5a, flags: 0x0},
+ 725: {region: 0x165, script: 0x5a, flags: 0x0},
+ 726: {region: 0x165, script: 0x5a, flags: 0x0},
+ 727: {region: 0x165, script: 0x5a, flags: 0x0},
+ 728: {region: 0x165, script: 0x5a, flags: 0x0},
+ 729: {region: 0x165, script: 0x5a, flags: 0x0},
+ 730: {region: 0x165, script: 0x5a, flags: 0x0},
+ 731: {region: 0x165, script: 0x5a, flags: 0x0},
+ 732: {region: 0x165, script: 0x5a, flags: 0x0},
+ 733: {region: 0x165, script: 0x5a, flags: 0x0},
+ 734: {region: 0x165, script: 0x5a, flags: 0x0},
735: {region: 0x165, script: 0x5, flags: 0x0},
- 736: {region: 0x106, script: 0x1f, flags: 0x0},
- 737: {region: 0xe7, script: 0x57, flags: 0x0},
- 738: {region: 0x165, script: 0x57, flags: 0x0},
- 739: {region: 0x95, script: 0x57, flags: 0x0},
- 740: {region: 0x165, script: 0x29, flags: 0x0},
- 741: {region: 0x165, script: 0x57, flags: 0x0},
- 742: {region: 0x165, script: 0x57, flags: 0x0},
- 743: {region: 0x165, script: 0x57, flags: 0x0},
- 744: {region: 0x112, script: 0x57, flags: 0x0},
- 745: {region: 0xa4, script: 0x57, flags: 0x0},
- 746: {region: 0x165, script: 0x57, flags: 0x0},
- 747: {region: 0x165, script: 0x57, flags: 0x0},
+ 736: {region: 0x106, script: 0x20, flags: 0x0},
+ 737: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 738: {region: 0x165, script: 0x5a, flags: 0x0},
+ 739: {region: 0x95, script: 0x5a, flags: 0x0},
+ 740: {region: 0x165, script: 0x2c, flags: 0x0},
+ 741: {region: 0x165, script: 0x5a, flags: 0x0},
+ 742: {region: 0x165, script: 0x5a, flags: 0x0},
+ 743: {region: 0x165, script: 0x5a, flags: 0x0},
+ 744: {region: 0x112, script: 0x5a, flags: 0x0},
+ 745: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 746: {region: 0x165, script: 0x5a, flags: 0x0},
+ 747: {region: 0x165, script: 0x5a, flags: 0x0},
748: {region: 0x123, script: 0x5, flags: 0x0},
- 749: {region: 0xcc, script: 0x57, flags: 0x0},
- 750: {region: 0x165, script: 0x57, flags: 0x0},
- 751: {region: 0x165, script: 0x57, flags: 0x0},
- 752: {region: 0x165, script: 0x57, flags: 0x0},
- 753: {region: 0xbf, script: 0x57, flags: 0x0},
- 754: {region: 0xd1, script: 0x57, flags: 0x0},
- 755: {region: 0x165, script: 0x57, flags: 0x0},
- 756: {region: 0x52, script: 0x57, flags: 0x0},
- 757: {region: 0xdb, script: 0x21, flags: 0x0},
- 758: {region: 0x12f, script: 0x57, flags: 0x0},
- 759: {region: 0xc0, script: 0x57, flags: 0x0},
- 760: {region: 0x165, script: 0x57, flags: 0x0},
- 761: {region: 0x165, script: 0x57, flags: 0x0},
- 762: {region: 0xe0, script: 0x57, flags: 0x0},
- 763: {region: 0x165, script: 0x57, flags: 0x0},
- 764: {region: 0x95, script: 0x57, flags: 0x0},
- 765: {region: 0x9b, script: 0x3a, flags: 0x0},
- 766: {region: 0x165, script: 0x57, flags: 0x0},
- 767: {region: 0xc2, script: 0x1f, flags: 0x0},
+ 749: {region: 0xcc, script: 0x5a, flags: 0x0},
+ 750: {region: 0x165, script: 0x5a, flags: 0x0},
+ 751: {region: 0x165, script: 0x5a, flags: 0x0},
+ 752: {region: 0x165, script: 0x5a, flags: 0x0},
+ 753: {region: 0xbf, script: 0x5a, flags: 0x0},
+ 754: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 755: {region: 0x165, script: 0x5a, flags: 0x0},
+ 756: {region: 0x52, script: 0x5a, flags: 0x0},
+ 757: {region: 0xdb, script: 0x22, flags: 0x0},
+ 758: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 759: {region: 0xc0, script: 0x5a, flags: 0x0},
+ 760: {region: 0x165, script: 0x5a, flags: 0x0},
+ 761: {region: 0x165, script: 0x5a, flags: 0x0},
+ 762: {region: 0xe0, script: 0x5a, flags: 0x0},
+ 763: {region: 0x165, script: 0x5a, flags: 0x0},
+ 764: {region: 0x95, script: 0x5a, flags: 0x0},
+ 765: {region: 0x9b, script: 0x3d, flags: 0x0},
+ 766: {region: 0x165, script: 0x5a, flags: 0x0},
+ 767: {region: 0xc2, script: 0x20, flags: 0x0},
768: {region: 0x165, script: 0x5, flags: 0x0},
- 769: {region: 0x165, script: 0x57, flags: 0x0},
- 770: {region: 0x165, script: 0x57, flags: 0x0},
- 771: {region: 0x165, script: 0x57, flags: 0x0},
- 772: {region: 0x99, script: 0x6b, flags: 0x0},
- 773: {region: 0x165, script: 0x57, flags: 0x0},
- 774: {region: 0x165, script: 0x57, flags: 0x0},
- 775: {region: 0x10b, script: 0x57, flags: 0x0},
- 776: {region: 0x165, script: 0x57, flags: 0x0},
- 777: {region: 0x165, script: 0x57, flags: 0x0},
- 778: {region: 0x165, script: 0x57, flags: 0x0},
+ 769: {region: 0x165, script: 0x5a, flags: 0x0},
+ 770: {region: 0x165, script: 0x5a, flags: 0x0},
+ 771: {region: 0x165, script: 0x5a, flags: 0x0},
+ 772: {region: 0x99, script: 0x6e, flags: 0x0},
+ 773: {region: 0x165, script: 0x5a, flags: 0x0},
+ 774: {region: 0x165, script: 0x5a, flags: 0x0},
+ 775: {region: 0x10b, script: 0x5a, flags: 0x0},
+ 776: {region: 0x165, script: 0x5a, flags: 0x0},
+ 777: {region: 0x165, script: 0x5a, flags: 0x0},
+ 778: {region: 0x165, script: 0x5a, flags: 0x0},
779: {region: 0x26, script: 0x3, flags: 0x1},
- 780: {region: 0x165, script: 0x57, flags: 0x0},
- 781: {region: 0x165, script: 0x57, flags: 0x0},
+ 780: {region: 0x165, script: 0x5a, flags: 0x0},
+ 781: {region: 0x165, script: 0x5a, flags: 0x0},
782: {region: 0x99, script: 0xe, flags: 0x0},
- 783: {region: 0xc4, script: 0x72, flags: 0x0},
- 785: {region: 0x165, script: 0x57, flags: 0x0},
- 786: {region: 0x49, script: 0x57, flags: 0x0},
- 787: {region: 0x49, script: 0x57, flags: 0x0},
- 788: {region: 0x37, script: 0x57, flags: 0x0},
- 789: {region: 0x165, script: 0x57, flags: 0x0},
- 790: {region: 0x165, script: 0x57, flags: 0x0},
- 791: {region: 0x165, script: 0x57, flags: 0x0},
- 792: {region: 0x165, script: 0x57, flags: 0x0},
- 793: {region: 0x165, script: 0x57, flags: 0x0},
- 794: {region: 0x165, script: 0x57, flags: 0x0},
- 795: {region: 0x99, script: 0x21, flags: 0x0},
- 796: {region: 0xdb, script: 0x21, flags: 0x0},
- 797: {region: 0x106, script: 0x1f, flags: 0x0},
- 798: {region: 0x35, script: 0x6f, flags: 0x0},
+ 783: {region: 0xc4, script: 0x75, flags: 0x0},
+ 785: {region: 0x165, script: 0x5a, flags: 0x0},
+ 786: {region: 0x49, script: 0x5a, flags: 0x0},
+ 787: {region: 0x49, script: 0x5a, flags: 0x0},
+ 788: {region: 0x37, script: 0x5a, flags: 0x0},
+ 789: {region: 0x165, script: 0x5a, flags: 0x0},
+ 790: {region: 0x165, script: 0x5a, flags: 0x0},
+ 791: {region: 0x165, script: 0x5a, flags: 0x0},
+ 792: {region: 0x165, script: 0x5a, flags: 0x0},
+ 793: {region: 0x165, script: 0x5a, flags: 0x0},
+ 794: {region: 0x165, script: 0x5a, flags: 0x0},
+ 795: {region: 0x99, script: 0x22, flags: 0x0},
+ 796: {region: 0xdb, script: 0x22, flags: 0x0},
+ 797: {region: 0x106, script: 0x20, flags: 0x0},
+ 798: {region: 0x35, script: 0x72, flags: 0x0},
799: {region: 0x29, script: 0x3, flags: 0x1},
- 800: {region: 0xcb, script: 0x57, flags: 0x0},
- 801: {region: 0x165, script: 0x57, flags: 0x0},
- 802: {region: 0x165, script: 0x57, flags: 0x0},
- 803: {region: 0x165, script: 0x57, flags: 0x0},
- 804: {region: 0x99, script: 0x21, flags: 0x0},
- 805: {region: 0x52, script: 0x57, flags: 0x0},
- 807: {region: 0x165, script: 0x57, flags: 0x0},
- 808: {region: 0x135, script: 0x57, flags: 0x0},
- 809: {region: 0x165, script: 0x57, flags: 0x0},
- 810: {region: 0x165, script: 0x57, flags: 0x0},
+ 800: {region: 0xcb, script: 0x5a, flags: 0x0},
+ 801: {region: 0x165, script: 0x5a, flags: 0x0},
+ 802: {region: 0x165, script: 0x5a, flags: 0x0},
+ 803: {region: 0x165, script: 0x5a, flags: 0x0},
+ 804: {region: 0x99, script: 0x22, flags: 0x0},
+ 805: {region: 0x52, script: 0x5a, flags: 0x0},
+ 807: {region: 0x165, script: 0x5a, flags: 0x0},
+ 808: {region: 0x135, script: 0x5a, flags: 0x0},
+ 809: {region: 0x165, script: 0x5a, flags: 0x0},
+ 810: {region: 0x165, script: 0x5a, flags: 0x0},
811: {region: 0xe8, script: 0x5, flags: 0x0},
- 812: {region: 0xc3, script: 0x57, flags: 0x0},
- 813: {region: 0x99, script: 0x21, flags: 0x0},
- 814: {region: 0x95, script: 0x57, flags: 0x0},
- 815: {region: 0x164, script: 0x57, flags: 0x0},
- 816: {region: 0x165, script: 0x57, flags: 0x0},
- 817: {region: 0xc4, script: 0x72, flags: 0x0},
- 818: {region: 0x165, script: 0x57, flags: 0x0},
- 819: {region: 0x165, script: 0x29, flags: 0x0},
- 820: {region: 0x106, script: 0x1f, flags: 0x0},
- 821: {region: 0x165, script: 0x57, flags: 0x0},
- 822: {region: 0x131, script: 0x57, flags: 0x0},
- 823: {region: 0x9c, script: 0x63, flags: 0x0},
- 824: {region: 0x165, script: 0x57, flags: 0x0},
- 825: {region: 0x165, script: 0x57, flags: 0x0},
+ 812: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 813: {region: 0x99, script: 0x22, flags: 0x0},
+ 814: {region: 0x95, script: 0x5a, flags: 0x0},
+ 815: {region: 0x164, script: 0x5a, flags: 0x0},
+ 816: {region: 0x165, script: 0x5a, flags: 0x0},
+ 817: {region: 0xc4, script: 0x75, flags: 0x0},
+ 818: {region: 0x165, script: 0x5a, flags: 0x0},
+ 819: {region: 0x165, script: 0x2c, flags: 0x0},
+ 820: {region: 0x106, script: 0x20, flags: 0x0},
+ 821: {region: 0x165, script: 0x5a, flags: 0x0},
+ 822: {region: 0x131, script: 0x5a, flags: 0x0},
+ 823: {region: 0x9c, script: 0x66, flags: 0x0},
+ 824: {region: 0x165, script: 0x5a, flags: 0x0},
+ 825: {region: 0x165, script: 0x5a, flags: 0x0},
826: {region: 0x9c, script: 0x5, flags: 0x0},
- 827: {region: 0x165, script: 0x57, flags: 0x0},
- 828: {region: 0x165, script: 0x57, flags: 0x0},
- 829: {region: 0x165, script: 0x57, flags: 0x0},
- 830: {region: 0xdd, script: 0x57, flags: 0x0},
- 831: {region: 0x165, script: 0x57, flags: 0x0},
- 832: {region: 0x165, script: 0x57, flags: 0x0},
- 834: {region: 0x165, script: 0x57, flags: 0x0},
- 835: {region: 0x53, script: 0x38, flags: 0x0},
- 836: {region: 0x9e, script: 0x57, flags: 0x0},
- 837: {region: 0xd2, script: 0x57, flags: 0x0},
- 838: {region: 0x165, script: 0x57, flags: 0x0},
- 839: {region: 0xda, script: 0x57, flags: 0x0},
- 840: {region: 0x165, script: 0x57, flags: 0x0},
- 841: {region: 0x165, script: 0x57, flags: 0x0},
- 842: {region: 0x165, script: 0x57, flags: 0x0},
- 843: {region: 0xcf, script: 0x57, flags: 0x0},
- 844: {region: 0x165, script: 0x57, flags: 0x0},
- 845: {region: 0x165, script: 0x57, flags: 0x0},
- 846: {region: 0x164, script: 0x57, flags: 0x0},
- 847: {region: 0xd1, script: 0x57, flags: 0x0},
- 848: {region: 0x60, script: 0x57, flags: 0x0},
- 849: {region: 0xdb, script: 0x21, flags: 0x0},
- 850: {region: 0x165, script: 0x57, flags: 0x0},
- 851: {region: 0xdb, script: 0x21, flags: 0x0},
- 852: {region: 0x165, script: 0x57, flags: 0x0},
- 853: {region: 0x165, script: 0x57, flags: 0x0},
- 854: {region: 0xd2, script: 0x57, flags: 0x0},
- 855: {region: 0x165, script: 0x57, flags: 0x0},
- 856: {region: 0x165, script: 0x57, flags: 0x0},
- 857: {region: 0xd1, script: 0x57, flags: 0x0},
- 858: {region: 0x165, script: 0x57, flags: 0x0},
- 859: {region: 0xcf, script: 0x57, flags: 0x0},
- 860: {region: 0xcf, script: 0x57, flags: 0x0},
- 861: {region: 0x165, script: 0x57, flags: 0x0},
- 862: {region: 0x165, script: 0x57, flags: 0x0},
- 863: {region: 0x95, script: 0x57, flags: 0x0},
- 864: {region: 0x165, script: 0x57, flags: 0x0},
- 865: {region: 0xdf, script: 0x57, flags: 0x0},
- 866: {region: 0x165, script: 0x57, flags: 0x0},
- 867: {region: 0x165, script: 0x57, flags: 0x0},
- 868: {region: 0x99, script: 0x57, flags: 0x0},
- 869: {region: 0x165, script: 0x57, flags: 0x0},
- 870: {region: 0x165, script: 0x57, flags: 0x0},
- 871: {region: 0xd9, script: 0x57, flags: 0x0},
- 872: {region: 0x52, script: 0x57, flags: 0x0},
- 873: {region: 0x165, script: 0x57, flags: 0x0},
- 874: {region: 0xda, script: 0x57, flags: 0x0},
- 875: {region: 0x165, script: 0x57, flags: 0x0},
- 876: {region: 0x52, script: 0x57, flags: 0x0},
- 877: {region: 0x165, script: 0x57, flags: 0x0},
- 878: {region: 0x165, script: 0x57, flags: 0x0},
- 879: {region: 0xda, script: 0x57, flags: 0x0},
- 880: {region: 0x123, script: 0x53, flags: 0x0},
- 881: {region: 0x99, script: 0x21, flags: 0x0},
- 882: {region: 0x10c, script: 0xbf, flags: 0x0},
- 883: {region: 0x165, script: 0x57, flags: 0x0},
- 884: {region: 0x165, script: 0x57, flags: 0x0},
- 885: {region: 0x84, script: 0x78, flags: 0x0},
- 886: {region: 0x161, script: 0x57, flags: 0x0},
- 887: {region: 0x165, script: 0x57, flags: 0x0},
+ 827: {region: 0x165, script: 0x5a, flags: 0x0},
+ 828: {region: 0x165, script: 0x5a, flags: 0x0},
+ 829: {region: 0x165, script: 0x5a, flags: 0x0},
+ 830: {region: 0xdd, script: 0x5a, flags: 0x0},
+ 831: {region: 0x165, script: 0x5a, flags: 0x0},
+ 832: {region: 0x165, script: 0x5a, flags: 0x0},
+ 834: {region: 0x165, script: 0x5a, flags: 0x0},
+ 835: {region: 0x53, script: 0x3b, flags: 0x0},
+ 836: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 837: {region: 0xd2, script: 0x5a, flags: 0x0},
+ 838: {region: 0x165, script: 0x5a, flags: 0x0},
+ 839: {region: 0xda, script: 0x5a, flags: 0x0},
+ 840: {region: 0x165, script: 0x5a, flags: 0x0},
+ 841: {region: 0x165, script: 0x5a, flags: 0x0},
+ 842: {region: 0x165, script: 0x5a, flags: 0x0},
+ 843: {region: 0xcf, script: 0x5a, flags: 0x0},
+ 844: {region: 0x165, script: 0x5a, flags: 0x0},
+ 845: {region: 0x165, script: 0x5a, flags: 0x0},
+ 846: {region: 0x164, script: 0x5a, flags: 0x0},
+ 847: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 848: {region: 0x60, script: 0x5a, flags: 0x0},
+ 849: {region: 0xdb, script: 0x22, flags: 0x0},
+ 850: {region: 0x165, script: 0x5a, flags: 0x0},
+ 851: {region: 0xdb, script: 0x22, flags: 0x0},
+ 852: {region: 0x165, script: 0x5a, flags: 0x0},
+ 853: {region: 0x165, script: 0x5a, flags: 0x0},
+ 854: {region: 0xd2, script: 0x5a, flags: 0x0},
+ 855: {region: 0x165, script: 0x5a, flags: 0x0},
+ 856: {region: 0x165, script: 0x5a, flags: 0x0},
+ 857: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 858: {region: 0x165, script: 0x5a, flags: 0x0},
+ 859: {region: 0xcf, script: 0x5a, flags: 0x0},
+ 860: {region: 0xcf, script: 0x5a, flags: 0x0},
+ 861: {region: 0x165, script: 0x5a, flags: 0x0},
+ 862: {region: 0x165, script: 0x5a, flags: 0x0},
+ 863: {region: 0x95, script: 0x5a, flags: 0x0},
+ 864: {region: 0x165, script: 0x5a, flags: 0x0},
+ 865: {region: 0xdf, script: 0x5a, flags: 0x0},
+ 866: {region: 0x165, script: 0x5a, flags: 0x0},
+ 867: {region: 0x165, script: 0x5a, flags: 0x0},
+ 868: {region: 0x99, script: 0x5a, flags: 0x0},
+ 869: {region: 0x165, script: 0x5a, flags: 0x0},
+ 870: {region: 0x165, script: 0x5a, flags: 0x0},
+ 871: {region: 0xd9, script: 0x5a, flags: 0x0},
+ 872: {region: 0x52, script: 0x5a, flags: 0x0},
+ 873: {region: 0x165, script: 0x5a, flags: 0x0},
+ 874: {region: 0xda, script: 0x5a, flags: 0x0},
+ 875: {region: 0x165, script: 0x5a, flags: 0x0},
+ 876: {region: 0x52, script: 0x5a, flags: 0x0},
+ 877: {region: 0x165, script: 0x5a, flags: 0x0},
+ 878: {region: 0x165, script: 0x5a, flags: 0x0},
+ 879: {region: 0xda, script: 0x5a, flags: 0x0},
+ 880: {region: 0x123, script: 0x56, flags: 0x0},
+ 881: {region: 0x99, script: 0x22, flags: 0x0},
+ 882: {region: 0x10c, script: 0xc4, flags: 0x0},
+ 883: {region: 0x165, script: 0x5a, flags: 0x0},
+ 884: {region: 0x165, script: 0x5a, flags: 0x0},
+ 885: {region: 0x84, script: 0x7c, flags: 0x0},
+ 886: {region: 0x161, script: 0x5a, flags: 0x0},
+ 887: {region: 0x165, script: 0x5a, flags: 0x0},
888: {region: 0x49, script: 0x17, flags: 0x0},
- 889: {region: 0x165, script: 0x57, flags: 0x0},
- 890: {region: 0x161, script: 0x57, flags: 0x0},
- 891: {region: 0x165, script: 0x57, flags: 0x0},
- 892: {region: 0x165, script: 0x57, flags: 0x0},
- 893: {region: 0x165, script: 0x57, flags: 0x0},
- 894: {region: 0x165, script: 0x57, flags: 0x0},
- 895: {region: 0x165, script: 0x57, flags: 0x0},
- 896: {region: 0x117, script: 0x57, flags: 0x0},
- 897: {region: 0x165, script: 0x57, flags: 0x0},
- 898: {region: 0x165, script: 0x57, flags: 0x0},
- 899: {region: 0x135, script: 0x57, flags: 0x0},
- 900: {region: 0x165, script: 0x57, flags: 0x0},
- 901: {region: 0x53, script: 0x57, flags: 0x0},
- 902: {region: 0x165, script: 0x57, flags: 0x0},
- 903: {region: 0xce, script: 0x57, flags: 0x0},
- 904: {region: 0x12f, script: 0x57, flags: 0x0},
- 905: {region: 0x131, script: 0x57, flags: 0x0},
- 906: {region: 0x80, script: 0x57, flags: 0x0},
- 907: {region: 0x78, script: 0x57, flags: 0x0},
- 908: {region: 0x165, script: 0x57, flags: 0x0},
- 910: {region: 0x165, script: 0x57, flags: 0x0},
- 911: {region: 0x165, script: 0x57, flags: 0x0},
- 912: {region: 0x6f, script: 0x57, flags: 0x0},
- 913: {region: 0x165, script: 0x57, flags: 0x0},
- 914: {region: 0x165, script: 0x57, flags: 0x0},
- 915: {region: 0x165, script: 0x57, flags: 0x0},
- 916: {region: 0x165, script: 0x57, flags: 0x0},
- 917: {region: 0x99, script: 0x7d, flags: 0x0},
- 918: {region: 0x165, script: 0x57, flags: 0x0},
+ 889: {region: 0x165, script: 0x5a, flags: 0x0},
+ 890: {region: 0x161, script: 0x5a, flags: 0x0},
+ 891: {region: 0x165, script: 0x5a, flags: 0x0},
+ 892: {region: 0x165, script: 0x5a, flags: 0x0},
+ 893: {region: 0x165, script: 0x5a, flags: 0x0},
+ 894: {region: 0x165, script: 0x5a, flags: 0x0},
+ 895: {region: 0x165, script: 0x5a, flags: 0x0},
+ 896: {region: 0x117, script: 0x5a, flags: 0x0},
+ 897: {region: 0x165, script: 0x5a, flags: 0x0},
+ 898: {region: 0x165, script: 0x5a, flags: 0x0},
+ 899: {region: 0x135, script: 0x5a, flags: 0x0},
+ 900: {region: 0x165, script: 0x5a, flags: 0x0},
+ 901: {region: 0x53, script: 0x5a, flags: 0x0},
+ 902: {region: 0x165, script: 0x5a, flags: 0x0},
+ 903: {region: 0xce, script: 0x5a, flags: 0x0},
+ 904: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 905: {region: 0x131, script: 0x5a, flags: 0x0},
+ 906: {region: 0x80, script: 0x5a, flags: 0x0},
+ 907: {region: 0x78, script: 0x5a, flags: 0x0},
+ 908: {region: 0x165, script: 0x5a, flags: 0x0},
+ 910: {region: 0x165, script: 0x5a, flags: 0x0},
+ 911: {region: 0x165, script: 0x5a, flags: 0x0},
+ 912: {region: 0x6f, script: 0x5a, flags: 0x0},
+ 913: {region: 0x165, script: 0x5a, flags: 0x0},
+ 914: {region: 0x165, script: 0x5a, flags: 0x0},
+ 915: {region: 0x165, script: 0x5a, flags: 0x0},
+ 916: {region: 0x165, script: 0x5a, flags: 0x0},
+ 917: {region: 0x99, script: 0x81, flags: 0x0},
+ 918: {region: 0x165, script: 0x5a, flags: 0x0},
919: {region: 0x165, script: 0x5, flags: 0x0},
- 920: {region: 0x7d, script: 0x1f, flags: 0x0},
- 921: {region: 0x135, script: 0x7e, flags: 0x0},
+ 920: {region: 0x7d, script: 0x20, flags: 0x0},
+ 921: {region: 0x135, script: 0x82, flags: 0x0},
922: {region: 0x165, script: 0x5, flags: 0x0},
- 923: {region: 0xc5, script: 0x7c, flags: 0x0},
- 924: {region: 0x165, script: 0x57, flags: 0x0},
+ 923: {region: 0xc5, script: 0x80, flags: 0x0},
+ 924: {region: 0x165, script: 0x5a, flags: 0x0},
925: {region: 0x2c, script: 0x3, flags: 0x1},
- 926: {region: 0xe7, script: 0x57, flags: 0x0},
+ 926: {region: 0xe7, script: 0x5a, flags: 0x0},
927: {region: 0x2f, script: 0x2, flags: 0x1},
- 928: {region: 0xe7, script: 0x57, flags: 0x0},
- 929: {region: 0x30, script: 0x57, flags: 0x0},
- 930: {region: 0xf0, script: 0x57, flags: 0x0},
- 931: {region: 0x165, script: 0x57, flags: 0x0},
- 932: {region: 0x78, script: 0x57, flags: 0x0},
- 933: {region: 0xd6, script: 0x57, flags: 0x0},
- 934: {region: 0x135, script: 0x57, flags: 0x0},
- 935: {region: 0x49, script: 0x57, flags: 0x0},
- 936: {region: 0x165, script: 0x57, flags: 0x0},
- 937: {region: 0x9c, script: 0xe8, flags: 0x0},
- 938: {region: 0x165, script: 0x57, flags: 0x0},
- 939: {region: 0x60, script: 0x57, flags: 0x0},
+ 928: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 929: {region: 0x30, script: 0x5a, flags: 0x0},
+ 930: {region: 0xf0, script: 0x5a, flags: 0x0},
+ 931: {region: 0x165, script: 0x5a, flags: 0x0},
+ 932: {region: 0x78, script: 0x5a, flags: 0x0},
+ 933: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 934: {region: 0x135, script: 0x5a, flags: 0x0},
+ 935: {region: 0x49, script: 0x5a, flags: 0x0},
+ 936: {region: 0x165, script: 0x5a, flags: 0x0},
+ 937: {region: 0x9c, script: 0xf0, flags: 0x0},
+ 938: {region: 0x165, script: 0x5a, flags: 0x0},
+ 939: {region: 0x60, script: 0x5a, flags: 0x0},
940: {region: 0x165, script: 0x5, flags: 0x0},
- 941: {region: 0xb0, script: 0x87, flags: 0x0},
- 943: {region: 0x165, script: 0x57, flags: 0x0},
- 944: {region: 0x165, script: 0x57, flags: 0x0},
+ 941: {region: 0xb0, script: 0x8b, flags: 0x0},
+ 943: {region: 0x165, script: 0x5a, flags: 0x0},
+ 944: {region: 0x165, script: 0x5a, flags: 0x0},
945: {region: 0x99, script: 0x12, flags: 0x0},
- 946: {region: 0xa4, script: 0x57, flags: 0x0},
- 947: {region: 0xe9, script: 0x57, flags: 0x0},
- 948: {region: 0x165, script: 0x57, flags: 0x0},
- 949: {region: 0x9e, script: 0x57, flags: 0x0},
- 950: {region: 0x165, script: 0x57, flags: 0x0},
- 951: {region: 0x165, script: 0x57, flags: 0x0},
- 952: {region: 0x87, script: 0x31, flags: 0x0},
- 953: {region: 0x75, script: 0x57, flags: 0x0},
- 954: {region: 0x165, script: 0x57, flags: 0x0},
- 955: {region: 0xe8, script: 0x4a, flags: 0x0},
+ 946: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 947: {region: 0xe9, script: 0x5a, flags: 0x0},
+ 948: {region: 0x165, script: 0x5a, flags: 0x0},
+ 949: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 950: {region: 0x165, script: 0x5a, flags: 0x0},
+ 951: {region: 0x165, script: 0x5a, flags: 0x0},
+ 952: {region: 0x87, script: 0x34, flags: 0x0},
+ 953: {region: 0x75, script: 0x5a, flags: 0x0},
+ 954: {region: 0x165, script: 0x5a, flags: 0x0},
+ 955: {region: 0xe8, script: 0x4d, flags: 0x0},
956: {region: 0x9c, script: 0x5, flags: 0x0},
- 957: {region: 0x1, script: 0x57, flags: 0x0},
+ 957: {region: 0x1, script: 0x5a, flags: 0x0},
958: {region: 0x24, script: 0x5, flags: 0x0},
- 959: {region: 0x165, script: 0x57, flags: 0x0},
- 960: {region: 0x41, script: 0x57, flags: 0x0},
- 961: {region: 0x165, script: 0x57, flags: 0x0},
- 962: {region: 0x7a, script: 0x57, flags: 0x0},
- 963: {region: 0x165, script: 0x57, flags: 0x0},
- 964: {region: 0xe4, script: 0x57, flags: 0x0},
- 965: {region: 0x89, script: 0x57, flags: 0x0},
- 966: {region: 0x69, script: 0x57, flags: 0x0},
- 967: {region: 0x165, script: 0x57, flags: 0x0},
- 968: {region: 0x99, script: 0x21, flags: 0x0},
- 969: {region: 0x165, script: 0x57, flags: 0x0},
- 970: {region: 0x102, script: 0x57, flags: 0x0},
- 971: {region: 0x95, script: 0x57, flags: 0x0},
- 972: {region: 0x165, script: 0x57, flags: 0x0},
- 973: {region: 0x165, script: 0x57, flags: 0x0},
- 974: {region: 0x9e, script: 0x57, flags: 0x0},
+ 959: {region: 0x165, script: 0x5a, flags: 0x0},
+ 960: {region: 0x41, script: 0x5a, flags: 0x0},
+ 961: {region: 0x165, script: 0x5a, flags: 0x0},
+ 962: {region: 0x7a, script: 0x5a, flags: 0x0},
+ 963: {region: 0x165, script: 0x5a, flags: 0x0},
+ 964: {region: 0xe4, script: 0x5a, flags: 0x0},
+ 965: {region: 0x89, script: 0x5a, flags: 0x0},
+ 966: {region: 0x69, script: 0x5a, flags: 0x0},
+ 967: {region: 0x165, script: 0x5a, flags: 0x0},
+ 968: {region: 0x99, script: 0x22, flags: 0x0},
+ 969: {region: 0x165, script: 0x5a, flags: 0x0},
+ 970: {region: 0x102, script: 0x5a, flags: 0x0},
+ 971: {region: 0x95, script: 0x5a, flags: 0x0},
+ 972: {region: 0x165, script: 0x5a, flags: 0x0},
+ 973: {region: 0x165, script: 0x5a, flags: 0x0},
+ 974: {region: 0x9e, script: 0x5a, flags: 0x0},
975: {region: 0x165, script: 0x5, flags: 0x0},
- 976: {region: 0x99, script: 0x57, flags: 0x0},
+ 976: {region: 0x99, script: 0x5a, flags: 0x0},
977: {region: 0x31, script: 0x2, flags: 0x1},
- 978: {region: 0xdb, script: 0x21, flags: 0x0},
+ 978: {region: 0xdb, script: 0x22, flags: 0x0},
979: {region: 0x35, script: 0xe, flags: 0x0},
- 980: {region: 0x4e, script: 0x57, flags: 0x0},
- 981: {region: 0x72, script: 0x57, flags: 0x0},
- 982: {region: 0x4e, script: 0x57, flags: 0x0},
+ 980: {region: 0x4e, script: 0x5a, flags: 0x0},
+ 981: {region: 0x72, script: 0x5a, flags: 0x0},
+ 982: {region: 0x4e, script: 0x5a, flags: 0x0},
983: {region: 0x9c, script: 0x5, flags: 0x0},
- 984: {region: 0x10c, script: 0x57, flags: 0x0},
- 985: {region: 0x3a, script: 0x57, flags: 0x0},
- 986: {region: 0x165, script: 0x57, flags: 0x0},
- 987: {region: 0xd1, script: 0x57, flags: 0x0},
- 988: {region: 0x104, script: 0x57, flags: 0x0},
- 989: {region: 0x95, script: 0x57, flags: 0x0},
- 990: {region: 0x12f, script: 0x57, flags: 0x0},
- 991: {region: 0x165, script: 0x57, flags: 0x0},
- 992: {region: 0x165, script: 0x57, flags: 0x0},
- 993: {region: 0x73, script: 0x57, flags: 0x0},
- 994: {region: 0x106, script: 0x1f, flags: 0x0},
- 995: {region: 0x130, script: 0x1f, flags: 0x0},
- 996: {region: 0x109, script: 0x57, flags: 0x0},
- 997: {region: 0x107, script: 0x57, flags: 0x0},
- 998: {region: 0x12f, script: 0x57, flags: 0x0},
- 999: {region: 0x165, script: 0x57, flags: 0x0},
- 1000: {region: 0xa2, script: 0x49, flags: 0x0},
- 1001: {region: 0x99, script: 0x21, flags: 0x0},
- 1002: {region: 0x80, script: 0x57, flags: 0x0},
- 1003: {region: 0x106, script: 0x1f, flags: 0x0},
- 1004: {region: 0xa4, script: 0x57, flags: 0x0},
- 1005: {region: 0x95, script: 0x57, flags: 0x0},
- 1006: {region: 0x99, script: 0x57, flags: 0x0},
- 1007: {region: 0x114, script: 0x57, flags: 0x0},
- 1008: {region: 0x99, script: 0xc3, flags: 0x0},
- 1009: {region: 0x165, script: 0x57, flags: 0x0},
- 1010: {region: 0x165, script: 0x57, flags: 0x0},
- 1011: {region: 0x12f, script: 0x57, flags: 0x0},
- 1012: {region: 0x9e, script: 0x57, flags: 0x0},
- 1013: {region: 0x99, script: 0x21, flags: 0x0},
+ 984: {region: 0x10c, script: 0x5a, flags: 0x0},
+ 985: {region: 0x3a, script: 0x5a, flags: 0x0},
+ 986: {region: 0x165, script: 0x5a, flags: 0x0},
+ 987: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 988: {region: 0x104, script: 0x5a, flags: 0x0},
+ 989: {region: 0x95, script: 0x5a, flags: 0x0},
+ 990: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 991: {region: 0x165, script: 0x5a, flags: 0x0},
+ 992: {region: 0x165, script: 0x5a, flags: 0x0},
+ 993: {region: 0x73, script: 0x5a, flags: 0x0},
+ 994: {region: 0x106, script: 0x20, flags: 0x0},
+ 995: {region: 0x130, script: 0x20, flags: 0x0},
+ 996: {region: 0x109, script: 0x5a, flags: 0x0},
+ 997: {region: 0x107, script: 0x5a, flags: 0x0},
+ 998: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 999: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1000: {region: 0xa2, script: 0x4c, flags: 0x0},
+ 1001: {region: 0x99, script: 0x22, flags: 0x0},
+ 1002: {region: 0x80, script: 0x5a, flags: 0x0},
+ 1003: {region: 0x106, script: 0x20, flags: 0x0},
+ 1004: {region: 0xa4, script: 0x5a, flags: 0x0},
+ 1005: {region: 0x95, script: 0x5a, flags: 0x0},
+ 1006: {region: 0x99, script: 0x5a, flags: 0x0},
+ 1007: {region: 0x114, script: 0x5a, flags: 0x0},
+ 1008: {region: 0x99, script: 0xc8, flags: 0x0},
+ 1009: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1010: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1011: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 1012: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 1013: {region: 0x99, script: 0x22, flags: 0x0},
1014: {region: 0x165, script: 0x5, flags: 0x0},
- 1015: {region: 0x9e, script: 0x57, flags: 0x0},
- 1016: {region: 0x7b, script: 0x57, flags: 0x0},
- 1017: {region: 0x49, script: 0x57, flags: 0x0},
+ 1015: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 1016: {region: 0x7b, script: 0x5a, flags: 0x0},
+ 1017: {region: 0x49, script: 0x5a, flags: 0x0},
1018: {region: 0x33, script: 0x4, flags: 0x1},
- 1019: {region: 0x9e, script: 0x57, flags: 0x0},
+ 1019: {region: 0x9e, script: 0x5a, flags: 0x0},
1020: {region: 0x9c, script: 0x5, flags: 0x0},
- 1021: {region: 0xda, script: 0x57, flags: 0x0},
- 1022: {region: 0x4f, script: 0x57, flags: 0x0},
- 1023: {region: 0xd1, script: 0x57, flags: 0x0},
- 1024: {region: 0xcf, script: 0x57, flags: 0x0},
- 1025: {region: 0xc3, script: 0x57, flags: 0x0},
- 1026: {region: 0x4c, script: 0x57, flags: 0x0},
- 1027: {region: 0x96, script: 0x7a, flags: 0x0},
- 1028: {region: 0xb6, script: 0x57, flags: 0x0},
- 1029: {region: 0x165, script: 0x29, flags: 0x0},
- 1030: {region: 0x165, script: 0x57, flags: 0x0},
- 1032: {region: 0xba, script: 0xdc, flags: 0x0},
- 1033: {region: 0x165, script: 0x57, flags: 0x0},
- 1034: {region: 0xc4, script: 0x72, flags: 0x0},
+ 1021: {region: 0xda, script: 0x5a, flags: 0x0},
+ 1022: {region: 0x4f, script: 0x5a, flags: 0x0},
+ 1023: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 1024: {region: 0xcf, script: 0x5a, flags: 0x0},
+ 1025: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 1026: {region: 0x4c, script: 0x5a, flags: 0x0},
+ 1027: {region: 0x96, script: 0x7e, flags: 0x0},
+ 1028: {region: 0xb6, script: 0x5a, flags: 0x0},
+ 1029: {region: 0x165, script: 0x2c, flags: 0x0},
+ 1030: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1032: {region: 0xba, script: 0xe3, flags: 0x0},
+ 1033: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1034: {region: 0xc4, script: 0x75, flags: 0x0},
1035: {region: 0x165, script: 0x5, flags: 0x0},
- 1036: {region: 0xb3, script: 0xca, flags: 0x0},
- 1037: {region: 0x6f, script: 0x57, flags: 0x0},
- 1038: {region: 0x165, script: 0x57, flags: 0x0},
- 1039: {region: 0x165, script: 0x57, flags: 0x0},
- 1040: {region: 0x165, script: 0x57, flags: 0x0},
- 1041: {region: 0x165, script: 0x57, flags: 0x0},
- 1042: {region: 0x111, script: 0x57, flags: 0x0},
- 1043: {region: 0x165, script: 0x57, flags: 0x0},
+ 1036: {region: 0xb3, script: 0xcf, flags: 0x0},
+ 1037: {region: 0x6f, script: 0x5a, flags: 0x0},
+ 1038: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1039: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1040: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1041: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1042: {region: 0x111, script: 0x5a, flags: 0x0},
+ 1043: {region: 0x165, script: 0x5a, flags: 0x0},
1044: {region: 0xe8, script: 0x5, flags: 0x0},
- 1045: {region: 0x165, script: 0x57, flags: 0x0},
- 1046: {region: 0x10f, script: 0x57, flags: 0x0},
- 1047: {region: 0x165, script: 0x57, flags: 0x0},
- 1048: {region: 0xe9, script: 0x57, flags: 0x0},
- 1049: {region: 0x165, script: 0x57, flags: 0x0},
- 1050: {region: 0x95, script: 0x57, flags: 0x0},
- 1051: {region: 0x142, script: 0x57, flags: 0x0},
- 1052: {region: 0x10c, script: 0x57, flags: 0x0},
- 1054: {region: 0x10c, script: 0x57, flags: 0x0},
- 1055: {region: 0x72, script: 0x57, flags: 0x0},
- 1056: {region: 0x97, script: 0xc0, flags: 0x0},
- 1057: {region: 0x165, script: 0x57, flags: 0x0},
- 1058: {region: 0x72, script: 0x57, flags: 0x0},
- 1059: {region: 0x164, script: 0x57, flags: 0x0},
- 1060: {region: 0x165, script: 0x57, flags: 0x0},
- 1061: {region: 0xc3, script: 0x57, flags: 0x0},
- 1062: {region: 0x165, script: 0x57, flags: 0x0},
- 1063: {region: 0x165, script: 0x57, flags: 0x0},
- 1064: {region: 0x165, script: 0x57, flags: 0x0},
- 1065: {region: 0x115, script: 0x57, flags: 0x0},
- 1066: {region: 0x165, script: 0x57, flags: 0x0},
- 1067: {region: 0x165, script: 0x57, flags: 0x0},
- 1068: {region: 0x123, script: 0xdf, flags: 0x0},
- 1069: {region: 0x165, script: 0x57, flags: 0x0},
- 1070: {region: 0x165, script: 0x57, flags: 0x0},
- 1071: {region: 0x165, script: 0x57, flags: 0x0},
- 1072: {region: 0x165, script: 0x57, flags: 0x0},
- 1073: {region: 0x27, script: 0x57, flags: 0x0},
+ 1045: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1046: {region: 0x10f, script: 0x5a, flags: 0x0},
+ 1047: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1048: {region: 0xe9, script: 0x5a, flags: 0x0},
+ 1049: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1050: {region: 0x95, script: 0x5a, flags: 0x0},
+ 1051: {region: 0x142, script: 0x5a, flags: 0x0},
+ 1052: {region: 0x10c, script: 0x5a, flags: 0x0},
+ 1054: {region: 0x10c, script: 0x5a, flags: 0x0},
+ 1055: {region: 0x72, script: 0x5a, flags: 0x0},
+ 1056: {region: 0x97, script: 0xc5, flags: 0x0},
+ 1057: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1058: {region: 0x72, script: 0x5a, flags: 0x0},
+ 1059: {region: 0x164, script: 0x5a, flags: 0x0},
+ 1060: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1061: {region: 0xc3, script: 0x5a, flags: 0x0},
+ 1062: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1063: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1064: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1065: {region: 0x115, script: 0x5a, flags: 0x0},
+ 1066: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1067: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1068: {region: 0x123, script: 0xe6, flags: 0x0},
+ 1069: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1070: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1071: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1072: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1073: {region: 0x27, script: 0x5a, flags: 0x0},
1074: {region: 0x37, script: 0x5, flags: 0x1},
- 1075: {region: 0x99, script: 0xcb, flags: 0x0},
- 1076: {region: 0x116, script: 0x57, flags: 0x0},
- 1077: {region: 0x114, script: 0x57, flags: 0x0},
- 1078: {region: 0x99, script: 0x21, flags: 0x0},
- 1079: {region: 0x161, script: 0x57, flags: 0x0},
- 1080: {region: 0x165, script: 0x57, flags: 0x0},
- 1081: {region: 0x165, script: 0x57, flags: 0x0},
- 1082: {region: 0x6d, script: 0x57, flags: 0x0},
- 1083: {region: 0x161, script: 0x57, flags: 0x0},
- 1084: {region: 0x165, script: 0x57, flags: 0x0},
- 1085: {region: 0x60, script: 0x57, flags: 0x0},
- 1086: {region: 0x95, script: 0x57, flags: 0x0},
- 1087: {region: 0x165, script: 0x57, flags: 0x0},
- 1088: {region: 0x165, script: 0x57, flags: 0x0},
- 1089: {region: 0x12f, script: 0x57, flags: 0x0},
- 1090: {region: 0x165, script: 0x57, flags: 0x0},
- 1091: {region: 0x84, script: 0x57, flags: 0x0},
- 1092: {region: 0x10c, script: 0x57, flags: 0x0},
- 1093: {region: 0x12f, script: 0x57, flags: 0x0},
+ 1075: {region: 0x99, script: 0xd2, flags: 0x0},
+ 1076: {region: 0x116, script: 0x5a, flags: 0x0},
+ 1077: {region: 0x114, script: 0x5a, flags: 0x0},
+ 1078: {region: 0x99, script: 0x22, flags: 0x0},
+ 1079: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1080: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1081: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1082: {region: 0x6d, script: 0x5a, flags: 0x0},
+ 1083: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1084: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1085: {region: 0x60, script: 0x5a, flags: 0x0},
+ 1086: {region: 0x95, script: 0x5a, flags: 0x0},
+ 1087: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1088: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1089: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 1090: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1091: {region: 0x84, script: 0x5a, flags: 0x0},
+ 1092: {region: 0x10c, script: 0x5a, flags: 0x0},
+ 1093: {region: 0x12f, script: 0x5a, flags: 0x0},
1094: {region: 0x15f, script: 0x5, flags: 0x0},
- 1095: {region: 0x4b, script: 0x57, flags: 0x0},
- 1096: {region: 0x60, script: 0x57, flags: 0x0},
- 1097: {region: 0x165, script: 0x57, flags: 0x0},
- 1098: {region: 0x99, script: 0x21, flags: 0x0},
- 1099: {region: 0x95, script: 0x57, flags: 0x0},
- 1100: {region: 0x165, script: 0x57, flags: 0x0},
+ 1095: {region: 0x4b, script: 0x5a, flags: 0x0},
+ 1096: {region: 0x60, script: 0x5a, flags: 0x0},
+ 1097: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1098: {region: 0x99, script: 0x22, flags: 0x0},
+ 1099: {region: 0x95, script: 0x5a, flags: 0x0},
+ 1100: {region: 0x165, script: 0x5a, flags: 0x0},
1101: {region: 0x35, script: 0xe, flags: 0x0},
- 1102: {region: 0x9b, script: 0xcf, flags: 0x0},
- 1103: {region: 0xe9, script: 0x57, flags: 0x0},
- 1104: {region: 0x99, script: 0xd7, flags: 0x0},
- 1105: {region: 0xdb, script: 0x21, flags: 0x0},
- 1106: {region: 0x165, script: 0x57, flags: 0x0},
- 1107: {region: 0x165, script: 0x57, flags: 0x0},
- 1108: {region: 0x165, script: 0x57, flags: 0x0},
- 1109: {region: 0x165, script: 0x57, flags: 0x0},
- 1110: {region: 0x165, script: 0x57, flags: 0x0},
- 1111: {region: 0x165, script: 0x57, flags: 0x0},
- 1112: {region: 0x165, script: 0x57, flags: 0x0},
- 1113: {region: 0x165, script: 0x57, flags: 0x0},
- 1114: {region: 0xe7, script: 0x57, flags: 0x0},
- 1115: {region: 0x165, script: 0x57, flags: 0x0},
- 1116: {region: 0x165, script: 0x57, flags: 0x0},
- 1117: {region: 0x99, script: 0x4f, flags: 0x0},
- 1118: {region: 0x53, script: 0xd5, flags: 0x0},
- 1119: {region: 0xdb, script: 0x21, flags: 0x0},
- 1120: {region: 0xdb, script: 0x21, flags: 0x0},
- 1121: {region: 0x99, script: 0xda, flags: 0x0},
- 1122: {region: 0x165, script: 0x57, flags: 0x0},
- 1123: {region: 0x112, script: 0x57, flags: 0x0},
- 1124: {region: 0x131, script: 0x57, flags: 0x0},
- 1125: {region: 0x126, script: 0x57, flags: 0x0},
- 1126: {region: 0x165, script: 0x57, flags: 0x0},
+ 1102: {region: 0x9b, script: 0xd6, flags: 0x0},
+ 1103: {region: 0xe9, script: 0x5a, flags: 0x0},
+ 1104: {region: 0x99, script: 0xde, flags: 0x0},
+ 1105: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1106: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1107: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1108: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1109: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1110: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1111: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1112: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1113: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1114: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 1115: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1116: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1117: {region: 0x99, script: 0x52, flags: 0x0},
+ 1118: {region: 0x53, script: 0xdc, flags: 0x0},
+ 1119: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1120: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1121: {region: 0x99, script: 0xe1, flags: 0x0},
+ 1122: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1123: {region: 0x112, script: 0x5a, flags: 0x0},
+ 1124: {region: 0x131, script: 0x5a, flags: 0x0},
+ 1125: {region: 0x126, script: 0x5a, flags: 0x0},
+ 1126: {region: 0x165, script: 0x5a, flags: 0x0},
1127: {region: 0x3c, script: 0x3, flags: 0x1},
- 1128: {region: 0x165, script: 0x57, flags: 0x0},
- 1129: {region: 0x165, script: 0x57, flags: 0x0},
- 1130: {region: 0x165, script: 0x57, flags: 0x0},
- 1131: {region: 0x123, script: 0xdf, flags: 0x0},
- 1132: {region: 0xdb, script: 0x21, flags: 0x0},
- 1133: {region: 0xdb, script: 0x21, flags: 0x0},
- 1134: {region: 0xdb, script: 0x21, flags: 0x0},
- 1135: {region: 0x6f, script: 0x29, flags: 0x0},
- 1136: {region: 0x165, script: 0x57, flags: 0x0},
- 1137: {region: 0x6d, script: 0x29, flags: 0x0},
- 1138: {region: 0x165, script: 0x57, flags: 0x0},
- 1139: {region: 0x165, script: 0x57, flags: 0x0},
- 1140: {region: 0x165, script: 0x57, flags: 0x0},
- 1141: {region: 0xd6, script: 0x57, flags: 0x0},
- 1142: {region: 0x127, script: 0x57, flags: 0x0},
- 1143: {region: 0x125, script: 0x57, flags: 0x0},
- 1144: {region: 0x32, script: 0x57, flags: 0x0},
- 1145: {region: 0xdb, script: 0x21, flags: 0x0},
- 1146: {region: 0xe7, script: 0x57, flags: 0x0},
- 1147: {region: 0x165, script: 0x57, flags: 0x0},
- 1148: {region: 0x165, script: 0x57, flags: 0x0},
- 1149: {region: 0x32, script: 0x57, flags: 0x0},
- 1150: {region: 0xd4, script: 0x57, flags: 0x0},
- 1151: {region: 0x165, script: 0x57, flags: 0x0},
- 1152: {region: 0x161, script: 0x57, flags: 0x0},
- 1153: {region: 0x165, script: 0x57, flags: 0x0},
- 1154: {region: 0x129, script: 0x57, flags: 0x0},
- 1155: {region: 0x165, script: 0x57, flags: 0x0},
- 1156: {region: 0xce, script: 0x57, flags: 0x0},
- 1157: {region: 0x165, script: 0x57, flags: 0x0},
- 1158: {region: 0xe6, script: 0x57, flags: 0x0},
- 1159: {region: 0x165, script: 0x57, flags: 0x0},
- 1160: {region: 0x165, script: 0x57, flags: 0x0},
- 1161: {region: 0x165, script: 0x57, flags: 0x0},
- 1162: {region: 0x12b, script: 0x57, flags: 0x0},
- 1163: {region: 0x12b, script: 0x57, flags: 0x0},
- 1164: {region: 0x12e, script: 0x57, flags: 0x0},
+ 1128: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1129: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1130: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1131: {region: 0x123, script: 0xe6, flags: 0x0},
+ 1132: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1133: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1134: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1135: {region: 0x6f, script: 0x2c, flags: 0x0},
+ 1136: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1137: {region: 0x6d, script: 0x2c, flags: 0x0},
+ 1138: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1139: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1140: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1141: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 1142: {region: 0x127, script: 0x5a, flags: 0x0},
+ 1143: {region: 0x125, script: 0x5a, flags: 0x0},
+ 1144: {region: 0x32, script: 0x5a, flags: 0x0},
+ 1145: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1146: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 1147: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1148: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1149: {region: 0x32, script: 0x5a, flags: 0x0},
+ 1150: {region: 0xd4, script: 0x5a, flags: 0x0},
+ 1151: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1152: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1153: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1154: {region: 0x129, script: 0x5a, flags: 0x0},
+ 1155: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1156: {region: 0xce, script: 0x5a, flags: 0x0},
+ 1157: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1158: {region: 0xe6, script: 0x5a, flags: 0x0},
+ 1159: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1160: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1161: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1162: {region: 0x12b, script: 0x5a, flags: 0x0},
+ 1163: {region: 0x12b, script: 0x5a, flags: 0x0},
+ 1164: {region: 0x12e, script: 0x5a, flags: 0x0},
1165: {region: 0x165, script: 0x5, flags: 0x0},
- 1166: {region: 0x161, script: 0x57, flags: 0x0},
- 1167: {region: 0x87, script: 0x31, flags: 0x0},
- 1168: {region: 0xdb, script: 0x21, flags: 0x0},
- 1169: {region: 0xe7, script: 0x57, flags: 0x0},
- 1170: {region: 0x43, script: 0xe0, flags: 0x0},
- 1171: {region: 0x165, script: 0x57, flags: 0x0},
- 1172: {region: 0x106, script: 0x1f, flags: 0x0},
- 1173: {region: 0x165, script: 0x57, flags: 0x0},
- 1174: {region: 0x165, script: 0x57, flags: 0x0},
- 1175: {region: 0x131, script: 0x57, flags: 0x0},
- 1176: {region: 0x165, script: 0x57, flags: 0x0},
- 1177: {region: 0x123, script: 0xdf, flags: 0x0},
- 1178: {region: 0x32, script: 0x57, flags: 0x0},
- 1179: {region: 0x165, script: 0x57, flags: 0x0},
- 1180: {region: 0x165, script: 0x57, flags: 0x0},
- 1181: {region: 0xce, script: 0x57, flags: 0x0},
- 1182: {region: 0x165, script: 0x57, flags: 0x0},
- 1183: {region: 0x165, script: 0x57, flags: 0x0},
- 1184: {region: 0x12d, script: 0x57, flags: 0x0},
- 1185: {region: 0x165, script: 0x57, flags: 0x0},
- 1187: {region: 0x165, script: 0x57, flags: 0x0},
- 1188: {region: 0xd4, script: 0x57, flags: 0x0},
- 1189: {region: 0x53, script: 0xd8, flags: 0x0},
- 1190: {region: 0xe5, script: 0x57, flags: 0x0},
- 1191: {region: 0x165, script: 0x57, flags: 0x0},
- 1192: {region: 0x106, script: 0x1f, flags: 0x0},
- 1193: {region: 0xba, script: 0x57, flags: 0x0},
- 1194: {region: 0x165, script: 0x57, flags: 0x0},
- 1195: {region: 0x106, script: 0x1f, flags: 0x0},
+ 1166: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1167: {region: 0x87, script: 0x34, flags: 0x0},
+ 1168: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1169: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 1170: {region: 0x43, script: 0xe7, flags: 0x0},
+ 1171: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1172: {region: 0x106, script: 0x20, flags: 0x0},
+ 1173: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1174: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1175: {region: 0x131, script: 0x5a, flags: 0x0},
+ 1176: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1177: {region: 0x123, script: 0xe6, flags: 0x0},
+ 1178: {region: 0x32, script: 0x5a, flags: 0x0},
+ 1179: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1180: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1181: {region: 0xce, script: 0x5a, flags: 0x0},
+ 1182: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1183: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1184: {region: 0x12d, script: 0x5a, flags: 0x0},
+ 1185: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1187: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1188: {region: 0xd4, script: 0x5a, flags: 0x0},
+ 1189: {region: 0x53, script: 0xdf, flags: 0x0},
+ 1190: {region: 0xe5, script: 0x5a, flags: 0x0},
+ 1191: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1192: {region: 0x106, script: 0x20, flags: 0x0},
+ 1193: {region: 0xba, script: 0x5a, flags: 0x0},
+ 1194: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1195: {region: 0x106, script: 0x20, flags: 0x0},
1196: {region: 0x3f, script: 0x4, flags: 0x1},
- 1197: {region: 0x11c, script: 0xe2, flags: 0x0},
- 1198: {region: 0x130, script: 0x1f, flags: 0x0},
- 1199: {region: 0x75, script: 0x57, flags: 0x0},
- 1200: {region: 0x2a, script: 0x57, flags: 0x0},
+ 1197: {region: 0x11c, script: 0xea, flags: 0x0},
+ 1198: {region: 0x130, script: 0x20, flags: 0x0},
+ 1199: {region: 0x75, script: 0x5a, flags: 0x0},
+ 1200: {region: 0x2a, script: 0x5a, flags: 0x0},
1202: {region: 0x43, script: 0x3, flags: 0x1},
1203: {region: 0x99, script: 0xe, flags: 0x0},
1204: {region: 0xe8, script: 0x5, flags: 0x0},
- 1205: {region: 0x165, script: 0x57, flags: 0x0},
- 1206: {region: 0x165, script: 0x57, flags: 0x0},
- 1207: {region: 0x165, script: 0x57, flags: 0x0},
- 1208: {region: 0x165, script: 0x57, flags: 0x0},
- 1209: {region: 0x165, script: 0x57, flags: 0x0},
- 1210: {region: 0x165, script: 0x57, flags: 0x0},
- 1211: {region: 0x165, script: 0x57, flags: 0x0},
+ 1205: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1206: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1207: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1208: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1209: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1210: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1211: {region: 0x165, script: 0x5a, flags: 0x0},
1212: {region: 0x46, script: 0x4, flags: 0x1},
- 1213: {region: 0x165, script: 0x57, flags: 0x0},
- 1214: {region: 0xb4, script: 0xe3, flags: 0x0},
- 1215: {region: 0x165, script: 0x57, flags: 0x0},
- 1216: {region: 0x161, script: 0x57, flags: 0x0},
- 1217: {region: 0x9e, script: 0x57, flags: 0x0},
- 1218: {region: 0x106, script: 0x57, flags: 0x0},
- 1219: {region: 0x13e, script: 0x57, flags: 0x0},
- 1220: {region: 0x11b, script: 0x57, flags: 0x0},
- 1221: {region: 0x165, script: 0x57, flags: 0x0},
- 1222: {region: 0x36, script: 0x57, flags: 0x0},
- 1223: {region: 0x60, script: 0x57, flags: 0x0},
- 1224: {region: 0xd1, script: 0x57, flags: 0x0},
- 1225: {region: 0x1, script: 0x57, flags: 0x0},
- 1226: {region: 0x106, script: 0x57, flags: 0x0},
- 1227: {region: 0x6a, script: 0x57, flags: 0x0},
- 1228: {region: 0x12f, script: 0x57, flags: 0x0},
- 1229: {region: 0x165, script: 0x57, flags: 0x0},
- 1230: {region: 0x36, script: 0x57, flags: 0x0},
- 1231: {region: 0x4e, script: 0x57, flags: 0x0},
- 1232: {region: 0x165, script: 0x57, flags: 0x0},
- 1233: {region: 0x6f, script: 0x29, flags: 0x0},
- 1234: {region: 0x165, script: 0x57, flags: 0x0},
- 1235: {region: 0xe7, script: 0x57, flags: 0x0},
- 1236: {region: 0x2f, script: 0x57, flags: 0x0},
- 1237: {region: 0x99, script: 0xda, flags: 0x0},
- 1238: {region: 0x99, script: 0x21, flags: 0x0},
- 1239: {region: 0x165, script: 0x57, flags: 0x0},
- 1240: {region: 0x165, script: 0x57, flags: 0x0},
- 1241: {region: 0x165, script: 0x57, flags: 0x0},
- 1242: {region: 0x165, script: 0x57, flags: 0x0},
- 1243: {region: 0x165, script: 0x57, flags: 0x0},
- 1244: {region: 0x165, script: 0x57, flags: 0x0},
- 1245: {region: 0x165, script: 0x57, flags: 0x0},
- 1246: {region: 0x165, script: 0x57, flags: 0x0},
- 1247: {region: 0x165, script: 0x57, flags: 0x0},
- 1248: {region: 0x140, script: 0x57, flags: 0x0},
- 1249: {region: 0x165, script: 0x57, flags: 0x0},
- 1250: {region: 0x165, script: 0x57, flags: 0x0},
+ 1213: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1214: {region: 0xb4, script: 0xeb, flags: 0x0},
+ 1215: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1216: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1217: {region: 0x9e, script: 0x5a, flags: 0x0},
+ 1218: {region: 0x106, script: 0x5a, flags: 0x0},
+ 1219: {region: 0x13e, script: 0x5a, flags: 0x0},
+ 1220: {region: 0x11b, script: 0x5a, flags: 0x0},
+ 1221: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1222: {region: 0x36, script: 0x5a, flags: 0x0},
+ 1223: {region: 0x60, script: 0x5a, flags: 0x0},
+ 1224: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 1225: {region: 0x1, script: 0x5a, flags: 0x0},
+ 1226: {region: 0x106, script: 0x5a, flags: 0x0},
+ 1227: {region: 0x6a, script: 0x5a, flags: 0x0},
+ 1228: {region: 0x12f, script: 0x5a, flags: 0x0},
+ 1229: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1230: {region: 0x36, script: 0x5a, flags: 0x0},
+ 1231: {region: 0x4e, script: 0x5a, flags: 0x0},
+ 1232: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1233: {region: 0x6f, script: 0x2c, flags: 0x0},
+ 1234: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1235: {region: 0xe7, script: 0x5a, flags: 0x0},
+ 1236: {region: 0x2f, script: 0x5a, flags: 0x0},
+ 1237: {region: 0x99, script: 0xe1, flags: 0x0},
+ 1238: {region: 0x99, script: 0x22, flags: 0x0},
+ 1239: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1240: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1241: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1242: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1243: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1244: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1245: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1246: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1247: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1248: {region: 0x140, script: 0x5a, flags: 0x0},
+ 1249: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1250: {region: 0x165, script: 0x5a, flags: 0x0},
1251: {region: 0xa8, script: 0x5, flags: 0x0},
- 1252: {region: 0x165, script: 0x57, flags: 0x0},
- 1253: {region: 0x114, script: 0x57, flags: 0x0},
- 1254: {region: 0x165, script: 0x57, flags: 0x0},
- 1255: {region: 0x165, script: 0x57, flags: 0x0},
- 1256: {region: 0x165, script: 0x57, flags: 0x0},
- 1257: {region: 0x165, script: 0x57, flags: 0x0},
- 1258: {region: 0x99, script: 0x21, flags: 0x0},
- 1259: {region: 0x53, script: 0x38, flags: 0x0},
- 1260: {region: 0x165, script: 0x57, flags: 0x0},
- 1261: {region: 0x165, script: 0x57, flags: 0x0},
- 1262: {region: 0x41, script: 0x57, flags: 0x0},
- 1263: {region: 0x165, script: 0x57, flags: 0x0},
+ 1252: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1253: {region: 0x114, script: 0x5a, flags: 0x0},
+ 1254: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1255: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1256: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1257: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1258: {region: 0x99, script: 0x22, flags: 0x0},
+ 1259: {region: 0x53, script: 0x3b, flags: 0x0},
+ 1260: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1261: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1262: {region: 0x41, script: 0x5a, flags: 0x0},
+ 1263: {region: 0x165, script: 0x5a, flags: 0x0},
1264: {region: 0x12b, script: 0x18, flags: 0x0},
- 1265: {region: 0x165, script: 0x57, flags: 0x0},
- 1266: {region: 0x161, script: 0x57, flags: 0x0},
- 1267: {region: 0x165, script: 0x57, flags: 0x0},
- 1268: {region: 0x12b, script: 0x5f, flags: 0x0},
- 1269: {region: 0x12b, script: 0x60, flags: 0x0},
- 1270: {region: 0x7d, script: 0x2b, flags: 0x0},
- 1271: {region: 0x53, script: 0x64, flags: 0x0},
- 1272: {region: 0x10b, script: 0x69, flags: 0x0},
- 1273: {region: 0x108, script: 0x73, flags: 0x0},
- 1274: {region: 0x99, script: 0x21, flags: 0x0},
- 1275: {region: 0x131, script: 0x57, flags: 0x0},
- 1276: {region: 0x165, script: 0x57, flags: 0x0},
- 1277: {region: 0x9c, script: 0x8a, flags: 0x0},
- 1278: {region: 0x165, script: 0x57, flags: 0x0},
- 1279: {region: 0x15e, script: 0xc2, flags: 0x0},
- 1280: {region: 0x165, script: 0x57, flags: 0x0},
- 1281: {region: 0x165, script: 0x57, flags: 0x0},
- 1282: {region: 0xdb, script: 0x21, flags: 0x0},
- 1283: {region: 0x165, script: 0x57, flags: 0x0},
- 1284: {region: 0x165, script: 0x57, flags: 0x0},
- 1285: {region: 0xd1, script: 0x57, flags: 0x0},
- 1286: {region: 0x75, script: 0x57, flags: 0x0},
- 1287: {region: 0x165, script: 0x57, flags: 0x0},
- 1288: {region: 0x165, script: 0x57, flags: 0x0},
- 1289: {region: 0x52, script: 0x57, flags: 0x0},
- 1290: {region: 0x165, script: 0x57, flags: 0x0},
- 1291: {region: 0x165, script: 0x57, flags: 0x0},
- 1292: {region: 0x165, script: 0x57, flags: 0x0},
- 1293: {region: 0x52, script: 0x57, flags: 0x0},
- 1294: {region: 0x165, script: 0x57, flags: 0x0},
- 1295: {region: 0x165, script: 0x57, flags: 0x0},
- 1296: {region: 0x165, script: 0x57, flags: 0x0},
- 1297: {region: 0x165, script: 0x57, flags: 0x0},
- 1298: {region: 0x1, script: 0x3b, flags: 0x0},
- 1299: {region: 0x165, script: 0x57, flags: 0x0},
- 1300: {region: 0x165, script: 0x57, flags: 0x0},
- 1301: {region: 0x165, script: 0x57, flags: 0x0},
- 1302: {region: 0x165, script: 0x57, flags: 0x0},
- 1303: {region: 0x165, script: 0x57, flags: 0x0},
- 1304: {region: 0xd6, script: 0x57, flags: 0x0},
- 1305: {region: 0x165, script: 0x57, flags: 0x0},
- 1306: {region: 0x165, script: 0x57, flags: 0x0},
- 1307: {region: 0x165, script: 0x57, flags: 0x0},
- 1308: {region: 0x41, script: 0x57, flags: 0x0},
- 1309: {region: 0x165, script: 0x57, flags: 0x0},
- 1310: {region: 0xcf, script: 0x57, flags: 0x0},
+ 1265: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1266: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1267: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1268: {region: 0x12b, script: 0x62, flags: 0x0},
+ 1269: {region: 0x12b, script: 0x63, flags: 0x0},
+ 1270: {region: 0x7d, script: 0x2e, flags: 0x0},
+ 1271: {region: 0x53, script: 0x67, flags: 0x0},
+ 1272: {region: 0x10b, script: 0x6c, flags: 0x0},
+ 1273: {region: 0x108, script: 0x77, flags: 0x0},
+ 1274: {region: 0x99, script: 0x22, flags: 0x0},
+ 1275: {region: 0x131, script: 0x5a, flags: 0x0},
+ 1276: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1277: {region: 0x9c, script: 0x8e, flags: 0x0},
+ 1278: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1279: {region: 0x15e, script: 0xc7, flags: 0x0},
+ 1280: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1281: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1282: {region: 0xdb, script: 0x22, flags: 0x0},
+ 1283: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1284: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1285: {region: 0xd1, script: 0x5a, flags: 0x0},
+ 1286: {region: 0x75, script: 0x5a, flags: 0x0},
+ 1287: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1288: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1289: {region: 0x52, script: 0x5a, flags: 0x0},
+ 1290: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1291: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1292: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1293: {region: 0x52, script: 0x5a, flags: 0x0},
+ 1294: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1295: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1296: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1297: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1298: {region: 0x1, script: 0x3e, flags: 0x0},
+ 1299: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1300: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1301: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1302: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1303: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1304: {region: 0xd6, script: 0x5a, flags: 0x0},
+ 1305: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1306: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1307: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1308: {region: 0x41, script: 0x5a, flags: 0x0},
+ 1309: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1310: {region: 0xcf, script: 0x5a, flags: 0x0},
1311: {region: 0x4a, script: 0x3, flags: 0x1},
- 1312: {region: 0x165, script: 0x57, flags: 0x0},
- 1313: {region: 0x165, script: 0x57, flags: 0x0},
- 1314: {region: 0x165, script: 0x57, flags: 0x0},
- 1315: {region: 0x53, script: 0x57, flags: 0x0},
- 1316: {region: 0x10b, script: 0x57, flags: 0x0},
+ 1312: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1313: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1314: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1315: {region: 0x53, script: 0x5a, flags: 0x0},
+ 1316: {region: 0x10b, script: 0x5a, flags: 0x0},
1318: {region: 0xa8, script: 0x5, flags: 0x0},
- 1319: {region: 0xd9, script: 0x57, flags: 0x0},
- 1320: {region: 0xba, script: 0xdc, flags: 0x0},
+ 1319: {region: 0xd9, script: 0x5a, flags: 0x0},
+ 1320: {region: 0xba, script: 0xe3, flags: 0x0},
1321: {region: 0x4d, script: 0x14, flags: 0x1},
- 1322: {region: 0x53, script: 0x79, flags: 0x0},
- 1323: {region: 0x165, script: 0x57, flags: 0x0},
- 1324: {region: 0x122, script: 0x57, flags: 0x0},
- 1325: {region: 0xd0, script: 0x57, flags: 0x0},
- 1326: {region: 0x165, script: 0x57, flags: 0x0},
- 1327: {region: 0x161, script: 0x57, flags: 0x0},
- 1329: {region: 0x12b, script: 0x57, flags: 0x0},
+ 1322: {region: 0x53, script: 0x7d, flags: 0x0},
+ 1323: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1324: {region: 0x122, script: 0x5a, flags: 0x0},
+ 1325: {region: 0xd0, script: 0x5a, flags: 0x0},
+ 1326: {region: 0x165, script: 0x5a, flags: 0x0},
+ 1327: {region: 0x161, script: 0x5a, flags: 0x0},
+ 1329: {region: 0x12b, script: 0x5a, flags: 0x0},
}
// likelyLangList holds lists info associated with likelyLang.
// Size: 388 bytes, 97 elements
var likelyLangList = [97]likelyScriptRegion{
0: {region: 0x9c, script: 0x7, flags: 0x0},
- 1: {region: 0xa1, script: 0x74, flags: 0x2},
- 2: {region: 0x11c, script: 0x80, flags: 0x2},
- 3: {region: 0x32, script: 0x57, flags: 0x0},
+ 1: {region: 0xa1, script: 0x78, flags: 0x2},
+ 2: {region: 0x11c, script: 0x84, flags: 0x2},
+ 3: {region: 0x32, script: 0x5a, flags: 0x0},
4: {region: 0x9b, script: 0x5, flags: 0x4},
5: {region: 0x9c, script: 0x5, flags: 0x4},
- 6: {region: 0x106, script: 0x1f, flags: 0x4},
+ 6: {region: 0x106, script: 0x20, flags: 0x4},
7: {region: 0x9c, script: 0x5, flags: 0x2},
- 8: {region: 0x106, script: 0x1f, flags: 0x0},
- 9: {region: 0x38, script: 0x2c, flags: 0x2},
- 10: {region: 0x135, script: 0x57, flags: 0x0},
- 11: {region: 0x7b, script: 0xc5, flags: 0x2},
- 12: {region: 0x114, script: 0x57, flags: 0x0},
+ 8: {region: 0x106, script: 0x20, flags: 0x0},
+ 9: {region: 0x38, script: 0x2f, flags: 0x2},
+ 10: {region: 0x135, script: 0x5a, flags: 0x0},
+ 11: {region: 0x7b, script: 0xca, flags: 0x2},
+ 12: {region: 0x114, script: 0x5a, flags: 0x0},
13: {region: 0x84, script: 0x1, flags: 0x2},
- 14: {region: 0x5d, script: 0x1e, flags: 0x0},
- 15: {region: 0x87, script: 0x5c, flags: 0x2},
- 16: {region: 0xd6, script: 0x57, flags: 0x0},
+ 14: {region: 0x5d, script: 0x1f, flags: 0x0},
+ 15: {region: 0x87, script: 0x5f, flags: 0x2},
+ 16: {region: 0xd6, script: 0x5a, flags: 0x0},
17: {region: 0x52, script: 0x5, flags: 0x4},
18: {region: 0x10b, script: 0x5, flags: 0x4},
- 19: {region: 0xae, script: 0x1f, flags: 0x0},
+ 19: {region: 0xae, script: 0x20, flags: 0x0},
20: {region: 0x24, script: 0x5, flags: 0x4},
21: {region: 0x53, script: 0x5, flags: 0x4},
22: {region: 0x9c, script: 0x5, flags: 0x4},
23: {region: 0xc5, script: 0x5, flags: 0x4},
24: {region: 0x53, script: 0x5, flags: 0x2},
- 25: {region: 0x12b, script: 0x57, flags: 0x0},
+ 25: {region: 0x12b, script: 0x5a, flags: 0x0},
26: {region: 0xb0, script: 0x5, flags: 0x4},
27: {region: 0x9b, script: 0x5, flags: 0x2},
- 28: {region: 0xa5, script: 0x1f, flags: 0x0},
+ 28: {region: 0xa5, script: 0x20, flags: 0x0},
29: {region: 0x53, script: 0x5, flags: 0x4},
- 30: {region: 0x12b, script: 0x57, flags: 0x4},
+ 30: {region: 0x12b, script: 0x5a, flags: 0x4},
31: {region: 0x53, script: 0x5, flags: 0x2},
- 32: {region: 0x12b, script: 0x57, flags: 0x2},
- 33: {region: 0xdb, script: 0x21, flags: 0x0},
- 34: {region: 0x99, script: 0x5a, flags: 0x2},
- 35: {region: 0x83, script: 0x57, flags: 0x0},
- 36: {region: 0x84, script: 0x78, flags: 0x4},
- 37: {region: 0x84, script: 0x78, flags: 0x2},
- 38: {region: 0xc5, script: 0x1f, flags: 0x0},
- 39: {region: 0x53, script: 0x6d, flags: 0x4},
- 40: {region: 0x53, script: 0x6d, flags: 0x2},
- 41: {region: 0xd0, script: 0x57, flags: 0x0},
+ 32: {region: 0x12b, script: 0x5a, flags: 0x2},
+ 33: {region: 0xdb, script: 0x22, flags: 0x0},
+ 34: {region: 0x99, script: 0x5d, flags: 0x2},
+ 35: {region: 0x83, script: 0x5a, flags: 0x0},
+ 36: {region: 0x84, script: 0x7c, flags: 0x4},
+ 37: {region: 0x84, script: 0x7c, flags: 0x2},
+ 38: {region: 0xc5, script: 0x20, flags: 0x0},
+ 39: {region: 0x53, script: 0x70, flags: 0x4},
+ 40: {region: 0x53, script: 0x70, flags: 0x2},
+ 41: {region: 0xd0, script: 0x5a, flags: 0x0},
42: {region: 0x4a, script: 0x5, flags: 0x4},
43: {region: 0x95, script: 0x5, flags: 0x4},
- 44: {region: 0x99, script: 0x33, flags: 0x0},
+ 44: {region: 0x99, script: 0x36, flags: 0x0},
45: {region: 0xe8, script: 0x5, flags: 0x4},
46: {region: 0xe8, script: 0x5, flags: 0x2},
- 47: {region: 0x9c, script: 0x84, flags: 0x0},
- 48: {region: 0x53, script: 0x85, flags: 0x2},
- 49: {region: 0xba, script: 0xdc, flags: 0x0},
- 50: {region: 0xd9, script: 0x57, flags: 0x4},
+ 47: {region: 0x9c, script: 0x88, flags: 0x0},
+ 48: {region: 0x53, script: 0x89, flags: 0x2},
+ 49: {region: 0xba, script: 0xe3, flags: 0x0},
+ 50: {region: 0xd9, script: 0x5a, flags: 0x4},
51: {region: 0xe8, script: 0x5, flags: 0x0},
- 52: {region: 0x99, script: 0x21, flags: 0x2},
- 53: {region: 0x99, script: 0x4c, flags: 0x2},
- 54: {region: 0x99, script: 0xc9, flags: 0x2},
- 55: {region: 0x105, script: 0x1f, flags: 0x0},
- 56: {region: 0xbd, script: 0x57, flags: 0x4},
- 57: {region: 0x104, script: 0x57, flags: 0x4},
- 58: {region: 0x106, script: 0x57, flags: 0x4},
- 59: {region: 0x12b, script: 0x57, flags: 0x4},
- 60: {region: 0x124, script: 0x1f, flags: 0x0},
+ 52: {region: 0x99, script: 0x22, flags: 0x2},
+ 53: {region: 0x99, script: 0x4f, flags: 0x2},
+ 54: {region: 0x99, script: 0xce, flags: 0x2},
+ 55: {region: 0x105, script: 0x20, flags: 0x0},
+ 56: {region: 0xbd, script: 0x5a, flags: 0x4},
+ 57: {region: 0x104, script: 0x5a, flags: 0x4},
+ 58: {region: 0x106, script: 0x5a, flags: 0x4},
+ 59: {region: 0x12b, script: 0x5a, flags: 0x4},
+ 60: {region: 0x124, script: 0x20, flags: 0x0},
61: {region: 0xe8, script: 0x5, flags: 0x4},
62: {region: 0xe8, script: 0x5, flags: 0x2},
63: {region: 0x53, script: 0x5, flags: 0x0},
- 64: {region: 0xae, script: 0x1f, flags: 0x4},
- 65: {region: 0xc5, script: 0x1f, flags: 0x4},
- 66: {region: 0xae, script: 0x1f, flags: 0x2},
+ 64: {region: 0xae, script: 0x20, flags: 0x4},
+ 65: {region: 0xc5, script: 0x20, flags: 0x4},
+ 66: {region: 0xae, script: 0x20, flags: 0x2},
67: {region: 0x99, script: 0xe, flags: 0x0},
- 68: {region: 0xdb, script: 0x21, flags: 0x4},
- 69: {region: 0xdb, script: 0x21, flags: 0x2},
- 70: {region: 0x137, script: 0x57, flags: 0x0},
+ 68: {region: 0xdb, script: 0x22, flags: 0x4},
+ 69: {region: 0xdb, script: 0x22, flags: 0x2},
+ 70: {region: 0x137, script: 0x5a, flags: 0x0},
71: {region: 0x24, script: 0x5, flags: 0x4},
- 72: {region: 0x53, script: 0x1f, flags: 0x4},
+ 72: {region: 0x53, script: 0x20, flags: 0x4},
73: {region: 0x24, script: 0x5, flags: 0x2},
- 74: {region: 0x8d, script: 0x39, flags: 0x0},
- 75: {region: 0x53, script: 0x38, flags: 0x4},
- 76: {region: 0x53, script: 0x38, flags: 0x2},
- 77: {region: 0x53, script: 0x38, flags: 0x0},
- 78: {region: 0x2f, script: 0x39, flags: 0x4},
- 79: {region: 0x3e, script: 0x39, flags: 0x4},
- 80: {region: 0x7b, script: 0x39, flags: 0x4},
- 81: {region: 0x7e, script: 0x39, flags: 0x4},
- 82: {region: 0x8d, script: 0x39, flags: 0x4},
- 83: {region: 0x95, script: 0x39, flags: 0x4},
- 84: {region: 0xc6, script: 0x39, flags: 0x4},
- 85: {region: 0xd0, script: 0x39, flags: 0x4},
- 86: {region: 0xe2, script: 0x39, flags: 0x4},
- 87: {region: 0xe5, script: 0x39, flags: 0x4},
- 88: {region: 0xe7, script: 0x39, flags: 0x4},
- 89: {region: 0x116, script: 0x39, flags: 0x4},
- 90: {region: 0x123, script: 0x39, flags: 0x4},
- 91: {region: 0x12e, script: 0x39, flags: 0x4},
- 92: {region: 0x135, script: 0x39, flags: 0x4},
- 93: {region: 0x13e, script: 0x39, flags: 0x4},
+ 74: {region: 0x8d, 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: 0x7b, script: 0x3c, flags: 0x4},
+ 81: {region: 0x7e, script: 0x3c, flags: 0x4},
+ 82: {region: 0x8d, script: 0x3c, flags: 0x4},
+ 83: {region: 0x95, script: 0x3c, flags: 0x4},
+ 84: {region: 0xc6, script: 0x3c, flags: 0x4},
+ 85: {region: 0xd0, script: 0x3c, flags: 0x4},
+ 86: {region: 0xe2, script: 0x3c, flags: 0x4},
+ 87: {region: 0xe5, script: 0x3c, flags: 0x4},
+ 88: {region: 0xe7, script: 0x3c, flags: 0x4},
+ 89: {region: 0x116, script: 0x3c, flags: 0x4},
+ 90: {region: 0x123, script: 0x3c, flags: 0x4},
+ 91: {region: 0x12e, script: 0x3c, flags: 0x4},
+ 92: {region: 0x135, script: 0x3c, flags: 0x4},
+ 93: {region: 0x13e, script: 0x3c, flags: 0x4},
94: {region: 0x12e, script: 0x11, flags: 0x2},
- 95: {region: 0x12e, script: 0x34, flags: 0x2},
- 96: {region: 0x12e, script: 0x39, flags: 0x2},
+ 95: {region: 0x12e, script: 0x37, flags: 0x2},
+ 96: {region: 0x12e, script: 0x3c, flags: 0x2},
}
type likelyLangScript struct {
@@ -2948,304 +2981,304 @@ type likelyLangScript struct {
// TODO: exclude containers and user-definable regions from the list.
// Size: 1432 bytes, 358 elements
var likelyRegion = [358]likelyLangScript{
- 34: {lang: 0xd7, script: 0x57, flags: 0x0},
+ 34: {lang: 0xd7, script: 0x5a, 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: 0x57, flags: 0x0},
- 43: {lang: 0x0, script: 0x57, flags: 0x0},
- 44: {lang: 0x13e, script: 0x57, flags: 0x0},
- 45: {lang: 0x41b, script: 0x57, flags: 0x0},
- 46: {lang: 0x10d, script: 0x57, flags: 0x0},
- 48: {lang: 0x367, script: 0x57, flags: 0x0},
- 49: {lang: 0x444, script: 0x57, flags: 0x0},
- 50: {lang: 0x58, script: 0x57, flags: 0x0},
+ 42: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 43: {lang: 0x0, script: 0x5a, flags: 0x0},
+ 44: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 45: {lang: 0x41b, script: 0x5a, flags: 0x0},
+ 46: {lang: 0x10d, script: 0x5a, flags: 0x0},
+ 48: {lang: 0x367, script: 0x5a, flags: 0x0},
+ 49: {lang: 0x444, script: 0x5a, flags: 0x0},
+ 50: {lang: 0x58, script: 0x5a, flags: 0x0},
51: {lang: 0x6, script: 0x2, flags: 0x1},
53: {lang: 0xa5, script: 0xe, flags: 0x0},
- 54: {lang: 0x367, script: 0x57, flags: 0x0},
- 55: {lang: 0x15e, script: 0x57, flags: 0x0},
- 56: {lang: 0x7e, script: 0x1f, flags: 0x0},
+ 54: {lang: 0x367, script: 0x5a, flags: 0x0},
+ 55: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 56: {lang: 0x7e, script: 0x20, flags: 0x0},
57: {lang: 0x3a, script: 0x5, flags: 0x0},
- 58: {lang: 0x3d9, script: 0x57, flags: 0x0},
- 59: {lang: 0x15e, script: 0x57, flags: 0x0},
- 60: {lang: 0x15e, script: 0x57, flags: 0x0},
- 62: {lang: 0x31f, script: 0x57, flags: 0x0},
- 63: {lang: 0x13e, script: 0x57, flags: 0x0},
- 64: {lang: 0x3a1, script: 0x57, flags: 0x0},
- 65: {lang: 0x3c0, script: 0x57, flags: 0x0},
+ 58: {lang: 0x3d9, script: 0x5a, flags: 0x0},
+ 59: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 60: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 62: {lang: 0x31f, script: 0x5a, flags: 0x0},
+ 63: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 64: {lang: 0x3a1, script: 0x5a, flags: 0x0},
+ 65: {lang: 0x3c0, script: 0x5a, flags: 0x0},
67: {lang: 0x8, script: 0x2, flags: 0x1},
- 69: {lang: 0x0, script: 0x57, flags: 0x0},
- 71: {lang: 0x71, script: 0x1f, flags: 0x0},
- 73: {lang: 0x512, script: 0x3b, flags: 0x2},
+ 69: {lang: 0x0, script: 0x5a, 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: 0x57, flags: 0x0},
- 76: {lang: 0x15e, script: 0x57, flags: 0x0},
- 77: {lang: 0x15e, script: 0x57, flags: 0x0},
- 78: {lang: 0x10d, script: 0x57, flags: 0x0},
- 79: {lang: 0x15e, script: 0x57, flags: 0x0},
- 81: {lang: 0x13e, script: 0x57, flags: 0x0},
- 82: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 75: {lang: 0x445, script: 0x5a, flags: 0x0},
+ 76: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 77: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 78: {lang: 0x10d, script: 0x5a, flags: 0x0},
+ 79: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 81: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 82: {lang: 0x15e, script: 0x5a, flags: 0x0},
83: {lang: 0xa, script: 0x4, flags: 0x1},
- 84: {lang: 0x13e, script: 0x57, flags: 0x0},
- 85: {lang: 0x0, script: 0x57, flags: 0x0},
- 86: {lang: 0x13e, script: 0x57, flags: 0x0},
- 89: {lang: 0x13e, script: 0x57, flags: 0x0},
- 90: {lang: 0x3c0, script: 0x57, flags: 0x0},
- 91: {lang: 0x3a1, script: 0x57, flags: 0x0},
+ 84: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 85: {lang: 0x0, script: 0x5a, flags: 0x0},
+ 86: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 89: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 90: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 91: {lang: 0x3a1, script: 0x5a, flags: 0x0},
93: {lang: 0xe, script: 0x2, flags: 0x1},
- 94: {lang: 0xfa, script: 0x57, flags: 0x0},
- 96: {lang: 0x10d, script: 0x57, flags: 0x0},
- 98: {lang: 0x1, script: 0x57, flags: 0x0},
- 99: {lang: 0x101, script: 0x57, flags: 0x0},
- 101: {lang: 0x13e, script: 0x57, flags: 0x0},
+ 94: {lang: 0xfa, script: 0x5a, flags: 0x0},
+ 96: {lang: 0x10d, script: 0x5a, flags: 0x0},
+ 98: {lang: 0x1, script: 0x5a, flags: 0x0},
+ 99: {lang: 0x101, script: 0x5a, flags: 0x0},
+ 101: {lang: 0x13e, script: 0x5a, flags: 0x0},
103: {lang: 0x10, script: 0x2, flags: 0x1},
- 104: {lang: 0x13e, script: 0x57, flags: 0x0},
- 105: {lang: 0x13e, script: 0x57, flags: 0x0},
- 106: {lang: 0x140, script: 0x57, flags: 0x0},
+ 104: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 105: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 106: {lang: 0x140, script: 0x5a, flags: 0x0},
107: {lang: 0x3a, script: 0x5, flags: 0x0},
108: {lang: 0x3a, script: 0x5, flags: 0x0},
- 109: {lang: 0x46f, script: 0x29, flags: 0x0},
- 110: {lang: 0x13e, script: 0x57, flags: 0x0},
+ 109: {lang: 0x46f, script: 0x2c, flags: 0x0},
+ 110: {lang: 0x13e, script: 0x5a, flags: 0x0},
111: {lang: 0x12, script: 0x2, flags: 0x1},
- 113: {lang: 0x10d, script: 0x57, flags: 0x0},
- 114: {lang: 0x151, script: 0x57, flags: 0x0},
- 115: {lang: 0x1c0, script: 0x21, flags: 0x2},
- 118: {lang: 0x158, script: 0x57, flags: 0x0},
- 120: {lang: 0x15e, script: 0x57, flags: 0x0},
- 122: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 113: {lang: 0x10d, script: 0x5a, flags: 0x0},
+ 114: {lang: 0x151, script: 0x5a, flags: 0x0},
+ 115: {lang: 0x1c0, script: 0x22, flags: 0x2},
+ 118: {lang: 0x158, script: 0x5a, flags: 0x0},
+ 120: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 122: {lang: 0x15e, script: 0x5a, flags: 0x0},
123: {lang: 0x14, script: 0x2, flags: 0x1},
125: {lang: 0x16, script: 0x3, flags: 0x1},
- 126: {lang: 0x15e, script: 0x57, flags: 0x0},
- 128: {lang: 0x21, script: 0x57, flags: 0x0},
- 130: {lang: 0x245, script: 0x57, flags: 0x0},
- 132: {lang: 0x15e, script: 0x57, flags: 0x0},
- 133: {lang: 0x15e, script: 0x57, flags: 0x0},
- 134: {lang: 0x13e, script: 0x57, flags: 0x0},
+ 126: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 128: {lang: 0x21, script: 0x5a, flags: 0x0},
+ 130: {lang: 0x245, script: 0x5a, flags: 0x0},
+ 132: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 133: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 134: {lang: 0x13e, script: 0x5a, flags: 0x0},
135: {lang: 0x19, script: 0x2, flags: 0x1},
- 136: {lang: 0x0, script: 0x57, flags: 0x0},
- 137: {lang: 0x13e, script: 0x57, flags: 0x0},
- 139: {lang: 0x3c0, script: 0x57, flags: 0x0},
- 141: {lang: 0x529, script: 0x39, flags: 0x0},
- 142: {lang: 0x0, script: 0x57, flags: 0x0},
- 143: {lang: 0x13e, script: 0x57, flags: 0x0},
- 144: {lang: 0x1d1, script: 0x57, flags: 0x0},
- 145: {lang: 0x1d4, script: 0x57, flags: 0x0},
- 146: {lang: 0x1d5, script: 0x57, flags: 0x0},
- 148: {lang: 0x13e, script: 0x57, flags: 0x0},
+ 136: {lang: 0x0, script: 0x5a, flags: 0x0},
+ 137: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 139: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 141: {lang: 0x529, script: 0x3c, flags: 0x0},
+ 142: {lang: 0x0, script: 0x5a, flags: 0x0},
+ 143: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 144: {lang: 0x1d1, script: 0x5a, flags: 0x0},
+ 145: {lang: 0x1d4, script: 0x5a, flags: 0x0},
+ 146: {lang: 0x1d5, script: 0x5a, flags: 0x0},
+ 148: {lang: 0x13e, script: 0x5a, flags: 0x0},
149: {lang: 0x1b, script: 0x2, flags: 0x1},
- 151: {lang: 0x1bc, script: 0x3b, flags: 0x0},
+ 151: {lang: 0x1bc, script: 0x3e, flags: 0x0},
153: {lang: 0x1d, script: 0x3, flags: 0x1},
155: {lang: 0x3a, script: 0x5, flags: 0x0},
156: {lang: 0x20, script: 0x2, flags: 0x1},
- 157: {lang: 0x1f8, script: 0x57, flags: 0x0},
- 158: {lang: 0x1f9, script: 0x57, flags: 0x0},
+ 157: {lang: 0x1f8, script: 0x5a, flags: 0x0},
+ 158: {lang: 0x1f9, script: 0x5a, flags: 0x0},
161: {lang: 0x3a, script: 0x5, flags: 0x0},
- 162: {lang: 0x200, script: 0x46, flags: 0x0},
- 164: {lang: 0x445, script: 0x57, flags: 0x0},
- 165: {lang: 0x28a, script: 0x1f, flags: 0x0},
+ 162: {lang: 0x200, script: 0x49, flags: 0x0},
+ 164: {lang: 0x445, script: 0x5a, flags: 0x0},
+ 165: {lang: 0x28a, script: 0x20, flags: 0x0},
166: {lang: 0x22, script: 0x3, flags: 0x1},
168: {lang: 0x25, script: 0x2, flags: 0x1},
- 170: {lang: 0x254, script: 0x50, flags: 0x0},
- 171: {lang: 0x254, script: 0x50, flags: 0x0},
+ 170: {lang: 0x254, script: 0x53, flags: 0x0},
+ 171: {lang: 0x254, script: 0x53, flags: 0x0},
172: {lang: 0x3a, script: 0x5, flags: 0x0},
- 174: {lang: 0x3e2, script: 0x1f, flags: 0x0},
+ 174: {lang: 0x3e2, script: 0x20, flags: 0x0},
175: {lang: 0x27, script: 0x2, flags: 0x1},
176: {lang: 0x3a, script: 0x5, flags: 0x0},
- 178: {lang: 0x10d, script: 0x57, flags: 0x0},
- 179: {lang: 0x40c, script: 0xca, flags: 0x0},
- 181: {lang: 0x43b, script: 0x57, flags: 0x0},
- 182: {lang: 0x2c0, script: 0x57, flags: 0x0},
- 183: {lang: 0x15e, script: 0x57, flags: 0x0},
- 184: {lang: 0x2c7, script: 0x57, flags: 0x0},
+ 178: {lang: 0x10d, script: 0x5a, flags: 0x0},
+ 179: {lang: 0x40c, script: 0xcf, flags: 0x0},
+ 181: {lang: 0x43b, script: 0x5a, flags: 0x0},
+ 182: {lang: 0x2c0, script: 0x5a, flags: 0x0},
+ 183: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 184: {lang: 0x2c7, script: 0x5a, flags: 0x0},
185: {lang: 0x3a, script: 0x5, flags: 0x0},
186: {lang: 0x29, script: 0x2, flags: 0x1},
- 187: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 187: {lang: 0x15e, script: 0x5a, flags: 0x0},
188: {lang: 0x2b, script: 0x2, flags: 0x1},
- 189: {lang: 0x432, script: 0x57, flags: 0x0},
- 190: {lang: 0x15e, script: 0x57, flags: 0x0},
- 191: {lang: 0x2f1, script: 0x57, flags: 0x0},
+ 189: {lang: 0x432, script: 0x5a, flags: 0x0},
+ 190: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 191: {lang: 0x2f1, script: 0x5a, flags: 0x0},
194: {lang: 0x2d, script: 0x2, flags: 0x1},
- 195: {lang: 0xa0, script: 0x57, flags: 0x0},
+ 195: {lang: 0xa0, script: 0x5a, flags: 0x0},
196: {lang: 0x2f, script: 0x2, flags: 0x1},
197: {lang: 0x31, script: 0x2, flags: 0x1},
198: {lang: 0x33, script: 0x2, flags: 0x1},
- 200: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 200: {lang: 0x15e, script: 0x5a, flags: 0x0},
201: {lang: 0x35, script: 0x2, flags: 0x1},
- 203: {lang: 0x320, script: 0x57, flags: 0x0},
+ 203: {lang: 0x320, script: 0x5a, flags: 0x0},
204: {lang: 0x37, script: 0x3, flags: 0x1},
- 205: {lang: 0x128, script: 0xde, flags: 0x0},
- 207: {lang: 0x13e, script: 0x57, flags: 0x0},
- 208: {lang: 0x31f, script: 0x57, flags: 0x0},
- 209: {lang: 0x3c0, script: 0x57, flags: 0x0},
- 210: {lang: 0x16, script: 0x57, flags: 0x0},
- 211: {lang: 0x15e, script: 0x57, flags: 0x0},
- 212: {lang: 0x1b4, script: 0x57, flags: 0x0},
+ 205: {lang: 0x128, script: 0xe5, flags: 0x0},
+ 207: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 208: {lang: 0x31f, script: 0x5a, flags: 0x0},
+ 209: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 210: {lang: 0x16, script: 0x5a, flags: 0x0},
+ 211: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 212: {lang: 0x1b4, script: 0x5a, flags: 0x0},
214: {lang: 0x1b4, script: 0x5, flags: 0x2},
- 216: {lang: 0x13e, script: 0x57, flags: 0x0},
- 217: {lang: 0x367, script: 0x57, flags: 0x0},
- 218: {lang: 0x347, script: 0x57, flags: 0x0},
- 219: {lang: 0x351, script: 0x21, flags: 0x0},
+ 216: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 217: {lang: 0x367, script: 0x5a, flags: 0x0},
+ 218: {lang: 0x347, script: 0x5a, flags: 0x0},
+ 219: {lang: 0x351, script: 0x22, flags: 0x0},
225: {lang: 0x3a, script: 0x5, flags: 0x0},
- 226: {lang: 0x13e, script: 0x57, flags: 0x0},
- 228: {lang: 0x13e, script: 0x57, flags: 0x0},
- 229: {lang: 0x15e, script: 0x57, flags: 0x0},
- 230: {lang: 0x486, script: 0x57, flags: 0x0},
- 231: {lang: 0x153, script: 0x57, flags: 0x0},
+ 226: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 228: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 229: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 230: {lang: 0x486, script: 0x5a, flags: 0x0},
+ 231: {lang: 0x153, script: 0x5a, flags: 0x0},
232: {lang: 0x3a, script: 0x3, flags: 0x1},
- 233: {lang: 0x3b3, script: 0x57, flags: 0x0},
- 234: {lang: 0x15e, script: 0x57, flags: 0x0},
- 236: {lang: 0x13e, script: 0x57, flags: 0x0},
+ 233: {lang: 0x3b3, script: 0x5a, flags: 0x0},
+ 234: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 236: {lang: 0x13e, script: 0x5a, flags: 0x0},
237: {lang: 0x3a, script: 0x5, flags: 0x0},
- 238: {lang: 0x3c0, script: 0x57, flags: 0x0},
- 240: {lang: 0x3a2, script: 0x57, flags: 0x0},
- 241: {lang: 0x194, script: 0x57, flags: 0x0},
+ 238: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 240: {lang: 0x3a2, script: 0x5a, flags: 0x0},
+ 241: {lang: 0x194, script: 0x5a, flags: 0x0},
243: {lang: 0x3a, script: 0x5, flags: 0x0},
- 258: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 258: {lang: 0x15e, script: 0x5a, flags: 0x0},
260: {lang: 0x3d, script: 0x2, flags: 0x1},
- 261: {lang: 0x432, script: 0x1f, flags: 0x0},
+ 261: {lang: 0x432, script: 0x20, flags: 0x0},
262: {lang: 0x3f, script: 0x2, flags: 0x1},
- 263: {lang: 0x3e5, script: 0x57, flags: 0x0},
+ 263: {lang: 0x3e5, script: 0x5a, flags: 0x0},
264: {lang: 0x3a, script: 0x5, flags: 0x0},
- 266: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 266: {lang: 0x15e, script: 0x5a, flags: 0x0},
267: {lang: 0x3a, script: 0x5, flags: 0x0},
268: {lang: 0x41, script: 0x2, flags: 0x1},
- 271: {lang: 0x416, script: 0x57, flags: 0x0},
- 272: {lang: 0x347, script: 0x57, flags: 0x0},
+ 271: {lang: 0x416, script: 0x5a, flags: 0x0},
+ 272: {lang: 0x347, script: 0x5a, flags: 0x0},
273: {lang: 0x43, script: 0x2, flags: 0x1},
- 275: {lang: 0x1f9, script: 0x57, flags: 0x0},
- 276: {lang: 0x15e, script: 0x57, flags: 0x0},
- 277: {lang: 0x429, script: 0x57, flags: 0x0},
- 278: {lang: 0x367, script: 0x57, flags: 0x0},
- 280: {lang: 0x3c0, script: 0x57, flags: 0x0},
- 282: {lang: 0x13e, script: 0x57, flags: 0x0},
+ 275: {lang: 0x1f9, script: 0x5a, flags: 0x0},
+ 276: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 277: {lang: 0x429, script: 0x5a, flags: 0x0},
+ 278: {lang: 0x367, script: 0x5a, flags: 0x0},
+ 280: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 282: {lang: 0x13e, script: 0x5a, flags: 0x0},
284: {lang: 0x45, script: 0x2, flags: 0x1},
- 288: {lang: 0x15e, script: 0x57, flags: 0x0},
- 289: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 288: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 289: {lang: 0x15e, script: 0x5a, flags: 0x0},
290: {lang: 0x47, script: 0x2, flags: 0x1},
291: {lang: 0x49, script: 0x3, flags: 0x1},
292: {lang: 0x4c, script: 0x2, flags: 0x1},
- 293: {lang: 0x477, script: 0x57, flags: 0x0},
- 294: {lang: 0x3c0, script: 0x57, flags: 0x0},
- 295: {lang: 0x476, script: 0x57, flags: 0x0},
+ 293: {lang: 0x477, script: 0x5a, flags: 0x0},
+ 294: {lang: 0x3c0, script: 0x5a, flags: 0x0},
+ 295: {lang: 0x476, script: 0x5a, flags: 0x0},
296: {lang: 0x4e, script: 0x2, flags: 0x1},
- 297: {lang: 0x482, script: 0x57, flags: 0x0},
+ 297: {lang: 0x482, script: 0x5a, flags: 0x0},
299: {lang: 0x50, script: 0x4, flags: 0x1},
- 301: {lang: 0x4a0, script: 0x57, flags: 0x0},
+ 301: {lang: 0x4a0, script: 0x5a, flags: 0x0},
302: {lang: 0x54, script: 0x2, flags: 0x1},
- 303: {lang: 0x445, script: 0x57, flags: 0x0},
+ 303: {lang: 0x445, script: 0x5a, flags: 0x0},
304: {lang: 0x56, script: 0x3, flags: 0x1},
- 305: {lang: 0x445, script: 0x57, flags: 0x0},
- 309: {lang: 0x512, script: 0x3b, flags: 0x2},
- 310: {lang: 0x13e, script: 0x57, flags: 0x0},
- 311: {lang: 0x4bc, script: 0x57, flags: 0x0},
- 312: {lang: 0x1f9, script: 0x57, flags: 0x0},
- 315: {lang: 0x13e, script: 0x57, flags: 0x0},
- 318: {lang: 0x4c3, script: 0x57, flags: 0x0},
- 319: {lang: 0x8a, script: 0x57, flags: 0x0},
- 320: {lang: 0x15e, script: 0x57, flags: 0x0},
- 322: {lang: 0x41b, script: 0x57, flags: 0x0},
+ 305: {lang: 0x445, script: 0x5a, flags: 0x0},
+ 309: {lang: 0x512, script: 0x3e, flags: 0x2},
+ 310: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 311: {lang: 0x4bc, script: 0x5a, flags: 0x0},
+ 312: {lang: 0x1f9, script: 0x5a, flags: 0x0},
+ 315: {lang: 0x13e, script: 0x5a, flags: 0x0},
+ 318: {lang: 0x4c3, script: 0x5a, flags: 0x0},
+ 319: {lang: 0x8a, script: 0x5a, flags: 0x0},
+ 320: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 322: {lang: 0x41b, script: 0x5a, flags: 0x0},
333: {lang: 0x59, script: 0x2, flags: 0x1},
350: {lang: 0x3a, script: 0x5, flags: 0x0},
351: {lang: 0x5b, script: 0x2, flags: 0x1},
- 356: {lang: 0x423, script: 0x57, flags: 0x0},
+ 356: {lang: 0x423, script: 0x5a, flags: 0x0},
}
// likelyRegionList holds lists info associated with likelyRegion.
// Size: 372 bytes, 93 elements
var likelyRegionList = [93]likelyLangScript{
0: {lang: 0x148, script: 0x5, flags: 0x0},
- 1: {lang: 0x476, script: 0x57, flags: 0x0},
- 2: {lang: 0x431, script: 0x57, flags: 0x0},
- 3: {lang: 0x2ff, script: 0x1f, flags: 0x0},
+ 1: {lang: 0x476, script: 0x5a, flags: 0x0},
+ 2: {lang: 0x431, script: 0x5a, flags: 0x0},
+ 3: {lang: 0x2ff, script: 0x20, flags: 0x0},
4: {lang: 0x1d7, script: 0x8, flags: 0x0},
- 5: {lang: 0x274, script: 0x57, flags: 0x0},
- 6: {lang: 0xb7, script: 0x57, flags: 0x0},
- 7: {lang: 0x432, script: 0x1f, flags: 0x0},
- 8: {lang: 0x12d, script: 0xe0, flags: 0x0},
- 9: {lang: 0x351, script: 0x21, flags: 0x0},
- 10: {lang: 0x529, script: 0x38, flags: 0x0},
+ 5: {lang: 0x274, script: 0x5a, flags: 0x0},
+ 6: {lang: 0xb7, script: 0x5a, flags: 0x0},
+ 7: {lang: 0x432, script: 0x20, flags: 0x0},
+ 8: {lang: 0x12d, script: 0xe7, 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: 0x57, flags: 0x0},
- 13: {lang: 0x29a, script: 0xdf, flags: 0x0},
- 14: {lang: 0x136, script: 0x31, flags: 0x0},
- 15: {lang: 0x48a, script: 0x57, flags: 0x0},
+ 12: {lang: 0x523, script: 0x5a, flags: 0x0},
+ 13: {lang: 0x29a, script: 0xe6, flags: 0x0},
+ 14: {lang: 0x136, script: 0x34, flags: 0x0},
+ 15: {lang: 0x48a, script: 0x5a, flags: 0x0},
16: {lang: 0x3a, script: 0x5, flags: 0x0},
- 17: {lang: 0x15e, script: 0x57, flags: 0x0},
- 18: {lang: 0x27, script: 0x29, flags: 0x0},
- 19: {lang: 0x139, script: 0x57, flags: 0x0},
+ 17: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 18: {lang: 0x27, script: 0x2c, flags: 0x0},
+ 19: {lang: 0x139, script: 0x5a, flags: 0x0},
20: {lang: 0x26a, script: 0x5, flags: 0x2},
- 21: {lang: 0x512, script: 0x3b, flags: 0x2},
- 22: {lang: 0x210, script: 0x2b, flags: 0x0},
- 23: {lang: 0x5, script: 0x1f, flags: 0x0},
- 24: {lang: 0x274, script: 0x57, flags: 0x0},
- 25: {lang: 0x136, script: 0x31, flags: 0x0},
- 26: {lang: 0x2ff, script: 0x1f, flags: 0x0},
- 27: {lang: 0x1e1, script: 0x57, flags: 0x0},
+ 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: 0x5a, flags: 0x0},
+ 25: {lang: 0x136, script: 0x34, flags: 0x0},
+ 26: {lang: 0x2ff, script: 0x20, flags: 0x0},
+ 27: {lang: 0x1e1, script: 0x5a, flags: 0x0},
28: {lang: 0x31f, script: 0x5, flags: 0x0},
- 29: {lang: 0x1be, script: 0x21, flags: 0x0},
+ 29: {lang: 0x1be, script: 0x22, flags: 0x0},
30: {lang: 0x4b4, script: 0x5, flags: 0x0},
- 31: {lang: 0x236, script: 0x72, flags: 0x0},
+ 31: {lang: 0x236, script: 0x75, flags: 0x0},
32: {lang: 0x148, script: 0x5, flags: 0x0},
- 33: {lang: 0x476, script: 0x57, flags: 0x0},
- 34: {lang: 0x24a, script: 0x4b, flags: 0x0},
+ 33: {lang: 0x476, script: 0x5a, flags: 0x0},
+ 34: {lang: 0x24a, script: 0x4e, flags: 0x0},
35: {lang: 0xe6, script: 0x5, flags: 0x0},
- 36: {lang: 0x226, script: 0xdf, flags: 0x0},
+ 36: {lang: 0x226, script: 0xe6, flags: 0x0},
37: {lang: 0x3a, script: 0x5, flags: 0x0},
- 38: {lang: 0x15e, script: 0x57, flags: 0x0},
- 39: {lang: 0x2b8, script: 0x54, flags: 0x0},
- 40: {lang: 0x226, script: 0xdf, flags: 0x0},
+ 38: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 39: {lang: 0x2b8, script: 0x57, flags: 0x0},
+ 40: {lang: 0x226, script: 0xe6, flags: 0x0},
41: {lang: 0x3a, script: 0x5, flags: 0x0},
- 42: {lang: 0x15e, script: 0x57, flags: 0x0},
- 43: {lang: 0x3dc, script: 0x57, flags: 0x0},
- 44: {lang: 0x4ae, script: 0x1f, flags: 0x0},
- 45: {lang: 0x2ff, script: 0x1f, flags: 0x0},
- 46: {lang: 0x431, script: 0x57, flags: 0x0},
- 47: {lang: 0x331, script: 0x72, flags: 0x0},
- 48: {lang: 0x213, script: 0x57, flags: 0x0},
- 49: {lang: 0x30b, script: 0x1f, flags: 0x0},
+ 42: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 43: {lang: 0x3dc, script: 0x5a, flags: 0x0},
+ 44: {lang: 0x4ae, script: 0x20, flags: 0x0},
+ 45: {lang: 0x2ff, script: 0x20, flags: 0x0},
+ 46: {lang: 0x431, script: 0x5a, flags: 0x0},
+ 47: {lang: 0x331, script: 0x75, flags: 0x0},
+ 48: {lang: 0x213, script: 0x5a, flags: 0x0},
+ 49: {lang: 0x30b, script: 0x20, flags: 0x0},
50: {lang: 0x242, script: 0x5, flags: 0x0},
- 51: {lang: 0x529, script: 0x39, flags: 0x0},
- 52: {lang: 0x3c0, script: 0x57, flags: 0x0},
+ 51: {lang: 0x529, script: 0x3c, flags: 0x0},
+ 52: {lang: 0x3c0, script: 0x5a, flags: 0x0},
53: {lang: 0x3a, script: 0x5, flags: 0x0},
- 54: {lang: 0x15e, script: 0x57, flags: 0x0},
- 55: {lang: 0x2ed, script: 0x57, flags: 0x0},
+ 54: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 55: {lang: 0x2ed, script: 0x5a, flags: 0x0},
56: {lang: 0x4b4, script: 0x5, flags: 0x0},
- 57: {lang: 0x88, script: 0x21, 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: 0x21, flags: 0x0},
- 61: {lang: 0x3dc, script: 0x57, flags: 0x0},
- 62: {lang: 0x7e, script: 0x1f, flags: 0x0},
- 63: {lang: 0x3e2, script: 0x1f, flags: 0x0},
- 64: {lang: 0x267, script: 0x57, flags: 0x0},
- 65: {lang: 0x444, script: 0x57, flags: 0x0},
- 66: {lang: 0x512, script: 0x3b, flags: 0x0},
- 67: {lang: 0x412, script: 0x57, flags: 0x0},
- 68: {lang: 0x4ae, script: 0x1f, flags: 0x0},
+ 60: {lang: 0xbe, script: 0x22, flags: 0x0},
+ 61: {lang: 0x3dc, script: 0x5a, flags: 0x0},
+ 62: {lang: 0x7e, script: 0x20, flags: 0x0},
+ 63: {lang: 0x3e2, script: 0x20, flags: 0x0},
+ 64: {lang: 0x267, script: 0x5a, flags: 0x0},
+ 65: {lang: 0x444, script: 0x5a, flags: 0x0},
+ 66: {lang: 0x512, script: 0x3e, flags: 0x0},
+ 67: {lang: 0x412, script: 0x5a, flags: 0x0},
+ 68: {lang: 0x4ae, script: 0x20, flags: 0x0},
69: {lang: 0x3a, script: 0x5, flags: 0x0},
- 70: {lang: 0x15e, script: 0x57, flags: 0x0},
- 71: {lang: 0x15e, script: 0x57, flags: 0x0},
+ 70: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 71: {lang: 0x15e, script: 0x5a, flags: 0x0},
72: {lang: 0x35, script: 0x5, flags: 0x0},
- 73: {lang: 0x46b, script: 0xdf, flags: 0x0},
+ 73: {lang: 0x46b, script: 0xe6, flags: 0x0},
74: {lang: 0x2ec, script: 0x5, flags: 0x0},
- 75: {lang: 0x30f, script: 0x72, flags: 0x0},
- 76: {lang: 0x467, script: 0x1f, flags: 0x0},
+ 75: {lang: 0x30f, script: 0x75, 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: 0x57, flags: 0x0},
- 80: {lang: 0x48a, script: 0x57, flags: 0x0},
+ 79: {lang: 0x15e, script: 0x5a, flags: 0x0},
+ 80: {lang: 0x48a, script: 0x5a, flags: 0x0},
81: {lang: 0x58, script: 0x5, flags: 0x0},
- 82: {lang: 0x219, script: 0x1f, flags: 0x0},
- 83: {lang: 0x81, script: 0x31, flags: 0x0},
- 84: {lang: 0x529, script: 0x39, flags: 0x0},
- 85: {lang: 0x48c, script: 0x57, flags: 0x0},
- 86: {lang: 0x4ae, script: 0x1f, flags: 0x0},
- 87: {lang: 0x512, script: 0x3b, flags: 0x0},
- 88: {lang: 0x3b3, script: 0x57, flags: 0x0},
- 89: {lang: 0x431, script: 0x57, flags: 0x0},
- 90: {lang: 0x432, script: 0x1f, flags: 0x0},
- 91: {lang: 0x15e, script: 0x57, 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: 0x5a, flags: 0x0},
+ 86: {lang: 0x4ae, script: 0x20, flags: 0x0},
+ 87: {lang: 0x512, script: 0x3e, flags: 0x0},
+ 88: {lang: 0x3b3, script: 0x5a, flags: 0x0},
+ 89: {lang: 0x431, script: 0x5a, flags: 0x0},
+ 90: {lang: 0x432, script: 0x20, flags: 0x0},
+ 91: {lang: 0x15e, script: 0x5a, flags: 0x0},
92: {lang: 0x446, script: 0x5, flags: 0x0},
}
@@ -3257,38 +3290,38 @@ type likelyTag struct {
// Size: 198 bytes, 33 elements
var likelyRegionGroup = [33]likelyTag{
- 1: {lang: 0x139, region: 0xd6, script: 0x57},
- 2: {lang: 0x139, region: 0x135, script: 0x57},
- 3: {lang: 0x3c0, region: 0x41, script: 0x57},
- 4: {lang: 0x139, region: 0x2f, script: 0x57},
- 5: {lang: 0x139, region: 0xd6, script: 0x57},
- 6: {lang: 0x13e, region: 0xcf, script: 0x57},
- 7: {lang: 0x445, region: 0x12f, script: 0x57},
+ 1: {lang: 0x139, region: 0xd6, script: 0x5a},
+ 2: {lang: 0x139, region: 0x135, script: 0x5a},
+ 3: {lang: 0x3c0, region: 0x41, script: 0x5a},
+ 4: {lang: 0x139, region: 0x2f, script: 0x5a},
+ 5: {lang: 0x139, region: 0xd6, script: 0x5a},
+ 6: {lang: 0x13e, region: 0xcf, script: 0x5a},
+ 7: {lang: 0x445, region: 0x12f, script: 0x5a},
8: {lang: 0x3a, region: 0x6b, script: 0x5},
- 9: {lang: 0x445, region: 0x4b, script: 0x57},
- 10: {lang: 0x139, region: 0x161, script: 0x57},
- 11: {lang: 0x139, region: 0x135, script: 0x57},
- 12: {lang: 0x139, region: 0x135, script: 0x57},
- 13: {lang: 0x13e, region: 0x59, script: 0x57},
- 14: {lang: 0x529, region: 0x53, script: 0x38},
- 15: {lang: 0x1be, region: 0x99, script: 0x21},
- 16: {lang: 0x1e1, region: 0x95, script: 0x57},
- 17: {lang: 0x1f9, region: 0x9e, script: 0x57},
- 18: {lang: 0x139, region: 0x2f, script: 0x57},
- 19: {lang: 0x139, region: 0xe6, script: 0x57},
- 20: {lang: 0x139, region: 0x8a, script: 0x57},
- 21: {lang: 0x41b, region: 0x142, script: 0x57},
- 22: {lang: 0x529, region: 0x53, script: 0x38},
- 23: {lang: 0x4bc, region: 0x137, script: 0x57},
+ 9: {lang: 0x445, region: 0x4b, script: 0x5a},
+ 10: {lang: 0x139, region: 0x161, script: 0x5a},
+ 11: {lang: 0x139, region: 0x135, script: 0x5a},
+ 12: {lang: 0x139, region: 0x135, script: 0x5a},
+ 13: {lang: 0x13e, region: 0x59, script: 0x5a},
+ 14: {lang: 0x529, region: 0x53, script: 0x3b},
+ 15: {lang: 0x1be, region: 0x99, script: 0x22},
+ 16: {lang: 0x1e1, region: 0x95, script: 0x5a},
+ 17: {lang: 0x1f9, region: 0x9e, script: 0x5a},
+ 18: {lang: 0x139, region: 0x2f, script: 0x5a},
+ 19: {lang: 0x139, region: 0xe6, script: 0x5a},
+ 20: {lang: 0x139, region: 0x8a, script: 0x5a},
+ 21: {lang: 0x41b, region: 0x142, script: 0x5a},
+ 22: {lang: 0x529, region: 0x53, script: 0x3b},
+ 23: {lang: 0x4bc, region: 0x137, script: 0x5a},
24: {lang: 0x3a, region: 0x108, script: 0x5},
- 25: {lang: 0x3e2, region: 0x106, script: 0x1f},
- 26: {lang: 0x3e2, region: 0x106, script: 0x1f},
- 27: {lang: 0x139, region: 0x7b, script: 0x57},
- 28: {lang: 0x10d, region: 0x60, script: 0x57},
- 29: {lang: 0x139, region: 0xd6, script: 0x57},
- 30: {lang: 0x13e, region: 0x1f, script: 0x57},
- 31: {lang: 0x139, region: 0x9a, script: 0x57},
- 32: {lang: 0x139, region: 0x7b, script: 0x57},
+ 25: {lang: 0x3e2, region: 0x106, script: 0x20},
+ 26: {lang: 0x3e2, region: 0x106, script: 0x20},
+ 27: {lang: 0x139, region: 0x7b, script: 0x5a},
+ 28: {lang: 0x10d, region: 0x60, script: 0x5a},
+ 29: {lang: 0x139, region: 0xd6, script: 0x5a},
+ 30: {lang: 0x13e, region: 0x1f, script: 0x5a},
+ 31: {lang: 0x139, region: 0x9a, script: 0x5a},
+ 32: {lang: 0x139, region: 0x7b, script: 0x5a},
}
// Size: 264 bytes, 33 elements
@@ -3421,11 +3454,11 @@ type parentRel struct {
// Size: 414 bytes, 5 elements
var parents = [5]parentRel{
- 0: {lang: 0x139, script: 0x0, maxScript: 0x57, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5c, 0x5d, 0x61, 0x64, 0x6d, 0x73, 0x74, 0x75, 0x7b, 0x7c, 0x7f, 0x80, 0x81, 0x83, 0x8c, 0x8d, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9f, 0xa0, 0xa4, 0xa7, 0xa9, 0xad, 0xb1, 0xb4, 0xb5, 0xbf, 0xc6, 0xca, 0xcb, 0xcc, 0xce, 0xd0, 0xd2, 0xd5, 0xd6, 0xdd, 0xdf, 0xe0, 0xe6, 0xe7, 0xe8, 0xeb, 0xf0, 0x107, 0x109, 0x10a, 0x10b, 0x10d, 0x10e, 0x112, 0x117, 0x11b, 0x11d, 0x11f, 0x125, 0x129, 0x12c, 0x12d, 0x12f, 0x131, 0x139, 0x13c, 0x13f, 0x142, 0x161, 0x162, 0x164}},
- 1: {lang: 0x139, script: 0x0, maxScript: 0x57, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x60, 0x63, 0x72, 0xd9, 0x10c, 0x10f}},
- 2: {lang: 0x13e, script: 0x0, maxScript: 0x57, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x56, 0x59, 0x65, 0x69, 0x89, 0x8f, 0xcf, 0xd8, 0xe2, 0xe4, 0xec, 0xf1, 0x11a, 0x135, 0x136, 0x13b}},
- 3: {lang: 0x3c0, script: 0x0, maxScript: 0x57, toRegion: 0xee, fromRegion: []uint16{0x2a, 0x4e, 0x5a, 0x86, 0x8b, 0xb7, 0xc6, 0xd1, 0x118, 0x126}},
- 4: {lang: 0x529, script: 0x39, maxScript: 0x39, toRegion: 0x8d, fromRegion: []uint16{0xc6}},
+ 0: {lang: 0x139, script: 0x0, maxScript: 0x5a, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5c, 0x5d, 0x61, 0x64, 0x6d, 0x73, 0x74, 0x75, 0x7b, 0x7c, 0x7f, 0x80, 0x81, 0x83, 0x8c, 0x8d, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9f, 0xa0, 0xa4, 0xa7, 0xa9, 0xad, 0xb1, 0xb4, 0xb5, 0xbf, 0xc6, 0xca, 0xcb, 0xcc, 0xce, 0xd0, 0xd2, 0xd5, 0xd6, 0xdd, 0xdf, 0xe0, 0xe6, 0xe7, 0xe8, 0xeb, 0xf0, 0x107, 0x109, 0x10a, 0x10b, 0x10d, 0x10e, 0x112, 0x117, 0x11b, 0x11d, 0x11f, 0x125, 0x129, 0x12c, 0x12d, 0x12f, 0x131, 0x139, 0x13c, 0x13f, 0x142, 0x161, 0x162, 0x164}},
+ 1: {lang: 0x139, script: 0x0, maxScript: 0x5a, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x60, 0x63, 0x72, 0xd9, 0x10c, 0x10f}},
+ 2: {lang: 0x13e, script: 0x0, maxScript: 0x5a, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x56, 0x59, 0x65, 0x69, 0x89, 0x8f, 0xcf, 0xd8, 0xe2, 0xe4, 0xec, 0xf1, 0x11a, 0x135, 0x136, 0x13b}},
+ 3: {lang: 0x3c0, script: 0x0, maxScript: 0x5a, toRegion: 0xee, fromRegion: []uint16{0x2a, 0x4e, 0x5a, 0x86, 0x8b, 0xb7, 0xc6, 0xd1, 0x118, 0x126}},
+ 4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8d, fromRegion: []uint16{0xc6}},
}
-// Total table size 25886 bytes (25KiB); checksum: 50D3D57D
+// Total table size 26398 bytes (25KiB); checksum: 1C859EA7
diff --git a/vendor/golang.org/x/text/language/go1_1.go b/vendor/golang.org/x/text/language/go1_1.go
index 380f4c09f7f..c7435583b5f 100644
--- a/vendor/golang.org/x/text/language/go1_1.go
+++ b/vendor/golang.org/x/text/language/go1_1.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build !go1.2
// +build !go1.2
package language
diff --git a/vendor/golang.org/x/text/language/go1_2.go b/vendor/golang.org/x/text/language/go1_2.go
index 38268c57a37..77aaaa299eb 100644
--- a/vendor/golang.org/x/text/language/go1_2.go
+++ b/vendor/golang.org/x/text/language/go1_2.go
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build go1.2
// +build go1.2
package language
diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go
index abfa17f66db..289b3a36d52 100644
--- a/vendor/golang.org/x/text/language/language.go
+++ b/vendor/golang.org/x/text/language/language.go
@@ -412,6 +412,10 @@ func (t Tag) Extensions() []Extension {
// 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" {
diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go
index e22807719e0..96b57f610ad 100644
--- a/vendor/golang.org/x/text/language/tables.go
+++ b/vendor/golang.org/x/text/language/tables.go
@@ -35,19 +35,19 @@ const (
_XK = 333
)
const (
- _Latn = 87
- _Hani = 54
- _Hans = 56
- _Hant = 57
- _Qaaa = 139
- _Qaai = 147
- _Qabx = 188
- _Zinh = 236
- _Zyyy = 241
- _Zzzz = 242
+ _Latn = 90
+ _Hani = 57
+ _Hans = 59
+ _Hant = 60
+ _Qaaa = 143
+ _Qaai = 151
+ _Qabx = 192
+ _Zinh = 245
+ _Zyyy = 250
+ _Zzzz = 251
)
-var regionToGroups = []uint8{ // 357 elements
+var regionToGroups = []uint8{ // 358 elements
// Entry 0 - 3F
0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04,
0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00,
@@ -98,8 +98,8 @@ var regionToGroups = []uint8{ // 357 elements
0x00, 0x00, 0x00, 0x00, 0x00, 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: 381 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+} // Size: 382 bytes
var paradigmLocales = [][3]uint16{ // 3 elements
0: [3]uint16{0x139, 0x0, 0x7b},
@@ -249,32 +249,32 @@ var matchLang = []mutualIntelligibility{ // 113 elements
// 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: 0x57, haveScript: 0x1f, distance: 0x5},
- 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x1f, haveScript: 0x57, distance: 0x5},
- 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},
- 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x57, distance: 0xa},
- 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x1f, distance: 0xa},
- 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2b, haveScript: 0x57, distance: 0xa},
- 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4b, haveScript: 0x57, distance: 0xa},
- 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x57, distance: 0xa},
- 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x54, haveScript: 0x57, distance: 0xa},
- 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6b, haveScript: 0x57, distance: 0xa},
- 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x72, haveScript: 0x57, distance: 0xa},
- 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x21, haveScript: 0x57, distance: 0xa},
- 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x7d, haveScript: 0x57, distance: 0xa},
- 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x33, haveScript: 0x57, distance: 0xa},
- 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},
- 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},
- 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xca, haveScript: 0x57, distance: 0xa},
- 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xd7, haveScript: 0x57, distance: 0xa},
- 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xda, haveScript: 0x57, distance: 0xa},
- 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x29, haveScript: 0x57, distance: 0xa},
- 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},
- 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa},
- 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa},
- 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3b, haveScript: 0x57, distance: 0xa},
- 24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x38, haveScript: 0x39, distance: 0xf},
- 25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x39, haveScript: 0x38, distance: 0x13},
+ 0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5a, haveScript: 0x20, distance: 0x5},
+ 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5a, distance: 0x5},
+ 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
+ 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5a, distance: 0xa},
+ 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa},
+ 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5a, distance: 0xa},
+ 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4e, haveScript: 0x5a, distance: 0xa},
+ 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x52, haveScript: 0x5a, distance: 0xa},
+ 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x57, haveScript: 0x5a, distance: 0xa},
+ 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6e, haveScript: 0x5a, distance: 0xa},
+ 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x75, haveScript: 0x5a, distance: 0xa},
+ 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5a, distance: 0xa},
+ 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x81, haveScript: 0x5a, distance: 0xa},
+ 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5a, distance: 0xa},
+ 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
+ 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
+ 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xcf, haveScript: 0x5a, distance: 0xa},
+ 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xde, haveScript: 0x5a, distance: 0xa},
+ 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe1, haveScript: 0x5a, distance: 0xa},
+ 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5a, distance: 0xa},
+ 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
+ 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa},
+ 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa},
+ 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5a, 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
@@ -286,13 +286,13 @@ var matchRegion = []regionIntelligibility{ // 15 elements
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: 0x39, group: 0x2, distance: 0x4},
- 9: {lang: 0x529, script: 0x39, group: 0x82, 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: 0x39, group: 0x80, distance: 0x5},
+ 14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5},
} // Size: 114 bytes
-// Total table size 1471 bytes (1KiB); checksum: 4CB1CD46
+// Total table size 1472 bytes (1KiB); checksum: F86C669
diff --git a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go
index 26fbd55a124..f5a0788277f 100644
--- a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go
+++ b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go
@@ -1,5 +1,6 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+//go:build go1.10 && !go1.13
// +build go1.10,!go1.13
package norm
diff --git a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go
index 2c58f09baa4..cb7239c4377 100644
--- a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go
+++ b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go
@@ -1,5 +1,6 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+//go:build go1.13 && !go1.14
// +build go1.13,!go1.14
package norm
diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go
index 10f5202c693..11b27330017 100644
--- a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go
+++ b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go
@@ -1,6 +1,7 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-// +build go1.14
+//go:build go1.14 && !go1.16
+// +build go1.14,!go1.16
package norm
diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go
new file mode 100644
index 00000000000..96a130d30e9
--- /dev/null
+++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go
@@ -0,0 +1,7761 @@
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+
+//go:build go1.16
+// +build go1.16
+
+package norm
+
+import "sync"
+
+const (
+ // Version is the Unicode edition from which the tables are derived.
+ Version = "13.0.0"
+
+ // MaxTransformChunkSize indicates the maximum number of bytes that Transform
+ // may need to write atomically for any Form. Making a destination buffer at
+ // least this size ensures that Transform can always make progress and that
+ // the user does not need to grow the buffer on an ErrShortDst.
+ MaxTransformChunkSize = 35 + maxNonStarters*4
+)
+
+var ccc = [56]uint8{
+ 0, 1, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 84, 91, 103, 107, 118, 122, 129,
+ 130, 132, 202, 214, 216, 218, 220, 222,
+ 224, 226, 228, 230, 232, 233, 234, 240,
+}
+
+const (
+ firstMulti = 0x1870
+ firstCCC = 0x2CAB
+ endMulti = 0x2F77
+ firstLeadingCCC = 0x49C5
+ firstCCCZeroExcept = 0x4A8F
+ firstStarterWithNLead = 0x4AB6
+ lastDecomp = 0x4AB8
+ maxDecomp = 0x8000
+)
+
+// decomps: 19128 bytes
+var decomps = [...]byte{
+ // Bytes 0 - 3f
+ 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,
+ 0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,
+ 0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,
+ 0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,
+ 0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,
+ 0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,
+ 0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,
+ 0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,
+ // Bytes 40 - 7f
+ 0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,
+ 0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,
+ 0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,
+ 0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,
+ 0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,
+ 0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,
+ 0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,
+ 0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,
+ // Bytes 80 - bf
+ 0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,
+ 0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,
+ 0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,
+ 0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,
+ 0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,
+ 0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,
+ 0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,
+ 0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,
+ // Bytes c0 - ff
+ 0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,
+ 0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,
+ 0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42,
+ 0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1,
+ 0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6,
+ 0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42,
+ 0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90,
+ 0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9,
+ // Bytes 100 - 13f
+ 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42,
+ 0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F,
+ 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9,
+ 0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42,
+ 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB,
+ 0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,
+ 0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,
+ 0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,
+ // Bytes 140 - 17f
+ 0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,
+ 0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,
+ 0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,
+ 0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,
+ 0x8D, 0x42, 0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42,
+ 0xCA, 0x92, 0x42, 0xCA, 0x95, 0x42, 0xCA, 0x9D,
+ 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xB9, 0x42, 0xCE,
+ 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93, 0x42,
+ // Bytes 180 - 1bf
+ 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE, 0x96,
+ 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42, 0xCE,
+ 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B, 0x42,
+ 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE, 0x9E,
+ 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42, 0xCE,
+ 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4, 0x42,
+ 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE, 0xA7,
+ 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42, 0xCE,
+ // Bytes 1c0 - 1ff
+ 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3, 0x42,
+ 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE, 0xB6,
+ 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42, 0xCE,
+ 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB, 0x42,
+ 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE, 0xBE,
+ 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42, 0xCF,
+ 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83, 0x42,
+ 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF, 0x86,
+ // Bytes 200 - 23f
+ 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42, 0xCF,
+ 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D, 0x42,
+ 0xD0, 0xBD, 0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8C,
+ 0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7,
+ 0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42,
+ 0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D,
+ 0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7,
+ 0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42,
+ // Bytes 240 - 27f
+ 0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA,
+ 0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8,
+ 0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42,
+ 0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2,
+ 0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8,
+ 0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42,
+ 0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA,
+ 0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9,
+ // Bytes 280 - 2bf
+ 0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42,
+ 0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88,
+ 0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9,
+ 0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42,
+ 0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB,
+ 0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA,
+ 0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42,
+ 0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88,
+ // Bytes 2c0 - 2ff
+ 0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA,
+ 0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42,
+ 0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6,
+ 0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA,
+ 0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42,
+ 0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE,
+ 0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB,
+ 0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42,
+ // Bytes 300 - 33f
+ 0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C,
+ 0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0,
+ 0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1,
+ 0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1,
+ 0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1,
+ 0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1,
+ 0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1,
+ 0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1,
+ // Bytes 340 - 37f
+ 0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1,
+ 0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1,
+ 0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1,
+ 0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1,
+ 0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1,
+ 0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1,
+ 0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1,
+ 0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1,
+ // Bytes 380 - 3bf
+ 0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1,
+ 0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1,
+ 0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1,
+ 0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1,
+ 0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1,
+ 0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1,
+ 0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1,
+ 0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1,
+ // Bytes 3c0 - 3ff
+ 0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1,
+ 0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1,
+ 0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1,
+ 0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1,
+ 0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1,
+ 0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1,
+ 0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1,
+ 0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1,
+ // Bytes 400 - 43f
+ 0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1,
+ 0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1,
+ 0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1,
+ 0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1,
+ 0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1,
+ 0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1,
+ 0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE2,
+ 0x80, 0x82, 0x43, 0xE2, 0x80, 0x83, 0x43, 0xE2,
+ // Bytes 440 - 47f
+ 0x80, 0x90, 0x43, 0xE2, 0x80, 0x93, 0x43, 0xE2,
+ 0x80, 0x94, 0x43, 0xE2, 0x82, 0xA9, 0x43, 0xE2,
+ 0x86, 0x90, 0x43, 0xE2, 0x86, 0x91, 0x43, 0xE2,
+ 0x86, 0x92, 0x43, 0xE2, 0x86, 0x93, 0x43, 0xE2,
+ 0x88, 0x82, 0x43, 0xE2, 0x88, 0x87, 0x43, 0xE2,
+ 0x88, 0x91, 0x43, 0xE2, 0x88, 0x92, 0x43, 0xE2,
+ 0x94, 0x82, 0x43, 0xE2, 0x96, 0xA0, 0x43, 0xE2,
+ 0x97, 0x8B, 0x43, 0xE2, 0xA6, 0x85, 0x43, 0xE2,
+ // Bytes 480 - 4bf
+ 0xA6, 0x86, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3,
+ 0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3,
+ 0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3,
+ 0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3,
+ 0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3,
+ 0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3,
+ 0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3,
+ 0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3,
+ // Bytes 4c0 - 4ff
+ 0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3,
+ 0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3,
+ 0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3,
+ 0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3,
+ 0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3,
+ 0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3,
+ 0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3,
+ 0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3,
+ // Bytes 500 - 53f
+ 0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3,
+ 0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3,
+ 0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3,
+ 0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3,
+ 0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3,
+ 0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3,
+ 0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3,
+ 0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3,
+ // Bytes 540 - 57f
+ 0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3,
+ 0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3,
+ 0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3,
+ 0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3,
+ 0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3,
+ 0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3,
+ 0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3,
+ 0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3,
+ // Bytes 580 - 5bf
+ 0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3,
+ 0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3,
+ 0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3,
+ 0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3,
+ 0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3,
+ 0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3,
+ 0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3,
+ 0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3,
+ // Bytes 5c0 - 5ff
+ 0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3,
+ 0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3,
+ 0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3,
+ 0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3,
+ 0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3,
+ 0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3,
+ 0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3,
+ 0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3,
+ // Bytes 600 - 63f
+ 0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3,
+ 0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3,
+ 0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3,
+ 0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3,
+ 0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3,
+ 0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4,
+ 0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4,
+ 0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4,
+ // Bytes 640 - 67f
+ 0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4,
+ 0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4,
+ 0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4,
+ 0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4,
+ 0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4,
+ 0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4,
+ 0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4,
+ 0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4,
+ // Bytes 680 - 6bf
+ 0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4,
+ 0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4,
+ 0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4,
+ 0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4,
+ 0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4,
+ 0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4,
+ 0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4,
+ 0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4,
+ // Bytes 6c0 - 6ff
+ 0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4,
+ 0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4,
+ 0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4,
+ 0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4,
+ 0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4,
+ 0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4,
+ 0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4,
+ 0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4,
+ // Bytes 700 - 73f
+ 0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4,
+ 0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4,
+ 0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4,
+ 0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4,
+ 0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4,
+ 0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4,
+ 0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4,
+ 0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4,
+ // Bytes 740 - 77f
+ 0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4,
+ 0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4,
+ 0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4,
+ 0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4,
+ 0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5,
+ 0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5,
+ 0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5,
+ 0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5,
+ // Bytes 780 - 7bf
+ 0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5,
+ 0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5,
+ 0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5,
+ 0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5,
+ 0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5,
+ 0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5,
+ 0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5,
+ 0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5,
+ // Bytes 7c0 - 7ff
+ 0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5,
+ 0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5,
+ 0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5,
+ 0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5,
+ 0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5,
+ 0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5,
+ 0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5,
+ 0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5,
+ // Bytes 800 - 83f
+ 0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5,
+ 0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5,
+ 0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5,
+ 0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5,
+ 0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5,
+ 0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5,
+ 0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5,
+ 0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5,
+ // Bytes 840 - 87f
+ 0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5,
+ 0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5,
+ 0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5,
+ 0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5,
+ 0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5,
+ 0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5,
+ 0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5,
+ 0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5,
+ // Bytes 880 - 8bf
+ 0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5,
+ 0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5,
+ 0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5,
+ 0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5,
+ 0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5,
+ 0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5,
+ 0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5,
+ 0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5,
+ // Bytes 8c0 - 8ff
+ 0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5,
+ 0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5,
+ 0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5,
+ 0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5,
+ 0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5,
+ 0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5,
+ 0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5,
+ 0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5,
+ // Bytes 900 - 93f
+ 0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5,
+ 0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5,
+ 0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5,
+ 0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5,
+ 0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5,
+ 0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5,
+ 0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5,
+ 0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5,
+ // Bytes 940 - 97f
+ 0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5,
+ 0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5,
+ 0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5,
+ 0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5,
+ 0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5,
+ 0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5,
+ 0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5,
+ 0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5,
+ // Bytes 980 - 9bf
+ 0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5,
+ 0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5,
+ 0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5,
+ 0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5,
+ 0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5,
+ 0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5,
+ 0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5,
+ 0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5,
+ // Bytes 9c0 - 9ff
+ 0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5,
+ 0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5,
+ 0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5,
+ 0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5,
+ 0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5,
+ 0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5,
+ 0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5,
+ 0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5,
+ // Bytes a00 - a3f
+ 0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5,
+ 0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5,
+ 0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5,
+ 0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5,
+ 0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5,
+ 0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5,
+ 0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5,
+ 0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5,
+ // Bytes a40 - a7f
+ 0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5,
+ 0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5,
+ 0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5,
+ 0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5,
+ 0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5,
+ 0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5,
+ 0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5,
+ 0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5,
+ // Bytes a80 - abf
+ 0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5,
+ 0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5,
+ 0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5,
+ 0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5,
+ 0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5,
+ 0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5,
+ 0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5,
+ 0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5,
+ // Bytes ac0 - aff
+ 0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5,
+ 0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5,
+ 0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5,
+ 0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5,
+ 0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5,
+ 0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5,
+ 0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5,
+ 0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5,
+ // Bytes b00 - b3f
+ 0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5,
+ 0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5,
+ 0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5,
+ 0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5,
+ 0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5,
+ 0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5,
+ 0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5,
+ 0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5,
+ // Bytes b40 - b7f
+ 0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5,
+ 0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5,
+ 0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5,
+ 0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5,
+ 0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5,
+ 0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5,
+ 0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5,
+ 0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5,
+ // Bytes b80 - bbf
+ 0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5,
+ 0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5,
+ 0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6,
+ 0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6,
+ 0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6,
+ 0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6,
+ 0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6,
+ 0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6,
+ // Bytes bc0 - bff
+ 0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6,
+ 0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6,
+ 0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6,
+ 0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6,
+ 0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6,
+ 0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6,
+ 0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6,
+ 0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6,
+ // Bytes c00 - c3f
+ 0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6,
+ 0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6,
+ 0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6,
+ 0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6,
+ 0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6,
+ 0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6,
+ 0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6,
+ 0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6,
+ // Bytes c40 - c7f
+ 0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6,
+ 0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6,
+ 0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6,
+ 0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6,
+ 0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6,
+ 0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6,
+ 0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6,
+ 0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6,
+ // Bytes c80 - cbf
+ 0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6,
+ 0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6,
+ 0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6,
+ 0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6,
+ 0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6,
+ 0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6,
+ 0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6,
+ 0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6,
+ // Bytes cc0 - cff
+ 0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6,
+ 0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6,
+ 0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6,
+ 0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6,
+ 0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6,
+ 0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6,
+ 0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6,
+ 0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6,
+ // Bytes d00 - d3f
+ 0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6,
+ 0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6,
+ 0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6,
+ 0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6,
+ 0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6,
+ 0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6,
+ 0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6,
+ 0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6,
+ // Bytes d40 - d7f
+ 0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6,
+ 0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6,
+ 0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6,
+ 0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6,
+ 0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6,
+ 0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6,
+ 0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6,
+ 0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6,
+ // Bytes d80 - dbf
+ 0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6,
+ 0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6,
+ 0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6,
+ 0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6,
+ 0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6,
+ 0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6,
+ 0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6,
+ 0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6,
+ // Bytes dc0 - dff
+ 0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6,
+ 0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6,
+ 0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6,
+ 0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6,
+ 0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6,
+ 0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6,
+ 0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6,
+ 0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6,
+ // Bytes e00 - e3f
+ 0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6,
+ 0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6,
+ 0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6,
+ 0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6,
+ 0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6,
+ 0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6,
+ 0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6,
+ 0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6,
+ // Bytes e40 - e7f
+ 0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6,
+ 0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6,
+ 0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6,
+ 0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6,
+ 0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6,
+ 0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6,
+ 0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6,
+ 0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6,
+ // Bytes e80 - ebf
+ 0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7,
+ 0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7,
+ 0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7,
+ 0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7,
+ 0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7,
+ 0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7,
+ 0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7,
+ 0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7,
+ // Bytes ec0 - eff
+ 0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7,
+ 0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7,
+ 0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7,
+ 0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7,
+ 0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7,
+ 0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7,
+ 0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7,
+ 0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7,
+ // Bytes f00 - f3f
+ 0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7,
+ 0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7,
+ 0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7,
+ 0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7,
+ 0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7,
+ 0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7,
+ 0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7,
+ 0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7,
+ // Bytes f40 - f7f
+ 0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7,
+ 0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7,
+ 0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7,
+ 0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7,
+ 0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7,
+ 0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7,
+ 0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7,
+ 0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7,
+ // Bytes f80 - fbf
+ 0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7,
+ 0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7,
+ 0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7,
+ 0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7,
+ 0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7,
+ 0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7,
+ 0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7,
+ 0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7,
+ // Bytes fc0 - fff
+ 0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7,
+ 0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7,
+ 0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7,
+ 0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7,
+ 0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7,
+ 0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7,
+ 0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7,
+ 0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7,
+ // Bytes 1000 - 103f
+ 0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7,
+ 0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7,
+ 0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7,
+ 0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7,
+ 0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7,
+ 0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7,
+ 0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7,
+ 0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7,
+ // Bytes 1040 - 107f
+ 0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7,
+ 0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7,
+ 0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7,
+ 0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7,
+ 0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7,
+ 0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7,
+ 0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7,
+ 0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7,
+ // Bytes 1080 - 10bf
+ 0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7,
+ 0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7,
+ 0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7,
+ 0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7,
+ 0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7,
+ 0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7,
+ 0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7,
+ 0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7,
+ // Bytes 10c0 - 10ff
+ 0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7,
+ 0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7,
+ 0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7,
+ 0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7,
+ 0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7,
+ 0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7,
+ 0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7,
+ 0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7,
+ // Bytes 1100 - 113f
+ 0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7,
+ 0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7,
+ 0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7,
+ 0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7,
+ 0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7,
+ 0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7,
+ 0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7,
+ 0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7,
+ // Bytes 1140 - 117f
+ 0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7,
+ 0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7,
+ 0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7,
+ 0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7,
+ 0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7,
+ 0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7,
+ 0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7,
+ 0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8,
+ // Bytes 1180 - 11bf
+ 0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8,
+ 0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8,
+ 0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8,
+ 0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8,
+ 0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8,
+ 0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8,
+ 0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8,
+ 0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8,
+ // Bytes 11c0 - 11ff
+ 0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8,
+ 0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8,
+ 0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8,
+ 0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8,
+ 0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8,
+ 0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8,
+ 0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8,
+ 0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8,
+ // Bytes 1200 - 123f
+ 0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8,
+ 0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8,
+ 0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8,
+ 0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8,
+ 0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8,
+ 0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8,
+ 0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8,
+ 0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8,
+ // Bytes 1240 - 127f
+ 0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8,
+ 0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8,
+ 0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8,
+ 0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8,
+ 0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8,
+ 0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8,
+ 0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8,
+ 0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8,
+ // Bytes 1280 - 12bf
+ 0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8,
+ 0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8,
+ 0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8,
+ 0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8,
+ 0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8,
+ 0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8,
+ 0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8,
+ 0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8,
+ // Bytes 12c0 - 12ff
+ 0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8,
+ 0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8,
+ 0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8,
+ 0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8,
+ 0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8,
+ 0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8,
+ 0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8,
+ 0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8,
+ // Bytes 1300 - 133f
+ 0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8,
+ 0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8,
+ 0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8,
+ 0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8,
+ 0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8,
+ 0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8,
+ 0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8,
+ 0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8,
+ // Bytes 1340 - 137f
+ 0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8,
+ 0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8,
+ 0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8,
+ 0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8,
+ 0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8,
+ 0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8,
+ 0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8,
+ 0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8,
+ // Bytes 1380 - 13bf
+ 0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8,
+ 0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8,
+ 0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8,
+ 0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8,
+ 0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8,
+ 0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8,
+ 0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8,
+ 0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8,
+ // Bytes 13c0 - 13ff
+ 0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8,
+ 0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8,
+ 0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8,
+ 0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8,
+ 0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8,
+ 0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8,
+ 0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8,
+ 0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8,
+ // Bytes 1400 - 143f
+ 0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9,
+ 0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9,
+ 0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9,
+ 0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9,
+ 0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9,
+ 0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9,
+ 0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9,
+ 0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9,
+ // Bytes 1440 - 147f
+ 0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9,
+ 0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9,
+ 0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9,
+ 0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9,
+ 0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9,
+ 0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9,
+ 0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9,
+ 0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9,
+ // Bytes 1480 - 14bf
+ 0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9,
+ 0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9,
+ 0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9,
+ 0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9,
+ 0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9,
+ 0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9,
+ 0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9,
+ 0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9,
+ // Bytes 14c0 - 14ff
+ 0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9,
+ 0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9,
+ 0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9,
+ 0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9,
+ 0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9,
+ 0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9,
+ 0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9,
+ 0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9,
+ // Bytes 1500 - 153f
+ 0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9,
+ 0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9,
+ 0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9,
+ 0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9,
+ 0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9,
+ 0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9,
+ 0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9,
+ 0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9,
+ // Bytes 1540 - 157f
+ 0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9,
+ 0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9,
+ 0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9,
+ 0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9,
+ 0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9,
+ 0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9,
+ 0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9,
+ 0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9,
+ // Bytes 1580 - 15bf
+ 0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9,
+ 0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9,
+ 0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9,
+ 0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9,
+ 0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9,
+ 0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9,
+ 0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9,
+ 0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9,
+ // Bytes 15c0 - 15ff
+ 0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9,
+ 0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9,
+ 0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9,
+ 0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9,
+ 0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9,
+ 0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9,
+ 0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9,
+ 0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9,
+ // Bytes 1600 - 163f
+ 0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9,
+ 0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9,
+ 0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9,
+ 0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9,
+ 0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9,
+ 0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9,
+ 0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9,
+ 0xBE, 0xA0, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA,
+ // Bytes 1640 - 167f
+ 0x9D, 0xAF, 0x43, 0xEA, 0xAC, 0xB7, 0x43, 0xEA,
+ 0xAD, 0x92, 0x44, 0xF0, 0xA0, 0x84, 0xA2, 0x44,
+ 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0, 0xA0, 0x94,
+ 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B, 0x44, 0xF0,
+ 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0, 0xA0, 0x84,
+ 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44, 0xF0, 0xA0,
+ 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD, 0xA3, 0x44,
+ 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0, 0xA1, 0x9A,
+ // Bytes 1680 - 16bf
+ 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA, 0x44, 0xF0,
+ 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1, 0xAC, 0x98,
+ 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44, 0xF0, 0xA1,
+ 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7, 0xA6, 0x44,
+ 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0, 0xA2, 0x86,
+ 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1, 0x44, 0xF0,
+ 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2, 0xA1, 0x84,
+ 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44, 0xF0, 0xA2,
+ // Bytes 16c0 - 16ff
+ 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF, 0xB1, 0x44,
+ 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0, 0xA3, 0x8A,
+ 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F, 0x44, 0xF0,
+ 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3, 0x8E, 0x9C,
+ 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44, 0xF0, 0xA3,
+ 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91, 0xAD, 0x44,
+ 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0, 0xA3, 0xA2,
+ 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D, 0x44, 0xF0,
+ // Bytes 1700 - 173f
+ 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3, 0xB2, 0xBC,
+ 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44, 0xF0, 0xA3,
+ 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD, 0x9E, 0x44,
+ 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0, 0xA4, 0x89,
+ 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE, 0x44, 0xF0,
+ 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4, 0x98, 0x88,
+ 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44, 0xF0, 0xA4,
+ 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0, 0xB6, 0x44,
+ // Bytes 1740 - 177f
+ 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0, 0xA4, 0xBE,
+ 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8, 0x44, 0xF0,
+ 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5, 0x83, 0xB2,
+ 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44, 0xF0, 0xA5,
+ 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84, 0xB3, 0x44,
+ 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0, 0xA5, 0x90,
+ 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6, 0x44, 0xF0,
+ 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5, 0x9B, 0x85,
+ // Bytes 1780 - 17bf
+ 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44, 0xF0, 0xA5,
+ 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE, 0xAB, 0x44,
+ 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0, 0xA5, 0xB3,
+ 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86, 0x44, 0xF0,
+ 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6, 0x88, 0xA8,
+ 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44, 0xF0, 0xA6,
+ 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C, 0xBE, 0x44,
+ 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0, 0xA6, 0x94,
+ // Bytes 17c0 - 17ff
+ 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8, 0x44, 0xF0,
+ 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6, 0x9E, 0xB5,
+ 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44, 0xF0, 0xA6,
+ 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3, 0x95, 0x44,
+ 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0, 0xA6, 0xBC,
+ 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1, 0x44, 0xF0,
+ 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7, 0x8F, 0x8A,
+ 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44, 0xF0, 0xA7,
+ // Bytes 1800 - 183f
+ 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5, 0xA6, 0x44,
+ 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0, 0xA7, 0xBB,
+ 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF, 0x44, 0xF0,
+ 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8, 0x97, 0xAD,
+ 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44, 0xF0, 0xA8,
+ 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5, 0xB7, 0x44,
+ 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0, 0xA9, 0x87,
+ 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A, 0x44, 0xF0,
+ // Bytes 1840 - 187f
+ 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9, 0x92, 0x96,
+ 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44, 0xF0, 0xA9,
+ 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83, 0x8E, 0x44,
+ 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0, 0xAA, 0x88,
+ 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91, 0x44, 0xF0,
+ 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA, 0x98, 0x80,
+ 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, 0x42, 0x2E,
+ 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E, 0x42,
+ // Bytes 1880 - 18bf
+ 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31, 0x30,
+ 0x42, 0x31, 0x31, 0x42, 0x31, 0x32, 0x42, 0x31,
+ 0x33, 0x42, 0x31, 0x34, 0x42, 0x31, 0x35, 0x42,
+ 0x31, 0x36, 0x42, 0x31, 0x37, 0x42, 0x31, 0x38,
+ 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, 0x42, 0x32,
+ 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, 0x31, 0x42,
+ 0x32, 0x32, 0x42, 0x32, 0x33, 0x42, 0x32, 0x34,
+ 0x42, 0x32, 0x35, 0x42, 0x32, 0x36, 0x42, 0x32,
+ // Bytes 18c0 - 18ff
+ 0x37, 0x42, 0x32, 0x38, 0x42, 0x32, 0x39, 0x42,
+ 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33, 0x30,
+ 0x42, 0x33, 0x31, 0x42, 0x33, 0x32, 0x42, 0x33,
+ 0x33, 0x42, 0x33, 0x34, 0x42, 0x33, 0x35, 0x42,
+ 0x33, 0x36, 0x42, 0x33, 0x37, 0x42, 0x33, 0x38,
+ 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, 0x42, 0x34,
+ 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, 0x31, 0x42,
+ 0x34, 0x32, 0x42, 0x34, 0x33, 0x42, 0x34, 0x34,
+ // Bytes 1900 - 193f
+ 0x42, 0x34, 0x35, 0x42, 0x34, 0x36, 0x42, 0x34,
+ 0x37, 0x42, 0x34, 0x38, 0x42, 0x34, 0x39, 0x42,
+ 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35, 0x30,
+ 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42, 0x37,
+ 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C, 0x42,
+ 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39, 0x2E,
+ 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42, 0x3F,
+ 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, 0x71, 0x42,
+ // Bytes 1940 - 197f
+ 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, 0x44, 0x5A,
+ 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, 0x42, 0x47,
+ 0x79, 0x42, 0x48, 0x50, 0x42, 0x48, 0x56, 0x42,
+ 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, 0x49, 0x49,
+ 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, 0x42, 0x49,
+ 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, 0x42, 0x42,
+ 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C, 0x4A,
+ 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42, 0x4D,
+ // Bytes 1980 - 19bf
+ 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, 0x52, 0x42,
+ 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, 0x4E, 0x4A,
+ 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, 0x42, 0x50,
+ 0x48, 0x42, 0x50, 0x52, 0x42, 0x50, 0x61, 0x42,
+ 0x52, 0x73, 0x42, 0x53, 0x44, 0x42, 0x53, 0x4D,
+ 0x42, 0x53, 0x53, 0x42, 0x53, 0x76, 0x42, 0x54,
+ 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, 0x43, 0x42,
+ 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, 0x58, 0x49,
+ // Bytes 19c0 - 19ff
+ 0x42, 0x63, 0x63, 0x42, 0x63, 0x64, 0x42, 0x63,
+ 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, 0x61, 0x42,
+ 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, 0x64, 0x7A,
+ 0x42, 0x65, 0x56, 0x42, 0x66, 0x66, 0x42, 0x66,
+ 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, 0x6D, 0x42,
+ 0x68, 0x61, 0x42, 0x69, 0x69, 0x42, 0x69, 0x6A,
+ 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, 0x42, 0x69,
+ 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, 0x56, 0x42,
+ // Bytes 1a00 - 1a3f
+ 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, 0x6B, 0x6C,
+ 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, 0x42, 0x6C,
+ 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, 0x6E, 0x42,
+ 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, 0x6D, 0x33,
+ 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, 0x42, 0x6D,
+ 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, 0x67, 0x42,
+ 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, 0x6D, 0x73,
+ 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, 0x42, 0x6E,
+ // Bytes 1a40 - 1a7f
+ 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, 0x6A, 0x42,
+ 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, 0x6F, 0x56,
+ 0x42, 0x70, 0x41, 0x42, 0x70, 0x46, 0x42, 0x70,
+ 0x56, 0x42, 0x70, 0x57, 0x42, 0x70, 0x63, 0x42,
+ 0x70, 0x73, 0x42, 0x73, 0x72, 0x42, 0x73, 0x74,
+ 0x42, 0x76, 0x69, 0x42, 0x78, 0x69, 0x43, 0x28,
+ 0x31, 0x29, 0x43, 0x28, 0x32, 0x29, 0x43, 0x28,
+ 0x33, 0x29, 0x43, 0x28, 0x34, 0x29, 0x43, 0x28,
+ // Bytes 1a80 - 1abf
+ 0x35, 0x29, 0x43, 0x28, 0x36, 0x29, 0x43, 0x28,
+ 0x37, 0x29, 0x43, 0x28, 0x38, 0x29, 0x43, 0x28,
+ 0x39, 0x29, 0x43, 0x28, 0x41, 0x29, 0x43, 0x28,
+ 0x42, 0x29, 0x43, 0x28, 0x43, 0x29, 0x43, 0x28,
+ 0x44, 0x29, 0x43, 0x28, 0x45, 0x29, 0x43, 0x28,
+ 0x46, 0x29, 0x43, 0x28, 0x47, 0x29, 0x43, 0x28,
+ 0x48, 0x29, 0x43, 0x28, 0x49, 0x29, 0x43, 0x28,
+ 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, 0x43, 0x28,
+ // Bytes 1ac0 - 1aff
+ 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, 0x43, 0x28,
+ 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, 0x43, 0x28,
+ 0x50, 0x29, 0x43, 0x28, 0x51, 0x29, 0x43, 0x28,
+ 0x52, 0x29, 0x43, 0x28, 0x53, 0x29, 0x43, 0x28,
+ 0x54, 0x29, 0x43, 0x28, 0x55, 0x29, 0x43, 0x28,
+ 0x56, 0x29, 0x43, 0x28, 0x57, 0x29, 0x43, 0x28,
+ 0x58, 0x29, 0x43, 0x28, 0x59, 0x29, 0x43, 0x28,
+ 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, 0x43, 0x28,
+ // Bytes 1b00 - 1b3f
+ 0x62, 0x29, 0x43, 0x28, 0x63, 0x29, 0x43, 0x28,
+ 0x64, 0x29, 0x43, 0x28, 0x65, 0x29, 0x43, 0x28,
+ 0x66, 0x29, 0x43, 0x28, 0x67, 0x29, 0x43, 0x28,
+ 0x68, 0x29, 0x43, 0x28, 0x69, 0x29, 0x43, 0x28,
+ 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, 0x43, 0x28,
+ 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, 0x43, 0x28,
+ 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, 0x43, 0x28,
+ 0x70, 0x29, 0x43, 0x28, 0x71, 0x29, 0x43, 0x28,
+ // Bytes 1b40 - 1b7f
+ 0x72, 0x29, 0x43, 0x28, 0x73, 0x29, 0x43, 0x28,
+ 0x74, 0x29, 0x43, 0x28, 0x75, 0x29, 0x43, 0x28,
+ 0x76, 0x29, 0x43, 0x28, 0x77, 0x29, 0x43, 0x28,
+ 0x78, 0x29, 0x43, 0x28, 0x79, 0x29, 0x43, 0x28,
+ 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, 0x43, 0x31,
+ 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, 0x43, 0x31,
+ 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, 0x43, 0x31,
+ 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, 0x43, 0x31,
+ // Bytes 1b80 - 1bbf
+ 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, 0x43, 0x31,
+ 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, 0x43, 0x32,
+ 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, 0x43, 0x3D,
+ 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, 0x43, 0x46,
+ 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, 0x43, 0x47,
+ 0x50, 0x61, 0x43, 0x49, 0x49, 0x49, 0x43, 0x4C,
+ 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, 0x43, 0x4D,
+ 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, 0x43, 0x4D,
+ // Bytes 1bc0 - 1bff
+ 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, 0x43, 0x50,
+ 0x50, 0x56, 0x43, 0x50, 0x54, 0x45, 0x43, 0x54,
+ 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, 0x43, 0x56,
+ 0x49, 0x49, 0x43, 0x58, 0x49, 0x49, 0x43, 0x61,
+ 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, 0x43, 0x61,
+ 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, 0x43, 0x63,
+ 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, 0x43, 0x63,
+ 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, 0x43, 0x63,
+ // Bytes 1c00 - 1c3f
+ 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, 0x43, 0x64,
+ 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, 0x43, 0x66,
+ 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, 0x43, 0x67,
+ 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, 0x43, 0x69,
+ 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, 0x43, 0x6B,
+ 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, 0x43, 0x6B,
+ 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, 0x43, 0x6C,
+ 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, 0x43, 0x6D,
+ // Bytes 1c40 - 1c7f
+ 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, 0x43, 0x6D,
+ 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, 0x43, 0x72,
+ 0x61, 0x64, 0x43, 0x76, 0x69, 0x69, 0x43, 0x78,
+ 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, 0x43, 0xC2,
+ 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, 0x43, 0xCE,
+ 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, 0x43, 0xCE,
+ 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, 0x43, 0xCE,
+ 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, 0x43, 0xCE,
+ // Bytes 1c80 - 1cbf
+ 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, 0x44, 0x28,
+ 0x31, 0x30, 0x29, 0x44, 0x28, 0x31, 0x31, 0x29,
+ 0x44, 0x28, 0x31, 0x32, 0x29, 0x44, 0x28, 0x31,
+ 0x33, 0x29, 0x44, 0x28, 0x31, 0x34, 0x29, 0x44,
+ 0x28, 0x31, 0x35, 0x29, 0x44, 0x28, 0x31, 0x36,
+ 0x29, 0x44, 0x28, 0x31, 0x37, 0x29, 0x44, 0x28,
+ 0x31, 0x38, 0x29, 0x44, 0x28, 0x31, 0x39, 0x29,
+ 0x44, 0x28, 0x32, 0x30, 0x29, 0x44, 0x30, 0xE7,
+ // Bytes 1cc0 - 1cff
+ 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, 0x84, 0x44,
+ 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, 0xE6, 0x9C,
+ 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, 0x44, 0x32,
+ 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, 0x9C, 0x88,
+ 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, 0x33, 0xE6,
+ 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, 0x88, 0x44,
+ 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, 0xE6, 0x97,
+ 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, 0x44, 0x34,
+ // Bytes 1d00 - 1d3f
+ 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, 0x97, 0xA5,
+ 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, 0x35, 0xE7,
+ 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, 0xA5, 0x44,
+ 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, 0xE7, 0x82,
+ 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, 0x44, 0x37,
+ 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, 0x82, 0xB9,
+ 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, 0x38, 0xE6,
+ 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, 0xB9, 0x44,
+ // Bytes 1d40 - 1d7f
+ 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, 0xE6, 0x9C,
+ 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, 0x44, 0x56,
+ 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, 0x6D, 0x2E,
+ 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, 0x70, 0x2E,
+ 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, 0x69, 0x44,
+ 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, 0xB4, 0xD5,
+ 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, 0x44, 0xD5,
+ 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, 0xD5, 0xB6,
+ // Bytes 1d80 - 1dbf
+ 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, 0xD7, 0x90,
+ 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, 0xB4, 0x44,
+ 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, 0xA8, 0xD8,
+ 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, 0x44, 0xD8,
+ 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, 0xD8, 0xB2,
+ 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, 0xD8, 0xA8,
+ 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, 0x87, 0x44,
+ 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, 0xA8, 0xD9,
+ // Bytes 1dc0 - 1dff
+ 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, 0x44, 0xD8,
+ 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, 0xD8, 0xAE,
+ 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, 0xD8, 0xAA,
+ 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, 0x85, 0x44,
+ 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, 0xAA, 0xD9,
+ 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, 0x44, 0xD8,
+ 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, 0xD8, 0xAC,
+ 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, 0xD8, 0xAB,
+ // Bytes 1e00 - 1e3f
+ 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, 0x85, 0x44,
+ 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, 0xAB, 0xD9,
+ 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, 0x44, 0xD8,
+ 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, 0xD8, 0xAD,
+ 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, 0xD8, 0xAC,
+ 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, 0x8A, 0x44,
+ 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, 0xAD, 0xD9,
+ 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, 0x44, 0xD8,
+ // Bytes 1e40 - 1e7f
+ 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, 0xD8, 0xAC,
+ 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, 0xD8, 0xAE,
+ 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, 0x89, 0x44,
+ 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, 0xB3, 0xD8,
+ 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, 0x44, 0xD8,
+ 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, 0xD8, 0xB1,
+ 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, 0xD8, 0xB3,
+ 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, 0x89, 0x44,
+ // Bytes 1e80 - 1ebf
+ 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, 0xB4, 0xD8,
+ 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, 0x44, 0xD8,
+ 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, 0xD8, 0xB1,
+ 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, 0xD8, 0xB4,
+ 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, 0x89, 0x44,
+ 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, 0xB5, 0xD8,
+ 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, 0x44, 0xD8,
+ 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, 0xD9, 0x85,
+ // Bytes 1ec0 - 1eff
+ 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, 0xD8, 0xB5,
+ 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, 0xAC, 0x44,
+ 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, 0xB6, 0xD8,
+ 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, 0x44, 0xD8,
+ 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, 0xD9, 0x89,
+ 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, 0xD8, 0xB7,
+ 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, 0x85, 0x44,
+ 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, 0xB7, 0xD9,
+ // Bytes 1f00 - 1f3f
+ 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, 0x44, 0xD8,
+ 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, 0xD9, 0x85,
+ 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, 0xD8, 0xB9,
+ 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, 0xAC, 0x44,
+ 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, 0xBA, 0xD9,
+ 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, 0x44, 0xD9,
+ 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, 0xD8, 0xAD,
+ 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, 0xD9, 0x81,
+ // Bytes 1f40 - 1f7f
+ 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, 0x89, 0x44,
+ 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, 0x82, 0xD8,
+ 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, 0x44, 0xD9,
+ 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, 0xD9, 0x83,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, 0xAD, 0x44,
+ 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, 0x83, 0xD9,
+ 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, 0x44, 0xD9,
+ // Bytes 1f80 - 1fbf
+ 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, 0xD9, 0x84,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, 0xAD, 0x44,
+ 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, 0x84, 0xD9,
+ 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, 0x44, 0xD9,
+ 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, 0xD9, 0x85,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, 0xAD, 0x44,
+ // Bytes 1fc0 - 1fff
+ 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, 0x85, 0xD9,
+ 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, 0x44, 0xD9,
+ 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, 0xD8, 0xAC,
+ 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, 0xD9, 0x86,
+ 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, 0xB1, 0x44,
+ 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, 0x86, 0xD9,
+ 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, 0x44, 0xD9,
+ 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, 0xD9, 0x89,
+ // Bytes 2000 - 203f
+ 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, 0xD9, 0x87,
+ 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, 0x85, 0x44,
+ 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, 0x87, 0xD9,
+ 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, 0x44, 0xD9,
+ 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, 0xD8, 0xAD,
+ 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, 0xD9, 0x8A,
+ 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, 0xB2, 0x44,
+ 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, 0x8A, 0xD9,
+ // Bytes 2040 - 207f
+ 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, 0x44, 0xD9,
+ 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, 0xD9, 0x8A,
+ 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, 0xDB, 0x87,
+ 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, 0x80, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, 0x45, 0x28,
+ 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, 0xE1, 0x84,
+ 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x86, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, 0x45, 0x28,
+ // Bytes 2080 - 20bf
+ 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, 0xE1, 0x84,
+ 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8C, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, 0x45, 0x28,
+ 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, 0xE1, 0x84,
+ 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x91, 0x29,
+ 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, 0x45, 0x28,
+ 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, 0xE4, 0xB8,
+ 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x89, 0x29,
+ // Bytes 20c0 - 20ff
+ 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, 0x45, 0x28,
+ 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, 0xE4, 0xBA,
+ 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, 0xA3, 0x29,
+ 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, 0x45, 0x28,
+ 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, 0xE5, 0x85,
+ 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, 0xAD, 0x29,
+ 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, 0x45, 0x28,
+ 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, 0xE5, 0x8D,
+ // Bytes 2100 - 213f
+ 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, 0x8D, 0x29,
+ 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, 0x45, 0x28,
+ 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, 0xE5, 0x9C,
+ 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, 0xA6, 0x29,
+ 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, 0x45, 0x28,
+ 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, 0xE6, 0x9C,
+ 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0xA8, 0x29,
+ 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x45, 0x28,
+ // Bytes 2140 - 217f
+ 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, 0xE7, 0x81,
+ 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, 0xB9, 0x29,
+ 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x45, 0x28,
+ 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, 0xE7, 0xA5,
+ 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, 0xAD, 0x29,
+ 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, 0x45, 0x28,
+ 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, 0xE8, 0xB2,
+ 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, 0x87, 0x29,
+ // Bytes 2180 - 21bf
+ 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x45, 0x30,
+ 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0x30, 0xE6,
+ 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, 0x9C, 0x88,
+ 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x31, 0xE6,
+ 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, 0x82, 0xB9,
+ 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x31,
+ 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x32, 0xE7,
+ // Bytes 21c0 - 21ff
+ 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x34, 0xE7,
+ 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x36, 0xE7,
+ 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ // Bytes 2200 - 223f
+ 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x38, 0xE7,
+ 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, 0x97, 0xA5,
+ 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+ 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, 0xE2, 0x81,
+ 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x34,
+ 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x31,
+ 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, 0xE2, 0x81,
+ 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x38,
+ // Bytes 2240 - 227f
+ 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, 0x45, 0x32,
+ 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x30, 0xE7,
+ 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+ 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x32, 0xE7,
+ 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+ 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x34, 0xE7,
+ // Bytes 2280 - 22bf
+ 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x32,
+ 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x38, 0xE6,
+ 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, 0x97, 0xA5,
+ 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x32,
+ 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0x30, 0xE6,
+ 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, 0x97, 0xA5,
+ 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x33,
+ // Bytes 22c0 - 22ff
+ 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0xE2, 0x81,
+ 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, 0x84, 0x35,
+ 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x35,
+ 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, 0xE2, 0x81,
+ 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, 0x95, 0x6D,
+ 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x6D,
+ 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, 0xE2, 0x81,
+ 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, 0x88, 0x95,
+ // Bytes 2300 - 233f
+ 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, 0x95, 0x73,
+ 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A,
+ 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,
+ 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8,
+ 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xAA,
+ 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8,
+ 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD8, 0xAD,
+ 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9,
+ // Bytes 2340 - 237f
+ 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89,
+ 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0x46,
+ 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8,
+ 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAA,
+ 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xAA, 0xD9,
+ 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9,
+ 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A,
+ // Bytes 2380 - 23bf
+ 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0x46,
+ 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8,
+ 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAD,
+ 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD9,
+ 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8,
+ 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89,
+ 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,
+ // Bytes 23c0 - 23ff
+ 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8,
+ 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xB3,
+ 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD9,
+ 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD9, 0x85,
+ 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9,
+ 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85,
+ 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,
+ 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8,
+ // Bytes 2400 - 243f
+ 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB5,
+ 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, 0xB5, 0xD8,
+ 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, 0xD9, 0x84,
+ 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xDB,
+ 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85,
+ 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0x46,
+ 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8,
+ 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xB7,
+ // Bytes 2440 - 247f
+ 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB7, 0xD9,
+ 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9,
+ 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85,
+ 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x89, 0x46,
+ 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8,
+ 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xBA,
+ 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xBA, 0xD9,
+ // Bytes 2480 - 24bf
+ 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, 0xD8, 0xAE,
+ 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, 0x85, 0xD9,
+ 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92,
+ 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0x46,
+ 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9,
+ 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x83,
+ 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x83, 0xD9,
+ 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAC,
+ // Bytes 24c0 - 24ff
+ 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9,
+ 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A,
+ 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0x46,
+ 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9,
+ 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x84,
+ 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD9,
+ 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, 0xD9, 0x85,
+ 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8,
+ // Bytes 2500 - 253f
+ 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE,
+ 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0x46,
+ 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9,
+ 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD9, 0x85,
+ 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8,
+ 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAE,
+ 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9,
+ 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A,
+ // Bytes 2540 - 257f
+ 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
+ 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9,
+ 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x86,
+ 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8,
+ 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAD,
+ 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9,
+ 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A,
+ 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, 0x46,
+ // Bytes 2580 - 25bf
+ 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,
+ 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD9, 0x87,
+ 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD8,
+ 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD8, 0xAD,
+ 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9,
+ 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A,
+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0x46,
+ 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0x46, 0xD9,
+ // Bytes 25c0 - 25ff
+ 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, 0xD9, 0x8A,
+ 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, 0x8A, 0xD9,
+ 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+ 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,
+ 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86,
+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0x46,
+ 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0x46, 0xD9,
+ 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, 0xD9, 0x8A,
+ // Bytes 2600 - 263f
+ 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,
+ 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+ 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB,
+ 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90,
+ 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0x46,
+ 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, 0x46, 0xE0,
+ 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, 0xE0, 0xBA,
+ 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, 0xBB, 0x8D,
+ // Bytes 2640 - 267f
+ 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, 0x80, 0xE0,
+ 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, 0xE0, 0xBE,
+ 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7,
+ 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0x46,
+ 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
+ 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,
+ 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBE, 0x92,
+ 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x9C, 0xE0,
+ // Bytes 2680 - 26bf
+ 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE,
+ 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7,
+ 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0x46,
+ 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x46, 0xE2,
+ 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, 0xE2, 0x88,
+ 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, 0x88, 0xAE,
+ 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, 0xBB, 0xE3,
+ 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, 0xE3, 0x82,
+ // Bytes 26c0 - 26ff
+ 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+ 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB3, 0x46,
+ 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, 0x46, 0xE3,
+ 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83,
+ 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, 0x83, 0x9B,
+ 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, 0x9F, 0xE3,
+ 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, 0xE3, 0x83,
+ 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0,
+ // Bytes 2700 - 273f
+ 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92, 0x8C, 0x46,
+ 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5,
+ 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98,
+ 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD,
+ 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2,
+ 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80, 0x94, 0x53,
+ 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1, 0x84, 0x80,
+ 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
+ // Bytes 2740 - 277f
+ 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,
+ 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
+ 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48,
+ 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29,
+ 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1,
+ 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85,
+ 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8B, 0xE1,
+ 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C,
+ // Bytes 2780 - 27bf
+ 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
+ 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1,
+ 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
+ 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48,
+ 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29,
+ 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1,
+ 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85,
+ 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64, 0xE2, 0x88,
+ // Bytes 27c0 - 27ff
+ 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83,
+ 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9,
+ 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1,
+ 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8,
+ 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48,
+ 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85,
+ 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9,
+ 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85,
+ // Bytes 2800 - 283f
+ 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9,
+ 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2,
+ 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80,
+ 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49,
+ 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88,
+ 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE,
+ 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80, 0x94, 0xE4,
+ 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,
+ // Bytes 2840 - 287f
+ 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49,
+ 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80,
+ 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89,
+ 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6,
+ 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,
+ 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80, 0x95, 0x49,
+ 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC, 0xE3, 0x80,
+ 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9,
+ // Bytes 2880 - 28bf
+ 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7,
+ 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82,
+ 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,
+ 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9,
+ 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82, 0xAA, 0xE3,
+ 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82,
+ 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49,
+ // Bytes 28c0 - 28ff
+ 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+ 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC,
+ 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3,
+ 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82,
+ 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49,
+ 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99,
+ 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3,
+ // Bytes 2900 - 293f
+ 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,
+ 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x49,
+ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+ 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99,
+ 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3,
+ 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49, 0xE3, 0x83,
+ 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0x49,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82,
+ // Bytes 2940 - 297f
+ 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB,
+ 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3,
+ 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,
+ 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49,
+ 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+ 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83,
+ 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83, 0x9E, 0xE3,
+ 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83,
+ // Bytes 2980 - 29bf
+ 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49,
+ 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83,
+ 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83,
+ 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80, 0xB2, 0xE2,
+ 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,
+ 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2,
+ 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C, 0xE3, 0x82,
+ 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3,
+ // Bytes 29c0 - 29ff
+ 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8, 0xE3, 0x83,
+ 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0x4C,
+ 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x82, 0xAB,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9,
+ 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE3,
+ 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA,
+ // Bytes 2a00 - 2a3f
+ 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,
+ 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC,
+ 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3,
+ 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82,
+ 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3,
+ 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x83,
+ 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0x4C,
+ 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82,
+ // Bytes 2a40 - 2a7f
+ 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x82, 0xBF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82,
+ 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0x4C, 0xE3,
+ 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0x95, 0xE3,
+ 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,
+ 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3,
+ // Bytes 2a80 - 2abf
+ 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C, 0xE3, 0x83,
+ 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3,
+ 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82,
+ 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x4C,
+ 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x9E,
+ 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83,
+ 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF,
+ // Bytes 2ac0 - 2aff
+ 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3,
+ 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88,
+ 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAA, 0xE3,
+ 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,
+ 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3,
+ 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C, 0xE6, 0xA0,
+ 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7,
+ 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84, 0x8B, 0xE1,
+ // Bytes 2b00 - 2b3f
+ 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE,
+ 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8,
+ 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,
+ 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F,
+ 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82,
+ 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+ // Bytes 2b40 - 2b7f
+ 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83,
+ 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83,
+ 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A,
+ // Bytes 2b80 - 2bbf
+ 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83,
+ 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83,
+ 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83,
+ 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC,
+ 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85,
+ // Bytes 2bc0 - 2bff
+ 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1,
+ 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82, 0xAD, 0xE3,
+ 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0x52, 0xE3,
+ 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,
+ 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+ 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+ // Bytes 2c00 - 2c3f
+ 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83,
+ 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x52,
+ 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82,
+ 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3,
+ 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F, 0xE3, 0x82,
+ 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3,
+ 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52, 0xE3, 0x83,
+ // Bytes 2c40 - 2c7f
+ 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3,
+ 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB,
+ 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3,
+ 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7,
+ 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x9F, 0xE3,
+ 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x52, 0xE3,
+ 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,
+ // Bytes 2c80 - 2cbf
+ 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+ 0xB3, 0x61, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89,
+ 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9,
+ 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A,
+ 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9,
+ 0x84, 0xD9, 0x85, 0x06, 0xE0, 0xA7, 0x87, 0xE0,
+ 0xA6, 0xBE, 0x01, 0x06, 0xE0, 0xA7, 0x87, 0xE0,
+ 0xA7, 0x97, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+ // Bytes 2cc0 - 2cff
+ 0xAC, 0xBE, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+ 0xAD, 0x96, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+ 0xAD, 0x97, 0x01, 0x06, 0xE0, 0xAE, 0x92, 0xE0,
+ 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0,
+ 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0,
+ 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x87, 0xE0,
+ 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xB2, 0xBF, 0xE0,
+ 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0,
+ // Bytes 2d00 - 2d3f
+ 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0,
+ 0xB3, 0x96, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0,
+ 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0,
+ 0xB5, 0x97, 0x01, 0x06, 0xE0, 0xB5, 0x87, 0xE0,
+ 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB7, 0x99, 0xE0,
+ 0xB7, 0x9F, 0x01, 0x06, 0xE1, 0x80, 0xA5, 0xE1,
+ 0x80, 0xAE, 0x01, 0x06, 0xE1, 0xAC, 0x85, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x87, 0xE1,
+ // Bytes 2d40 - 2d7f
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x89, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8B, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8D, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x91, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBA, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBC, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBE, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBF, 0xE1,
+ // Bytes 2d80 - 2dbf
+ 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAD, 0x82, 0xE1,
+ 0xAC, 0xB5, 0x01, 0x08, 0xF0, 0x91, 0x84, 0xB1,
+ 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91,
+ 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08,
+ 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE,
+ 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91,
+ 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9,
+ 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08, 0xF0, 0x91,
+ // Bytes 2dc0 - 2dff
+ 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA, 0x01, 0x08,
+ 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBD,
+ 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8, 0xF0, 0x91,
+ 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB9,
+ 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91,
+ 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0, 0x01, 0x09,
+ 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3,
+ 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0, 0xB7,
+ // Bytes 2e00 - 2e3f
+ 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x44, 0x44, 0x5A,
+ 0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, 0xCC, 0x8C,
+ 0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xCD, 0x46,
+ 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x46,
+ 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x46,
+ 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x46,
+ 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ // Bytes 2e40 - 2e7f
+ 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01, 0x46,
+ 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ // Bytes 2e80 - 2ebf
+ 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01, 0x46,
+ 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01, 0x49,
+ 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82,
+ 0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85,
+ 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x01,
+ // Bytes 2ec0 - 2eff
+ 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3,
+ 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE3,
+ 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B,
+ 0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, 0x83, 0xA4,
+ 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82,
+ 0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, 0x85,
+ 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1,
+ 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, 0xE3,
+ // Bytes 2f00 - 2f3f
+ 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF,
+ 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x82, 0xB7,
+ 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82,
+ 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x83,
+ 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,
+ 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3,
+ 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3,
+ 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52,
+ // Bytes 2f40 - 2f7f
+ 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82,
+ 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3,
+ 0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, 0x95, 0xE3,
+ 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83,
+ 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x86,
+ 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, 0x86,
+ 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, 0x03,
+ 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, 0xB8,
+ // Bytes 2f80 - 2fbf
+ 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, 0x41,
+ 0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, 0x81, 0xCD,
+ 0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, 0x41, 0xCC,
+ 0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, 0xCD, 0x03,
+ 0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, 0xCC, 0x8F,
+ 0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, 0x03, 0x41,
+ 0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, 0xA8, 0xA9,
+ 0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, 0x42, 0xCC,
+ // Bytes 2fc0 - 2fff
+ 0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, 0xB9, 0x03,
+ 0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, 0xCC, 0x82,
+ 0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, 0x03, 0x43,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, 0x87, 0xCD,
+ 0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC,
+ 0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, 0xA9, 0x03,
+ 0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, 0xCC, 0xB1,
+ 0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, 0x03, 0x45,
+ // Bytes 3000 - 303f
+ 0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, 0x83, 0xCD,
+ 0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, 0x45, 0xCC,
+ 0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, 0xCD, 0x03,
+ 0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, 0x03, 0x45,
+ 0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, 0xA8, 0xA9,
+ 0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, 0x45, 0xCC,
+ 0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, 0xCD, 0x03,
+ // Bytes 3040 - 307f
+ 0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, 0xCC, 0x82,
+ 0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, 0x03, 0x47,
+ 0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, 0x87, 0xCD,
+ 0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, 0x47, 0xCC,
+ 0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, 0xCD, 0x03,
+ 0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, 0xCC, 0x88,
+ 0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, 0x03, 0x48,
+ 0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, 0xA7, 0xA9,
+ // Bytes 3080 - 30bf
+ 0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, 0x49, 0xCC,
+ 0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, 0xCD, 0x03,
+ 0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, 0xCC, 0x83,
+ 0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, 0x03, 0x49,
+ 0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, 0x87, 0xCD,
+ 0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, 0x49, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, 0xCD, 0x03,
+ 0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, 0xCC, 0xA3,
+ // Bytes 30c0 - 30ff
+ 0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, 0x03, 0x49,
+ 0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, 0x82, 0xCD,
+ 0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, 0x4B, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, 0xCC, 0xB1,
+ 0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, 0x03, 0x4C,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, 0xA7, 0xA9,
+ 0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, 0x4C, 0xCC,
+ // Bytes 3100 - 313f
+ 0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, 0xCD, 0x03,
+ 0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, 0xCC, 0xA3,
+ 0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, 0x03, 0x4E,
+ 0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, 0x83, 0xCD,
+ 0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, 0x4E, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, 0xCC, 0xAD,
+ 0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, 0x03, 0x4F,
+ // Bytes 3140 - 317f
+ 0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, 0x81, 0xCD,
+ 0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, 0x4F, 0xCC,
+ 0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, 0xCD, 0x03,
+ 0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, 0xCC, 0x8F,
+ 0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, 0x03, 0x50,
+ 0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, 0x87, 0xCD,
+ 0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, 0x52, 0xCC,
+ 0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, 0xCD, 0x03,
+ // Bytes 3180 - 31bf
+ 0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, 0xCC, 0x91,
+ 0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, 0x03, 0x52,
+ 0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, 0x82, 0xCD,
+ 0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, 0x53, 0xCC,
+ 0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, 0xA9, 0x03,
+ 0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, 0x03, 0x54,
+ 0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, 0xA7, 0xA9,
+ // Bytes 31c0 - 31ff
+ 0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, 0x54, 0xCC,
+ 0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, 0xCD, 0x03,
+ 0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, 0xCC, 0x82,
+ 0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, 0x03, 0x55,
+ 0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, 0x8A, 0xCD,
+ 0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, 0x55, 0xCC,
+ 0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, 0xCD, 0x03,
+ 0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, 0xCC, 0xA3,
+ // Bytes 3200 - 323f
+ 0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, 0x03, 0x55,
+ 0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, 0xAD, 0xB9,
+ 0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, 0x56, 0xCC,
+ 0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, 0xCC, 0x81,
+ 0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, 0x03, 0x57,
+ 0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, 0x88, 0xCD,
+ 0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, 0x58, 0xCC,
+ // Bytes 3240 - 327f
+ 0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, 0xCD, 0x03,
+ 0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, 0xCC, 0x81,
+ 0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, 0x03, 0x59,
+ 0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, 0x84, 0xCD,
+ 0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, 0x59, 0xCC,
+ 0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, 0xCD, 0x03,
+ 0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, 0x81,
+ 0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, 0x03, 0x5A,
+ // Bytes 3280 - 32bf
+ 0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC,
+ 0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, 0xCD, 0x03,
+ 0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, 0xCC, 0x83,
+ 0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, 0x03, 0x61,
+ 0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, 0x61, 0xCC,
+ 0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, 0xB9, 0x03,
+ // Bytes 32c0 - 32ff
+ 0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, 0xCC, 0x87,
+ 0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, 0x03, 0x62,
+ 0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, 0x81, 0xCD,
+ 0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, 0x63, 0xCC,
+ 0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, 0xCD, 0x03,
+ 0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, 0x03, 0x64,
+ 0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, 0xAD, 0xB9,
+ // Bytes 3300 - 333f
+ 0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, 0x65, 0xCC,
+ 0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, 0xCD, 0x03,
+ 0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, 0xCC, 0x86,
+ 0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, 0x03, 0x65,
+ 0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, 0x89, 0xCD,
+ 0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, 0x65, 0xCC,
+ 0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, 0xCD, 0x03,
+ 0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, 0xCC, 0xAD,
+ // Bytes 3340 - 337f
+ 0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, 0x03, 0x66,
+ 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x81, 0xCD,
+ 0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, 0x67, 0xCC,
+ 0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, 0xCD, 0x03,
+ 0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, 0x03, 0x68,
+ 0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, 0x87, 0xCD,
+ 0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, 0x68, 0xCC,
+ // Bytes 3380 - 33bf
+ 0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, 0xCC, 0xAE,
+ 0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, 0x03, 0x69,
+ 0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, 0x81, 0xCD,
+ 0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, 0x69, 0xCC,
+ 0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, 0xCD, 0x03,
+ 0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, 0xCC, 0x89,
+ 0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, 0x03, 0x69,
+ // Bytes 33c0 - 33ff
+ 0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, 0x91, 0xCD,
+ 0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, 0x69, 0xCC,
+ 0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, 0xB9, 0x03,
+ 0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, 0xCC, 0x8C,
+ 0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, 0x03, 0x6B,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0xA3, 0xB9,
+ 0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, 0x6B, 0xCC,
+ 0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, 0xCD, 0x03,
+ // Bytes 3400 - 343f
+ 0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, 0xCC, 0xA7,
+ 0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, 0x03, 0x6C,
+ 0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, 0x81, 0xCD,
+ 0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, 0x6D, 0xCC,
+ 0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, 0xCD, 0x03,
+ 0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, 0xCC, 0x83,
+ 0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, 0x03, 0x6E,
+ 0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, 0xA3, 0xB9,
+ // Bytes 3440 - 347f
+ 0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, 0x6E, 0xCC,
+ 0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, 0xB9, 0x03,
+ 0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, 0xCC, 0x81,
+ 0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, 0x03, 0x6F,
+ 0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, 0x8B, 0xCD,
+ 0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, 0x6F, 0xCC,
+ 0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, 0xCD, 0x03,
+ 0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, 0xCC, 0x87,
+ // Bytes 3480 - 34bf
+ 0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, 0x03, 0x72,
+ 0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, 0x72, 0xCC,
+ 0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, 0xA9, 0x03,
+ 0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, 0xCC, 0x82,
+ 0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, 0x03, 0x73,
+ 0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, 0xA7, 0xA9,
+ 0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, 0x74, 0xCC,
+ // Bytes 34c0 - 34ff
+ 0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, 0xCD, 0x03,
+ 0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, 0xCC, 0xA6,
+ 0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, 0x03, 0x74,
+ 0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, 0xB1, 0xB9,
+ 0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, 0x75, 0xCC,
+ 0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, 0xCD, 0x03,
+ 0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, 0xCC, 0x89,
+ 0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, 0x03, 0x75,
+ // Bytes 3500 - 353f
+ 0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, 0x75, 0xCC,
+ 0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, 0xB9, 0x03,
+ 0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, 0xCC, 0xA8,
+ 0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, 0x03, 0x75,
+ 0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, 0x83, 0xCD,
+ 0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, 0x77, 0xCC,
+ 0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, 0xCD, 0x03,
+ // Bytes 3540 - 357f
+ 0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, 0xCC, 0x87,
+ 0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, 0x03, 0x77,
+ 0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, 0xA3, 0xB9,
+ 0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, 0x78, 0xCC,
+ 0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, 0xCD, 0x03,
+ 0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, 0xCC, 0x82,
+ 0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, 0x03, 0x79,
+ 0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, 0x87, 0xCD,
+ // Bytes 3580 - 35bf
+ 0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC,
+ 0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, 0xCD, 0x03,
+ 0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, 0x81,
+ 0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, 0x03, 0x7A,
+ 0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, 0x8C, 0xCD,
+ 0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC,
+ 0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, 0x80, 0xCE,
+ 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x04, 0xC2,
+ // Bytes 35c0 - 35ff
+ 0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, 0x86, 0xCC,
+ 0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, 0x84, 0xCD,
+ 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, 0x04, 0xC3,
+ 0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0xA6, 0xCC,
+ 0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, 0x81, 0xCD,
+ 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, 0x04, 0xC6,
+ 0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, 0x92, 0xCC,
+ 0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x80, 0xCD,
+ // Bytes 3600 - 363f
+ 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x04, 0xCE,
+ 0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0x91, 0xCC,
+ 0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, 0x85, 0xDD,
+ 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xCE,
+ 0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCC,
+ 0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, 0x81, 0xCD,
+ 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, 0x04, 0xCE,
+ 0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x99, 0xCC,
+ // Bytes 3640 - 367f
+ 0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x84, 0xCD,
+ 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, 0x04, 0xCE,
+ 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0x9F, 0xCC,
+ 0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, 0x81, 0xCD,
+ 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, 0x04, 0xCE,
+ 0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA5, 0xCC,
+ 0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x84, 0xCD,
+ 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, 0x04, 0xCE,
+ // Bytes 3680 - 36bf
+ 0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0xA9, 0xCC,
+ 0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, 0x81, 0xCD,
+ 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, 0x04, 0xCE,
+ 0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB1, 0xCC,
+ 0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, 0x85, 0xDD,
+ 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xCE,
+ 0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xB7, 0xCD,
+ 0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, 0x80, 0xCD,
+ // Bytes 36c0 - 36ff
+ 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x04, 0xCE,
+ 0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB9, 0xCC,
+ 0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, 0x82, 0xCD,
+ 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, 0x04, 0xCE,
+ 0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x81, 0xCC,
+ 0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, 0x94, 0xCD,
+ 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, 0x04, 0xCF,
+ 0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x85, 0xCC,
+ // Bytes 3700 - 373f
+ 0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x86, 0xCD,
+ 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, 0x04, 0xCF,
+ 0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, 0x92, 0xCC,
+ 0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x90, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, 0x81, 0xCD,
+ 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xD0,
+ // Bytes 3740 - 377f
+ 0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x95, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x98, 0xCC,
+ 0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x84, 0xCD,
+ 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, 0x04, 0xD0,
+ 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x9A, 0xCC,
+ 0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, 0x88, 0xCD,
+ // Bytes 3780 - 37bf
+ 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, 0x04, 0xD0,
+ 0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xA3, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, 0xCD,
+ 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xAD, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0xB5, 0xCC,
+ // Bytes 37c0 - 37ff
+ 0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, 0x04, 0xD0,
+ 0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB6, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, 0x04, 0xD0,
+ 0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, 0xB8, 0xCC,
+ 0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, 0x04, 0xD0,
+ // Bytes 3800 - 383f
+ 0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x83, 0xCC,
+ 0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x86, 0xCD,
+ 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, 0x04, 0xD1,
+ 0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, 0x87, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, 0x04, 0xD1,
+ 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0xB4, 0xCC,
+ 0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, 0xCD,
+ // Bytes 3840 - 387f
+ 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD3,
+ 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA8, 0xCC,
+ 0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, 0x88, 0xCD,
+ 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x04, 0xD8,
+ 0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, 0xA7, 0xD9,
+ 0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, 0x94, 0xCD,
+ 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x04, 0xDB,
+ 0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x92, 0xD9,
+ // Bytes 3880 - 38bf
+ 0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, 0x94, 0xCD,
+ 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,
+ 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x41,
+ 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC,
+ 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x86,
+ 0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC,
+ 0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x83,
+ 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xCE,
+ // Bytes 38c0 - 38ff
+ 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05,
+ 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x41,
+ 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC,
+ 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, 0xCC, 0xA3,
+ 0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, 0xA7, 0xCC,
+ 0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x80,
+ 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xCE,
+ 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05,
+ // Bytes 3900 - 393f
+ 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x45,
+ 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC,
+ 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0xA3,
+ 0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, 0xA7, 0xCC,
+ 0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, 0xCC, 0x81,
+ 0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE,
+ 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05,
+ 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x4F,
+ // Bytes 3940 - 397f
+ 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC,
+ 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x83,
+ 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC,
+ 0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x88,
+ 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xCE,
+ 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05,
+ 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x4F,
+ 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC,
+ // Bytes 3980 - 39bf
+ 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x9B,
+ 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC,
+ 0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x89,
+ 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA,
+ 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05,
+ 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x52,
+ 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x53, 0xCC,
+ 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0x8C,
+ // Bytes 39c0 - 39ff
+ 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0xA3, 0xCC,
+ 0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, 0xCC, 0x81,
+ 0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xCE,
+ 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05,
+ 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x55,
+ 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x55, 0xCC,
+ 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, 0xCC, 0x9B,
+ 0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC,
+ // Bytes 3a00 - 3a3f
+ 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x83,
+ 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,
+ 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,
+ 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x61,
+ 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC,
+ 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x82,
+ 0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC,
+ 0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x81,
+ // Bytes 3a40 - 3a7f
+ 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xCE,
+ 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCE, 0x05,
+ 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x61,
+ 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x61, 0xCC,
+ 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0xA3,
+ 0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, 0xA3, 0xCC,
+ 0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, 0xCC, 0x81,
+ 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xCE,
+ // Bytes 3a80 - 3abf
+ 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05,
+ 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x65,
+ 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x65, 0xCC,
+ 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x84,
+ 0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0xA3, 0xCC,
+ 0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, 0xCC, 0x86,
+ 0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xCE,
+ 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05,
+ // Bytes 3ac0 - 3aff
+ 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x6F,
+ 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC,
+ 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x82,
+ 0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC,
+ 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x84,
+ 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xCE,
+ 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05,
+ 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x6F,
+ // Bytes 3b00 - 3b3f
+ 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC,
+ 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x9B,
+ 0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,
+ 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x83,
+ 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xCE,
+ 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05,
+ 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x6F,
+ 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x72, 0xCC,
+ // Bytes 3b40 - 3b7f
+ 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, 0xCC, 0x81,
+ 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0x8C, 0xCC,
+ 0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, 0xCC, 0x87,
+ 0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xCE,
+ 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCE, 0x05,
+ 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, 0x75,
+ 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC,
+ 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, 0xCC, 0x88,
+ // Bytes 3b80 - 3bbf
+ 0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC,
+ 0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x81,
+ 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xCE,
+ 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, 0x05,
+ 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, 0xE1,
+ 0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBE,
+ 0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBE, 0xBF,
+ 0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC,
+ // Bytes 3bc0 - 3bff
+ 0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x81,
+ 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0xCE,
+ 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87,
+ 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x92,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, 0xB8,
+ // Bytes 3c00 - 3c3f
+ 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88,
+ 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x83,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0x05,
+ // Bytes 3c40 - 3c7f
+ 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89,
+ 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB3,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, 0x05,
+ // Bytes 3c80 - 3cbf
+ 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
+ 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x83,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, 0x05,
+ 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, 0xE2,
+ // Bytes 3cc0 - 3cff
+ 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A,
+ 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xAB,
+ 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, 0xCC,
+ 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8,
+ 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0x05,
+ 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, 0x06,
+ 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ // Bytes 3d00 - 3d3f
+ 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3d40 - 3d7f
+ 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3d80 - 3dbf
+ 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ // Bytes 3dc0 - 3dff
+ 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,
+ // Bytes 3e00 - 3e3f
+ 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3e40 - 3e7f
+ 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3e80 - 3ebf
+ 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06,
+ 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06,
+ // Bytes 3ec0 - 3eff
+ 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06,
+ 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06,
+ 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,
+ 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,
+ // Bytes 3f00 - 3f3f
+ 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x0D, 0x06,
+ 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x89, 0x06,
+ 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x15, 0x06,
+ 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 3f40 - 3f7f
+ 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 3f80 - 3fbf
+ 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 3fc0 - 3fff
+ 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 4000 - 403f
+ 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ // Bytes 4040 - 407f
+ 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ // Bytes 4080 - 40bf
+ 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x06,
+ // Bytes 40c0 - 40ff
+ 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06,
+ 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x08,
+ 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93,
+ // Bytes 4100 - 413f
+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93,
+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
+ // Bytes 4140 - 417f
+ 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94,
+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93,
+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9,
+ // Bytes 4180 - 41bf
+ 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93,
+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80,
+ // Bytes 41c0 - 41ff
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94,
+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93,
+ 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08,
+ // Bytes 4200 - 423f
+ 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93,
+ 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08,
+ 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85,
+ 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80,
+ 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94,
+ // Bytes 4240 - 427f
+ 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08,
+ 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, 0xBA,
+ 0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, 0x91,
+ 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0xA5,
+ 0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x42, 0xC2, 0xB4,
+ 0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD, 0x43, 0x20,
+ 0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC, 0x84, 0xCD,
+ // Bytes 4280 - 42bf
+ 0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43, 0x20, 0xCC,
+ 0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87, 0xCD, 0x43,
+ 0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20, 0xCC, 0x8A,
+ 0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD, 0x43, 0x20,
+ 0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC, 0x94, 0xCD,
+ 0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43, 0x20, 0xCC,
+ 0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3, 0xB9, 0x43,
+ 0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20, 0xCD, 0x85,
+ // Bytes 42c0 - 42ff
+ 0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D, 0x43, 0x20,
+ 0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9, 0x8D, 0x65,
+ 0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43, 0x20, 0xD9,
+ 0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90, 0x71, 0x43,
+ 0x20, 0xD9, 0x91, 0x75, 0x43, 0x20, 0xD9, 0x92,
+ 0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD, 0x43, 0x73,
+ 0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3, 0x82, 0x99,
+ 0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x11, 0x44,
+ // Bytes 4300 - 433f
+ 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44, 0xCE, 0x91,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95, 0xCC, 0x81,
+ 0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xCD, 0x44,
+ 0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x9F,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x81,
+ 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x44,
+ 0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB1,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5, 0xCC, 0x81,
+ // Bytes 4340 - 437f
+ 0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x44,
+ 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xBF,
+ 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85, 0xCC, 0x81,
+ 0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x44,
+ 0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44, 0xD7, 0x90,
+ 0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x92,
+ // Bytes 4380 - 43bf
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44, 0xD7, 0x95,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44, 0xD7, 0x99,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x45, 0x44,
+ // Bytes 43c0 - 43ff
+ 0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x9C,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA3,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x4D, 0x44,
+ 0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA7,
+ 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8, 0xD6, 0xBC,
+ // Bytes 4400 - 443f
+ 0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x45, 0x44,
+ 0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44, 0xD7, 0xA9,
+ 0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA, 0xD6, 0xBC,
+ 0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x35, 0x44,
+ 0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44, 0xD8, 0xA7,
+ 0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x94,
+ 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x44,
+ 0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44, 0xD8, 0xB1,
+ // Bytes 4440 - 447f
+ 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80, 0xD9, 0x8B,
+ 0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x69, 0x44,
+ 0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44, 0xD9, 0x80,
+ 0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x91,
+ 0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x79, 0x44,
+ 0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x88,
+ 0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89, 0xD9, 0xB0,
+ 0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x44,
+ // Bytes 4480 - 44bf
+ 0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44, 0xDB, 0x95,
+ 0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC, 0x88, 0xCC,
+ 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81,
+ 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xCE,
+ 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x45,
+ 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x45, 0x20,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xCC,
+ 0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x94,
+ // Bytes 44c0 - 44ff
+ 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x94, 0xCD,
+ 0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91,
+ 0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x76,
+ 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x45,
+ 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x45, 0x20,
+ 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9,
+ 0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2, 0xAB, 0x9D,
+ 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, 0x88,
+ // Bytes 4500 - 453f
+ 0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85, 0xCC, 0x88,
+ 0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,
+ 0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9, 0xD6, 0xBC,
+ 0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80, 0xD9, 0x8E,
+ 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x8F,
+ 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x90,
+ 0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4, 0x95, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x96, 0xE0,
+ // Bytes 4540 - 457f
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x97, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x9C, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA1, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA2, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAB, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAF, 0xE0,
+ 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA1, 0xE0,
+ 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA2, 0xE0,
+ // Bytes 4580 - 45bf
+ 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xAF, 0xE0,
+ 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x96, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x97, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x9C, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xAB, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB2, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB8, 0xE0,
+ 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA1, 0xE0,
+ // Bytes 45c0 - 45ff
+ 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA2, 0xE0,
+ 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE, 0xB2, 0xE0,
+ 0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE, 0xB3, 0xE0,
+ 0xBE, 0x80, 0xA1, 0x46, 0xE3, 0x83, 0x86, 0xE3,
+ 0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D, 0x85, 0x97,
+ 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D,
+ 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48,
+ 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,
+ // Bytes 4600 - 463f
+ 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE, 0xB2, 0xE0,
+ 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x49, 0xE0,
+ 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80,
+ 0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C,
+ 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5,
+ 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D,
+ // Bytes 4640 - 467f
+ 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
+ 0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98,
+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1,
+ 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xB2, 0x4C,
+ 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5,
+ 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D,
+ 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D,
+ // Bytes 4680 - 46bf
+ 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA,
+ 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE,
+ 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D,
+ 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x83,
+ 0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41, 0xCC, 0x86,
+ 0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD, 0x83, 0x41,
+ 0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC, 0x8A, 0xCD,
+ 0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83, 0x43, 0xCC,
+ // Bytes 46c0 - 46ff
+ 0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82, 0xCD, 0x83,
+ 0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45, 0xCC, 0xA3,
+ 0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9, 0x83, 0x49,
+ 0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC, 0xA3, 0xB9,
+ 0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83, 0x4F, 0xCC,
+ 0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84, 0xCD, 0x83,
+ 0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F, 0xCC, 0x88,
+ 0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1, 0x83, 0x4F,
+ // Bytes 4700 - 473f
+ 0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0xA8, 0xA9,
+ 0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83, 0x53, 0xCC,
+ 0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C, 0xCD, 0x83,
+ 0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55, 0xCC, 0x83,
+ 0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD, 0x83, 0x55,
+ 0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC, 0x9B, 0xB1,
+ 0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83, 0x61, 0xCC,
+ 0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87, 0xCD, 0x83,
+ // Bytes 4740 - 477f
+ 0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61, 0xCC, 0x8A,
+ 0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9, 0x83, 0x63,
+ 0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC, 0x82, 0xCD,
+ 0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83, 0x65, 0xCC,
+ 0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7, 0xA9, 0x83,
+ 0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C, 0xCC, 0xA3,
+ 0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD, 0x83, 0x6F,
+ 0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC, 0x84, 0xCD,
+ // Bytes 4780 - 47bf
+ 0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83, 0x6F, 0xCC,
+ 0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B, 0xB1, 0x83,
+ 0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0xA8,
+ 0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9, 0x83, 0x73,
+ 0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC, 0x8C, 0xCD,
+ 0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83, 0x75, 0xCC,
+ 0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84, 0xCD, 0x83,
+ 0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75, 0xCC, 0x9B,
+ // Bytes 47c0 - 47ff
+ 0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x95,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x99,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA5,
+ // Bytes 4800 - 483f
+ 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x93,
+ 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84, 0xCE, 0xB1,
+ 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x93,
+ 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84, 0xCE, 0xB5,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x84,
+ // Bytes 4840 - 487f
+ 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x84,
+ 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84, 0xCE, 0xB9,
+ 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x94,
+ 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xCD, 0x84,
+ 0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84, 0xCF, 0x85,
+ 0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x93,
+ // Bytes 4880 - 48bf
+ 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84, 0xCF, 0x89,
+ 0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x93,
+ 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x84,
+ 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86, 0xCE, 0x91,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x91,
+ // Bytes 48c0 - 48ff
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97,
+ // Bytes 4900 - 493f
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,
+ // Bytes 4940 - 497f
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7,
+ // Bytes 4980 - 49bf
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7,
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89,
+ 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89,
+ // Bytes 49c0 - 49ff
+ 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x42, 0xCC, 0x80,
+ 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD, 0x33, 0x42,
+ 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1, 0x85, 0xA1,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA5,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43, 0xE1,
+ // Bytes 4a00 - 4a3f
+ 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA9,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAD,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01, 0x00,
+ 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB1,
+ 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01, 0x00,
+ // Bytes 4a40 - 4a7f
+ 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43, 0xE1,
+ 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB5,
+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01, 0x00,
+ 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43, 0xE1,
+ 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB0,
+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01, 0x00,
+ 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43, 0xE1,
+ 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB4,
+ // Bytes 4a80 - 4abf
+ 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01, 0x00,
+ 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x33, 0x43,
+ 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43, 0xE3, 0x82,
+ 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD, 0xB1, 0xE0,
+ 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0, 0xBD, 0xB1,
+ 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46, 0xE0, 0xBD,
+ 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27, 0x00, 0x01,
+}
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfcTrie) lookup(s []byte) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfcTrie) lookupUnsafe(s []byte) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfcValues[c0]
+ }
+ i := nfcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfcTrie) lookupString(s string) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfcTrie) lookupStringUnsafe(s string) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfcValues[c0]
+ }
+ i := nfcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// nfcTrie. Total size: 10680 bytes (10.43 KiB). Checksum: a555db76d4becdd2.
+type nfcTrie struct{}
+
+func newNfcTrie(i int) *nfcTrie {
+ return &nfcTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 {
+ switch {
+ case n < 46:
+ return uint16(nfcValues[n<<6+uint32(b)])
+ default:
+ n -= 46
+ return uint16(nfcSparse.lookup(n, b))
+ }
+}
+
+// nfcValues: 48 blocks, 3072 entries, 6144 bytes
+// The third block is the zero block.
+var nfcValues = [3072]uint16{
+ // Block 0x0, offset 0x0
+ 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,
+ // Block 0x1, offset 0x40
+ 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,
+ 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,
+ 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,
+ 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,
+ 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,
+ 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,
+ 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,
+ 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,
+ 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,
+ 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3,
+ 0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012,
+ 0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b,
+ 0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4,
+ 0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c,
+ 0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c,
+ 0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a,
+ 0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767,
+ 0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776,
+ 0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea,
+ 0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580,
+ // Block 0x4, offset 0x100
+ 0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf,
+ 0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd,
+ 0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec,
+ 0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319,
+ 0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350,
+ 0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369,
+ 0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5,
+ 0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd,
+ 0x130: 0x30a3, 0x134: 0x30cb, 0x135: 0x33d7,
+ 0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3,
+ 0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff,
+ // Block 0x5, offset 0x140
+ 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f,
+ 0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436,
+ 0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463,
+ 0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a,
+ 0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4,
+ 0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1,
+ 0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad,
+ 0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9,
+ 0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f,
+ 0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e,
+ 0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0xa000,
+ // Block 0x6, offset 0x180
+ 0x184: 0x8100, 0x185: 0x8100,
+ 0x186: 0x8100,
+ 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157,
+ 0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df,
+ 0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67,
+ 0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc,
+ 0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6,
+ 0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4,
+ 0x1b0: 0x33dc, 0x1b4: 0x303f, 0x1b5: 0x334b,
+ 0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d,
+ 0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d,
+ 0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3,
+ 0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490,
+ 0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d,
+ 0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc,
+ 0x1de: 0x3071, 0x1df: 0x337d,
+ 0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762,
+ 0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780,
+ 0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576,
+ // Block 0x8, offset 0x200
+ 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,
+ 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,
+ 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,
+ 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,
+ 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,
+ 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,
+ 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,
+ 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,
+ 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,
+ 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,
+ 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,
+ // Block 0x9, offset 0x240
+ 0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937,
+ 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,
+ 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,
+ 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,
+ 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,
+ 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,
+ 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,
+ 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,
+ 0x274: 0x0173,
+ 0x27a: 0x8100,
+ 0x27e: 0x0037,
+ // Block 0xa, offset 0x280
+ 0x284: 0x8100, 0x285: 0x35b8,
+ 0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c,
+ 0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000,
+ 0x295: 0xa000, 0x297: 0xa000,
+ 0x299: 0xa000,
+ 0x29f: 0xa000, 0x2a1: 0xa000,
+ 0x2a5: 0xa000, 0x2a9: 0xa000,
+ 0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0,
+ 0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000,
+ 0x2b7: 0xa000, 0x2b9: 0xa000,
+ 0x2bf: 0xa000,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0x3738, 0x2c1: 0x3744, 0x2c3: 0x3732,
+ 0x2c6: 0xa000, 0x2c7: 0x3720,
+ 0x2cc: 0x3774, 0x2cd: 0x375c, 0x2ce: 0x3786, 0x2d0: 0xa000,
+ 0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000,
+ 0x2d8: 0xa000, 0x2d9: 0x3768, 0x2da: 0xa000,
+ 0x2de: 0xa000, 0x2e3: 0xa000,
+ 0x2e7: 0xa000,
+ 0x2eb: 0xa000, 0x2ed: 0xa000,
+ 0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000,
+ 0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37ec, 0x2fa: 0xa000,
+ 0x2fe: 0xa000,
+ // Block 0xc, offset 0x300
+ 0x301: 0x374a, 0x302: 0x37ce,
+ 0x310: 0x3726, 0x311: 0x37aa,
+ 0x312: 0x372c, 0x313: 0x37b0, 0x316: 0x373e, 0x317: 0x37c2,
+ 0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3840, 0x31b: 0x3846, 0x31c: 0x3750, 0x31d: 0x37d4,
+ 0x31e: 0x3756, 0x31f: 0x37da, 0x322: 0x3762, 0x323: 0x37e6,
+ 0x324: 0x376e, 0x325: 0x37f2, 0x326: 0x377a, 0x327: 0x37fe, 0x328: 0xa000, 0x329: 0xa000,
+ 0x32a: 0x384c, 0x32b: 0x3852, 0x32c: 0x37a4, 0x32d: 0x3828, 0x32e: 0x3780, 0x32f: 0x3804,
+ 0x330: 0x378c, 0x331: 0x3810, 0x332: 0x3792, 0x333: 0x3816, 0x334: 0x3798, 0x335: 0x381c,
+ 0x338: 0x379e, 0x339: 0x3822,
+ // Block 0xd, offset 0x340
+ 0x351: 0x812e,
+ 0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133,
+ 0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133,
+ 0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e,
+ 0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133,
+ 0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133,
+ 0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b,
+ 0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110,
+ 0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113,
+ // Block 0xe, offset 0x380
+ 0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117,
+ 0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d,
+ 0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133,
+ 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133,
+ 0x39e: 0x8133, 0x39f: 0x812e,
+ 0x3b0: 0x811f,
+ // Block 0xf, offset 0x3c0
+ 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133,
+ 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133,
+ 0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e,
+ 0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e,
+ 0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e,
+ 0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133,
+ 0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133,
+ 0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133,
+ // Block 0x10, offset 0x400
+ 0x405: 0xa000,
+ 0x406: 0x2d33, 0x407: 0xa000, 0x408: 0x2d3b, 0x409: 0xa000, 0x40a: 0x2d43, 0x40b: 0xa000,
+ 0x40c: 0x2d4b, 0x40d: 0xa000, 0x40e: 0x2d53, 0x411: 0xa000,
+ 0x412: 0x2d5b,
+ 0x434: 0x8103, 0x435: 0x9900,
+ 0x43a: 0xa000, 0x43b: 0x2d63,
+ 0x43c: 0xa000, 0x43d: 0x2d6b, 0x43e: 0xa000, 0x43f: 0xa000,
+ // Block 0x11, offset 0x440
+ 0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133,
+ 0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133,
+ 0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133,
+ 0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133,
+ 0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133,
+ 0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133,
+ 0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133,
+ 0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133,
+ 0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133,
+ 0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47b: 0x8133,
+ 0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e,
+ // Block 0x12, offset 0x480
+ 0x480: 0x2fae, 0x481: 0x32ba, 0x482: 0x2fb8, 0x483: 0x32c4, 0x484: 0x2fbd, 0x485: 0x32c9,
+ 0x486: 0x2fc2, 0x487: 0x32ce, 0x488: 0x38e3, 0x489: 0x3a72, 0x48a: 0x2fdb, 0x48b: 0x32e7,
+ 0x48c: 0x2fe5, 0x48d: 0x32f1, 0x48e: 0x2ff4, 0x48f: 0x3300, 0x490: 0x2fea, 0x491: 0x32f6,
+ 0x492: 0x2fef, 0x493: 0x32fb, 0x494: 0x3906, 0x495: 0x3a95, 0x496: 0x390d, 0x497: 0x3a9c,
+ 0x498: 0x3030, 0x499: 0x333c, 0x49a: 0x3035, 0x49b: 0x3341, 0x49c: 0x391b, 0x49d: 0x3aaa,
+ 0x49e: 0x303a, 0x49f: 0x3346, 0x4a0: 0x3049, 0x4a1: 0x3355, 0x4a2: 0x3067, 0x4a3: 0x3373,
+ 0x4a4: 0x3076, 0x4a5: 0x3382, 0x4a6: 0x306c, 0x4a7: 0x3378, 0x4a8: 0x307b, 0x4a9: 0x3387,
+ 0x4aa: 0x3080, 0x4ab: 0x338c, 0x4ac: 0x30c6, 0x4ad: 0x33d2, 0x4ae: 0x3922, 0x4af: 0x3ab1,
+ 0x4b0: 0x30d0, 0x4b1: 0x33e1, 0x4b2: 0x30da, 0x4b3: 0x33eb, 0x4b4: 0x30e4, 0x4b5: 0x33f5,
+ 0x4b6: 0x46db, 0x4b7: 0x476c, 0x4b8: 0x3929, 0x4b9: 0x3ab8, 0x4ba: 0x30fd, 0x4bb: 0x340e,
+ 0x4bc: 0x30f8, 0x4bd: 0x3409, 0x4be: 0x3102, 0x4bf: 0x3413,
+ // Block 0x13, offset 0x4c0
+ 0x4c0: 0x3107, 0x4c1: 0x3418, 0x4c2: 0x310c, 0x4c3: 0x341d, 0x4c4: 0x3120, 0x4c5: 0x3431,
+ 0x4c6: 0x312a, 0x4c7: 0x343b, 0x4c8: 0x3139, 0x4c9: 0x344a, 0x4ca: 0x3134, 0x4cb: 0x3445,
+ 0x4cc: 0x394c, 0x4cd: 0x3adb, 0x4ce: 0x395a, 0x4cf: 0x3ae9, 0x4d0: 0x3961, 0x4d1: 0x3af0,
+ 0x4d2: 0x3968, 0x4d3: 0x3af7, 0x4d4: 0x3166, 0x4d5: 0x3477, 0x4d6: 0x316b, 0x4d7: 0x347c,
+ 0x4d8: 0x3175, 0x4d9: 0x3486, 0x4da: 0x4708, 0x4db: 0x4799, 0x4dc: 0x39ae, 0x4dd: 0x3b3d,
+ 0x4de: 0x318e, 0x4df: 0x349f, 0x4e0: 0x3198, 0x4e1: 0x34a9, 0x4e2: 0x4717, 0x4e3: 0x47a8,
+ 0x4e4: 0x39b5, 0x4e5: 0x3b44, 0x4e6: 0x39bc, 0x4e7: 0x3b4b, 0x4e8: 0x39c3, 0x4e9: 0x3b52,
+ 0x4ea: 0x31a7, 0x4eb: 0x34b8, 0x4ec: 0x31b1, 0x4ed: 0x34c7, 0x4ee: 0x31c5, 0x4ef: 0x34db,
+ 0x4f0: 0x31c0, 0x4f1: 0x34d6, 0x4f2: 0x3201, 0x4f3: 0x3517, 0x4f4: 0x3210, 0x4f5: 0x3526,
+ 0x4f6: 0x320b, 0x4f7: 0x3521, 0x4f8: 0x39ca, 0x4f9: 0x3b59, 0x4fa: 0x39d1, 0x4fb: 0x3b60,
+ 0x4fc: 0x3215, 0x4fd: 0x352b, 0x4fe: 0x321a, 0x4ff: 0x3530,
+ // Block 0x14, offset 0x500
+ 0x500: 0x321f, 0x501: 0x3535, 0x502: 0x3224, 0x503: 0x353a, 0x504: 0x3233, 0x505: 0x3549,
+ 0x506: 0x322e, 0x507: 0x3544, 0x508: 0x3238, 0x509: 0x3553, 0x50a: 0x323d, 0x50b: 0x3558,
+ 0x50c: 0x3242, 0x50d: 0x355d, 0x50e: 0x3260, 0x50f: 0x357b, 0x510: 0x3279, 0x511: 0x3599,
+ 0x512: 0x3288, 0x513: 0x35a8, 0x514: 0x328d, 0x515: 0x35ad, 0x516: 0x3391, 0x517: 0x34bd,
+ 0x518: 0x354e, 0x519: 0x358a, 0x51b: 0x35e8,
+ 0x520: 0x46b8, 0x521: 0x4749, 0x522: 0x2f9a, 0x523: 0x32a6,
+ 0x524: 0x388f, 0x525: 0x3a1e, 0x526: 0x3888, 0x527: 0x3a17, 0x528: 0x389d, 0x529: 0x3a2c,
+ 0x52a: 0x3896, 0x52b: 0x3a25, 0x52c: 0x38d5, 0x52d: 0x3a64, 0x52e: 0x38ab, 0x52f: 0x3a3a,
+ 0x530: 0x38a4, 0x531: 0x3a33, 0x532: 0x38b9, 0x533: 0x3a48, 0x534: 0x38b2, 0x535: 0x3a41,
+ 0x536: 0x38dc, 0x537: 0x3a6b, 0x538: 0x46cc, 0x539: 0x475d, 0x53a: 0x3017, 0x53b: 0x3323,
+ 0x53c: 0x3003, 0x53d: 0x330f, 0x53e: 0x38f1, 0x53f: 0x3a80,
+ // Block 0x15, offset 0x540
+ 0x540: 0x38ea, 0x541: 0x3a79, 0x542: 0x38ff, 0x543: 0x3a8e, 0x544: 0x38f8, 0x545: 0x3a87,
+ 0x546: 0x3914, 0x547: 0x3aa3, 0x548: 0x30a8, 0x549: 0x33b4, 0x54a: 0x30bc, 0x54b: 0x33c8,
+ 0x54c: 0x46fe, 0x54d: 0x478f, 0x54e: 0x314d, 0x54f: 0x345e, 0x550: 0x3937, 0x551: 0x3ac6,
+ 0x552: 0x3930, 0x553: 0x3abf, 0x554: 0x3945, 0x555: 0x3ad4, 0x556: 0x393e, 0x557: 0x3acd,
+ 0x558: 0x39a0, 0x559: 0x3b2f, 0x55a: 0x3984, 0x55b: 0x3b13, 0x55c: 0x397d, 0x55d: 0x3b0c,
+ 0x55e: 0x3992, 0x55f: 0x3b21, 0x560: 0x398b, 0x561: 0x3b1a, 0x562: 0x3999, 0x563: 0x3b28,
+ 0x564: 0x31fc, 0x565: 0x3512, 0x566: 0x31de, 0x567: 0x34f4, 0x568: 0x39fb, 0x569: 0x3b8a,
+ 0x56a: 0x39f4, 0x56b: 0x3b83, 0x56c: 0x3a09, 0x56d: 0x3b98, 0x56e: 0x3a02, 0x56f: 0x3b91,
+ 0x570: 0x3a10, 0x571: 0x3b9f, 0x572: 0x3247, 0x573: 0x3562, 0x574: 0x326f, 0x575: 0x358f,
+ 0x576: 0x326a, 0x577: 0x3585, 0x578: 0x3256, 0x579: 0x3571,
+ // Block 0x16, offset 0x580
+ 0x580: 0x481b, 0x581: 0x4821, 0x582: 0x4935, 0x583: 0x494d, 0x584: 0x493d, 0x585: 0x4955,
+ 0x586: 0x4945, 0x587: 0x495d, 0x588: 0x47c1, 0x589: 0x47c7, 0x58a: 0x48a5, 0x58b: 0x48bd,
+ 0x58c: 0x48ad, 0x58d: 0x48c5, 0x58e: 0x48b5, 0x58f: 0x48cd, 0x590: 0x482d, 0x591: 0x4833,
+ 0x592: 0x3dcf, 0x593: 0x3ddf, 0x594: 0x3dd7, 0x595: 0x3de7,
+ 0x598: 0x47cd, 0x599: 0x47d3, 0x59a: 0x3cff, 0x59b: 0x3d0f, 0x59c: 0x3d07, 0x59d: 0x3d17,
+ 0x5a0: 0x4845, 0x5a1: 0x484b, 0x5a2: 0x4965, 0x5a3: 0x497d,
+ 0x5a4: 0x496d, 0x5a5: 0x4985, 0x5a6: 0x4975, 0x5a7: 0x498d, 0x5a8: 0x47d9, 0x5a9: 0x47df,
+ 0x5aa: 0x48d5, 0x5ab: 0x48ed, 0x5ac: 0x48dd, 0x5ad: 0x48f5, 0x5ae: 0x48e5, 0x5af: 0x48fd,
+ 0x5b0: 0x485d, 0x5b1: 0x4863, 0x5b2: 0x3e2f, 0x5b3: 0x3e47, 0x5b4: 0x3e37, 0x5b5: 0x3e4f,
+ 0x5b6: 0x3e3f, 0x5b7: 0x3e57, 0x5b8: 0x47e5, 0x5b9: 0x47eb, 0x5ba: 0x3d2f, 0x5bb: 0x3d47,
+ 0x5bc: 0x3d37, 0x5bd: 0x3d4f, 0x5be: 0x3d3f, 0x5bf: 0x3d57,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x4869, 0x5c1: 0x486f, 0x5c2: 0x3e5f, 0x5c3: 0x3e6f, 0x5c4: 0x3e67, 0x5c5: 0x3e77,
+ 0x5c8: 0x47f1, 0x5c9: 0x47f7, 0x5ca: 0x3d5f, 0x5cb: 0x3d6f,
+ 0x5cc: 0x3d67, 0x5cd: 0x3d77, 0x5d0: 0x487b, 0x5d1: 0x4881,
+ 0x5d2: 0x3e97, 0x5d3: 0x3eaf, 0x5d4: 0x3e9f, 0x5d5: 0x3eb7, 0x5d6: 0x3ea7, 0x5d7: 0x3ebf,
+ 0x5d9: 0x47fd, 0x5db: 0x3d7f, 0x5dd: 0x3d87,
+ 0x5df: 0x3d8f, 0x5e0: 0x4893, 0x5e1: 0x4899, 0x5e2: 0x4995, 0x5e3: 0x49ad,
+ 0x5e4: 0x499d, 0x5e5: 0x49b5, 0x5e6: 0x49a5, 0x5e7: 0x49bd, 0x5e8: 0x4803, 0x5e9: 0x4809,
+ 0x5ea: 0x4905, 0x5eb: 0x491d, 0x5ec: 0x490d, 0x5ed: 0x4925, 0x5ee: 0x4915, 0x5ef: 0x492d,
+ 0x5f0: 0x480f, 0x5f1: 0x4335, 0x5f2: 0x36a8, 0x5f3: 0x433b, 0x5f4: 0x4839, 0x5f5: 0x4341,
+ 0x5f6: 0x36ba, 0x5f7: 0x4347, 0x5f8: 0x36d8, 0x5f9: 0x434d, 0x5fa: 0x36f0, 0x5fb: 0x4353,
+ 0x5fc: 0x4887, 0x5fd: 0x4359,
+ // Block 0x18, offset 0x600
+ 0x600: 0x3db7, 0x601: 0x3dbf, 0x602: 0x419b, 0x603: 0x41b9, 0x604: 0x41a5, 0x605: 0x41c3,
+ 0x606: 0x41af, 0x607: 0x41cd, 0x608: 0x3cef, 0x609: 0x3cf7, 0x60a: 0x40e7, 0x60b: 0x4105,
+ 0x60c: 0x40f1, 0x60d: 0x410f, 0x60e: 0x40fb, 0x60f: 0x4119, 0x610: 0x3dff, 0x611: 0x3e07,
+ 0x612: 0x41d7, 0x613: 0x41f5, 0x614: 0x41e1, 0x615: 0x41ff, 0x616: 0x41eb, 0x617: 0x4209,
+ 0x618: 0x3d1f, 0x619: 0x3d27, 0x61a: 0x4123, 0x61b: 0x4141, 0x61c: 0x412d, 0x61d: 0x414b,
+ 0x61e: 0x4137, 0x61f: 0x4155, 0x620: 0x3ed7, 0x621: 0x3edf, 0x622: 0x4213, 0x623: 0x4231,
+ 0x624: 0x421d, 0x625: 0x423b, 0x626: 0x4227, 0x627: 0x4245, 0x628: 0x3d97, 0x629: 0x3d9f,
+ 0x62a: 0x415f, 0x62b: 0x417d, 0x62c: 0x4169, 0x62d: 0x4187, 0x62e: 0x4173, 0x62f: 0x4191,
+ 0x630: 0x369c, 0x631: 0x3696, 0x632: 0x3da7, 0x633: 0x36a2, 0x634: 0x3daf,
+ 0x636: 0x4827, 0x637: 0x3dc7, 0x638: 0x360c, 0x639: 0x3606, 0x63a: 0x35fa, 0x63b: 0x4305,
+ 0x63c: 0x3612, 0x63d: 0x8100, 0x63e: 0x01d6, 0x63f: 0xa100,
+ // Block 0x19, offset 0x640
+ 0x640: 0x8100, 0x641: 0x35be, 0x642: 0x3def, 0x643: 0x36b4, 0x644: 0x3df7,
+ 0x646: 0x4851, 0x647: 0x3e0f, 0x648: 0x3618, 0x649: 0x430b, 0x64a: 0x3624, 0x64b: 0x4311,
+ 0x64c: 0x3630, 0x64d: 0x3ba6, 0x64e: 0x3bad, 0x64f: 0x3bb4, 0x650: 0x36cc, 0x651: 0x36c6,
+ 0x652: 0x3e17, 0x653: 0x44fb, 0x656: 0x36d2, 0x657: 0x3e27,
+ 0x658: 0x3648, 0x659: 0x3642, 0x65a: 0x3636, 0x65b: 0x4317, 0x65d: 0x3bbb,
+ 0x65e: 0x3bc2, 0x65f: 0x3bc9, 0x660: 0x3702, 0x661: 0x36fc, 0x662: 0x3e7f, 0x663: 0x4503,
+ 0x664: 0x36e4, 0x665: 0x36ea, 0x666: 0x3708, 0x667: 0x3e8f, 0x668: 0x3678, 0x669: 0x3672,
+ 0x66a: 0x3666, 0x66b: 0x4323, 0x66c: 0x3660, 0x66d: 0x35b2, 0x66e: 0x42ff, 0x66f: 0x0081,
+ 0x672: 0x3ec7, 0x673: 0x370e, 0x674: 0x3ecf,
+ 0x676: 0x489f, 0x677: 0x3ee7, 0x678: 0x3654, 0x679: 0x431d, 0x67a: 0x3684, 0x67b: 0x432f,
+ 0x67c: 0x3690, 0x67d: 0x426d, 0x67e: 0xa100,
+ // Block 0x1a, offset 0x680
+ 0x681: 0x3c1d, 0x683: 0xa000, 0x684: 0x3c24, 0x685: 0xa000,
+ 0x687: 0x3c2b, 0x688: 0xa000, 0x689: 0x3c32,
+ 0x68d: 0xa000,
+ 0x6a0: 0x2f7c, 0x6a1: 0xa000, 0x6a2: 0x3c40,
+ 0x6a4: 0xa000, 0x6a5: 0xa000,
+ 0x6ad: 0x3c39, 0x6ae: 0x2f77, 0x6af: 0x2f81,
+ 0x6b0: 0x3c47, 0x6b1: 0x3c4e, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c55, 0x6b5: 0x3c5c,
+ 0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c63, 0x6b9: 0x3c6a, 0x6ba: 0xa000, 0x6bb: 0xa000,
+ 0x6bc: 0xa000, 0x6bd: 0xa000,
+ // Block 0x1b, offset 0x6c0
+ 0x6c0: 0x3c71, 0x6c1: 0x3c78, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c8d, 0x6c5: 0x3c94,
+ 0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c9b, 0x6c9: 0x3ca2,
+ 0x6d1: 0xa000,
+ 0x6d2: 0xa000,
+ 0x6e2: 0xa000,
+ 0x6e8: 0xa000, 0x6e9: 0xa000,
+ 0x6eb: 0xa000, 0x6ec: 0x3cb7, 0x6ed: 0x3cbe, 0x6ee: 0x3cc5, 0x6ef: 0x3ccc,
+ 0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000,
+ // Block 0x1c, offset 0x700
+ 0x706: 0xa000, 0x70b: 0xa000,
+ 0x70c: 0x3f1f, 0x70d: 0xa000, 0x70e: 0x3f27, 0x70f: 0xa000, 0x710: 0x3f2f, 0x711: 0xa000,
+ 0x712: 0x3f37, 0x713: 0xa000, 0x714: 0x3f3f, 0x715: 0xa000, 0x716: 0x3f47, 0x717: 0xa000,
+ 0x718: 0x3f4f, 0x719: 0xa000, 0x71a: 0x3f57, 0x71b: 0xa000, 0x71c: 0x3f5f, 0x71d: 0xa000,
+ 0x71e: 0x3f67, 0x71f: 0xa000, 0x720: 0x3f6f, 0x721: 0xa000, 0x722: 0x3f77,
+ 0x724: 0xa000, 0x725: 0x3f7f, 0x726: 0xa000, 0x727: 0x3f87, 0x728: 0xa000, 0x729: 0x3f8f,
+ 0x72f: 0xa000,
+ 0x730: 0x3f97, 0x731: 0x3f9f, 0x732: 0xa000, 0x733: 0x3fa7, 0x734: 0x3faf, 0x735: 0xa000,
+ 0x736: 0x3fb7, 0x737: 0x3fbf, 0x738: 0xa000, 0x739: 0x3fc7, 0x73a: 0x3fcf, 0x73b: 0xa000,
+ 0x73c: 0x3fd7, 0x73d: 0x3fdf,
+ // Block 0x1d, offset 0x740
+ 0x754: 0x3f17,
+ 0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000,
+ 0x75e: 0x3fe7,
+ 0x766: 0xa000,
+ 0x76b: 0xa000, 0x76c: 0x3ff7, 0x76d: 0xa000, 0x76e: 0x3fff, 0x76f: 0xa000,
+ 0x770: 0x4007, 0x771: 0xa000, 0x772: 0x400f, 0x773: 0xa000, 0x774: 0x4017, 0x775: 0xa000,
+ 0x776: 0x401f, 0x777: 0xa000, 0x778: 0x4027, 0x779: 0xa000, 0x77a: 0x402f, 0x77b: 0xa000,
+ 0x77c: 0x4037, 0x77d: 0xa000, 0x77e: 0x403f, 0x77f: 0xa000,
+ // Block 0x1e, offset 0x780
+ 0x780: 0x4047, 0x781: 0xa000, 0x782: 0x404f, 0x784: 0xa000, 0x785: 0x4057,
+ 0x786: 0xa000, 0x787: 0x405f, 0x788: 0xa000, 0x789: 0x4067,
+ 0x78f: 0xa000, 0x790: 0x406f, 0x791: 0x4077,
+ 0x792: 0xa000, 0x793: 0x407f, 0x794: 0x4087, 0x795: 0xa000, 0x796: 0x408f, 0x797: 0x4097,
+ 0x798: 0xa000, 0x799: 0x409f, 0x79a: 0x40a7, 0x79b: 0xa000, 0x79c: 0x40af, 0x79d: 0x40b7,
+ 0x7af: 0xa000,
+ 0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fef,
+ 0x7b7: 0x40bf, 0x7b8: 0x40c7, 0x7b9: 0x40cf, 0x7ba: 0x40d7,
+ 0x7bd: 0xa000, 0x7be: 0x40df,
+ // Block 0x1f, offset 0x7c0
+ 0x7c0: 0x137a, 0x7c1: 0x0cfe, 0x7c2: 0x13d6, 0x7c3: 0x13a2, 0x7c4: 0x0e5a, 0x7c5: 0x06ee,
+ 0x7c6: 0x08e2, 0x7c7: 0x162e, 0x7c8: 0x162e, 0x7c9: 0x0a0e, 0x7ca: 0x1462, 0x7cb: 0x0946,
+ 0x7cc: 0x0a0a, 0x7cd: 0x0bf2, 0x7ce: 0x0fd2, 0x7cf: 0x1162, 0x7d0: 0x129a, 0x7d1: 0x12d6,
+ 0x7d2: 0x130a, 0x7d3: 0x141e, 0x7d4: 0x0d76, 0x7d5: 0x0e02, 0x7d6: 0x0eae, 0x7d7: 0x0f46,
+ 0x7d8: 0x1262, 0x7d9: 0x144a, 0x7da: 0x1576, 0x7db: 0x0712, 0x7dc: 0x08b6, 0x7dd: 0x0d8a,
+ 0x7de: 0x0ed2, 0x7df: 0x1296, 0x7e0: 0x15c6, 0x7e1: 0x0ab6, 0x7e2: 0x0e7a, 0x7e3: 0x1286,
+ 0x7e4: 0x131a, 0x7e5: 0x0c26, 0x7e6: 0x11be, 0x7e7: 0x12e2, 0x7e8: 0x0b22, 0x7e9: 0x0d12,
+ 0x7ea: 0x0e1a, 0x7eb: 0x0f1e, 0x7ec: 0x142a, 0x7ed: 0x0752, 0x7ee: 0x07ea, 0x7ef: 0x0856,
+ 0x7f0: 0x0c8e, 0x7f1: 0x0d82, 0x7f2: 0x0ece, 0x7f3: 0x0ff2, 0x7f4: 0x117a, 0x7f5: 0x128e,
+ 0x7f6: 0x12a6, 0x7f7: 0x13ca, 0x7f8: 0x14f2, 0x7f9: 0x15a6, 0x7fa: 0x15c2, 0x7fb: 0x102e,
+ 0x7fc: 0x106e, 0x7fd: 0x1126, 0x7fe: 0x1246, 0x7ff: 0x147e,
+ // Block 0x20, offset 0x800
+ 0x800: 0x15ce, 0x801: 0x134e, 0x802: 0x09ca, 0x803: 0x0b3e, 0x804: 0x10de, 0x805: 0x119e,
+ 0x806: 0x0f02, 0x807: 0x1036, 0x808: 0x139a, 0x809: 0x14ea, 0x80a: 0x09c6, 0x80b: 0x0a92,
+ 0x80c: 0x0d7a, 0x80d: 0x0e2e, 0x80e: 0x0e62, 0x80f: 0x1116, 0x810: 0x113e, 0x811: 0x14aa,
+ 0x812: 0x0852, 0x813: 0x11aa, 0x814: 0x07f6, 0x815: 0x07f2, 0x816: 0x109a, 0x817: 0x112a,
+ 0x818: 0x125e, 0x819: 0x14b2, 0x81a: 0x136a, 0x81b: 0x0c2a, 0x81c: 0x0d76, 0x81d: 0x135a,
+ 0x81e: 0x06fa, 0x81f: 0x0a66, 0x820: 0x0b96, 0x821: 0x0f32, 0x822: 0x0fb2, 0x823: 0x0876,
+ 0x824: 0x103e, 0x825: 0x0762, 0x826: 0x0b7a, 0x827: 0x06da, 0x828: 0x0dee, 0x829: 0x0ca6,
+ 0x82a: 0x1112, 0x82b: 0x08ca, 0x82c: 0x09b6, 0x82d: 0x0ffe, 0x82e: 0x1266, 0x82f: 0x133e,
+ 0x830: 0x0dba, 0x831: 0x13fa, 0x832: 0x0de6, 0x833: 0x0c3a, 0x834: 0x121e, 0x835: 0x0c5a,
+ 0x836: 0x0fae, 0x837: 0x072e, 0x838: 0x07aa, 0x839: 0x07ee, 0x83a: 0x0d56, 0x83b: 0x10fe,
+ 0x83c: 0x11f6, 0x83d: 0x134a, 0x83e: 0x145e, 0x83f: 0x085e,
+ // Block 0x21, offset 0x840
+ 0x840: 0x0912, 0x841: 0x0a1a, 0x842: 0x0b32, 0x843: 0x0cc2, 0x844: 0x0e7e, 0x845: 0x1042,
+ 0x846: 0x149a, 0x847: 0x157e, 0x848: 0x15d2, 0x849: 0x15ea, 0x84a: 0x083a, 0x84b: 0x0cf6,
+ 0x84c: 0x0da6, 0x84d: 0x13ee, 0x84e: 0x0afe, 0x84f: 0x0bda, 0x850: 0x0bf6, 0x851: 0x0c86,
+ 0x852: 0x0e6e, 0x853: 0x0eba, 0x854: 0x0f6a, 0x855: 0x108e, 0x856: 0x1132, 0x857: 0x1196,
+ 0x858: 0x13de, 0x859: 0x126e, 0x85a: 0x1406, 0x85b: 0x1482, 0x85c: 0x0812, 0x85d: 0x083e,
+ 0x85e: 0x0926, 0x85f: 0x0eaa, 0x860: 0x12f6, 0x861: 0x133e, 0x862: 0x0b1e, 0x863: 0x0b8e,
+ 0x864: 0x0c52, 0x865: 0x0db2, 0x866: 0x10da, 0x867: 0x0f26, 0x868: 0x073e, 0x869: 0x0982,
+ 0x86a: 0x0a66, 0x86b: 0x0aca, 0x86c: 0x0b9a, 0x86d: 0x0f42, 0x86e: 0x0f5e, 0x86f: 0x116e,
+ 0x870: 0x118e, 0x871: 0x1466, 0x872: 0x14e6, 0x873: 0x14f6, 0x874: 0x1532, 0x875: 0x0756,
+ 0x876: 0x1082, 0x877: 0x1452, 0x878: 0x14ce, 0x879: 0x0bb2, 0x87a: 0x071a, 0x87b: 0x077a,
+ 0x87c: 0x0a6a, 0x87d: 0x0a8a, 0x87e: 0x0cb2, 0x87f: 0x0d76,
+ // Block 0x22, offset 0x880
+ 0x880: 0x0ec6, 0x881: 0x0fce, 0x882: 0x127a, 0x883: 0x141a, 0x884: 0x1626, 0x885: 0x0ce6,
+ 0x886: 0x14a6, 0x887: 0x0836, 0x888: 0x0d32, 0x889: 0x0d3e, 0x88a: 0x0e12, 0x88b: 0x0e4a,
+ 0x88c: 0x0f4e, 0x88d: 0x0faa, 0x88e: 0x102a, 0x88f: 0x110e, 0x890: 0x153e, 0x891: 0x07b2,
+ 0x892: 0x0c06, 0x893: 0x14b6, 0x894: 0x076a, 0x895: 0x0aae, 0x896: 0x0e32, 0x897: 0x13e2,
+ 0x898: 0x0b6a, 0x899: 0x0bba, 0x89a: 0x0d46, 0x89b: 0x0f32, 0x89c: 0x14be, 0x89d: 0x081a,
+ 0x89e: 0x0902, 0x89f: 0x0a9a, 0x8a0: 0x0cd6, 0x8a1: 0x0d22, 0x8a2: 0x0d62, 0x8a3: 0x0df6,
+ 0x8a4: 0x0f4a, 0x8a5: 0x0fbe, 0x8a6: 0x115a, 0x8a7: 0x12fa, 0x8a8: 0x1306, 0x8a9: 0x145a,
+ 0x8aa: 0x14da, 0x8ab: 0x0886, 0x8ac: 0x0e4e, 0x8ad: 0x0906, 0x8ae: 0x0eca, 0x8af: 0x0f6e,
+ 0x8b0: 0x128a, 0x8b1: 0x14c2, 0x8b2: 0x15ae, 0x8b3: 0x15d6, 0x8b4: 0x0d3a, 0x8b5: 0x0e2a,
+ 0x8b6: 0x11c6, 0x8b7: 0x10ba, 0x8b8: 0x10c6, 0x8b9: 0x10ea, 0x8ba: 0x0f1a, 0x8bb: 0x0ea2,
+ 0x8bc: 0x1366, 0x8bd: 0x0736, 0x8be: 0x122e, 0x8bf: 0x081e,
+ // Block 0x23, offset 0x8c0
+ 0x8c0: 0x080e, 0x8c1: 0x0b0e, 0x8c2: 0x0c2e, 0x8c3: 0x10f6, 0x8c4: 0x0a56, 0x8c5: 0x0e06,
+ 0x8c6: 0x0cf2, 0x8c7: 0x13ea, 0x8c8: 0x12ea, 0x8c9: 0x14ae, 0x8ca: 0x1326, 0x8cb: 0x0b2a,
+ 0x8cc: 0x078a, 0x8cd: 0x095e, 0x8d0: 0x09b2,
+ 0x8d2: 0x0ce2, 0x8d5: 0x07fa, 0x8d6: 0x0f22, 0x8d7: 0x0fe6,
+ 0x8d8: 0x104a, 0x8d9: 0x1066, 0x8da: 0x106a, 0x8db: 0x107e, 0x8dc: 0x14fe, 0x8dd: 0x10ee,
+ 0x8de: 0x1172, 0x8e0: 0x1292, 0x8e2: 0x1356,
+ 0x8e5: 0x140a, 0x8e6: 0x1436,
+ 0x8ea: 0x1552, 0x8eb: 0x1556, 0x8ec: 0x155a, 0x8ed: 0x15be, 0x8ee: 0x142e, 0x8ef: 0x14ca,
+ 0x8f0: 0x075a, 0x8f1: 0x077e, 0x8f2: 0x0792, 0x8f3: 0x084e, 0x8f4: 0x085a, 0x8f5: 0x089a,
+ 0x8f6: 0x094e, 0x8f7: 0x096a, 0x8f8: 0x0972, 0x8f9: 0x09ae, 0x8fa: 0x09ba, 0x8fb: 0x0a96,
+ 0x8fc: 0x0a9e, 0x8fd: 0x0ba6, 0x8fe: 0x0bce, 0x8ff: 0x0bd6,
+ // Block 0x24, offset 0x900
+ 0x900: 0x0bee, 0x901: 0x0c9a, 0x902: 0x0cca, 0x903: 0x0cea, 0x904: 0x0d5a, 0x905: 0x0e1e,
+ 0x906: 0x0e3a, 0x907: 0x0e6a, 0x908: 0x0ebe, 0x909: 0x0ede, 0x90a: 0x0f52, 0x90b: 0x1032,
+ 0x90c: 0x104e, 0x90d: 0x1056, 0x90e: 0x1052, 0x90f: 0x105a, 0x910: 0x105e, 0x911: 0x1062,
+ 0x912: 0x1076, 0x913: 0x107a, 0x914: 0x109e, 0x915: 0x10b2, 0x916: 0x10ce, 0x917: 0x1132,
+ 0x918: 0x113a, 0x919: 0x1142, 0x91a: 0x1156, 0x91b: 0x117e, 0x91c: 0x11ce, 0x91d: 0x1202,
+ 0x91e: 0x1202, 0x91f: 0x126a, 0x920: 0x1312, 0x921: 0x132a, 0x922: 0x135e, 0x923: 0x1362,
+ 0x924: 0x13a6, 0x925: 0x13aa, 0x926: 0x1402, 0x927: 0x140a, 0x928: 0x14de, 0x929: 0x1522,
+ 0x92a: 0x153a, 0x92b: 0x0b9e, 0x92c: 0x1721, 0x92d: 0x11e6,
+ 0x930: 0x06e2, 0x931: 0x07e6, 0x932: 0x07a6, 0x933: 0x074e, 0x934: 0x078e, 0x935: 0x07ba,
+ 0x936: 0x084a, 0x937: 0x0866, 0x938: 0x094e, 0x939: 0x093a, 0x93a: 0x094a, 0x93b: 0x0966,
+ 0x93c: 0x09b2, 0x93d: 0x09c2, 0x93e: 0x0a06, 0x93f: 0x0a12,
+ // Block 0x25, offset 0x940
+ 0x940: 0x0a2e, 0x941: 0x0a3e, 0x942: 0x0b26, 0x943: 0x0b2e, 0x944: 0x0b5e, 0x945: 0x0b7e,
+ 0x946: 0x0bae, 0x947: 0x0bc6, 0x948: 0x0bb6, 0x949: 0x0bd6, 0x94a: 0x0bca, 0x94b: 0x0bee,
+ 0x94c: 0x0c0a, 0x94d: 0x0c62, 0x94e: 0x0c6e, 0x94f: 0x0c76, 0x950: 0x0c9e, 0x951: 0x0ce2,
+ 0x952: 0x0d12, 0x953: 0x0d16, 0x954: 0x0d2a, 0x955: 0x0daa, 0x956: 0x0dba, 0x957: 0x0e12,
+ 0x958: 0x0e5e, 0x959: 0x0e56, 0x95a: 0x0e6a, 0x95b: 0x0e86, 0x95c: 0x0ebe, 0x95d: 0x1016,
+ 0x95e: 0x0ee2, 0x95f: 0x0f16, 0x960: 0x0f22, 0x961: 0x0f62, 0x962: 0x0f7e, 0x963: 0x0fa2,
+ 0x964: 0x0fc6, 0x965: 0x0fca, 0x966: 0x0fe6, 0x967: 0x0fea, 0x968: 0x0ffa, 0x969: 0x100e,
+ 0x96a: 0x100a, 0x96b: 0x103a, 0x96c: 0x10b6, 0x96d: 0x10ce, 0x96e: 0x10e6, 0x96f: 0x111e,
+ 0x970: 0x1132, 0x971: 0x114e, 0x972: 0x117e, 0x973: 0x1232, 0x974: 0x125a, 0x975: 0x12ce,
+ 0x976: 0x1316, 0x977: 0x1322, 0x978: 0x132a, 0x979: 0x1342, 0x97a: 0x1356, 0x97b: 0x1346,
+ 0x97c: 0x135e, 0x97d: 0x135a, 0x97e: 0x1352, 0x97f: 0x1362,
+ // Block 0x26, offset 0x980
+ 0x980: 0x136e, 0x981: 0x13aa, 0x982: 0x13e6, 0x983: 0x1416, 0x984: 0x144e, 0x985: 0x146e,
+ 0x986: 0x14ba, 0x987: 0x14de, 0x988: 0x14fe, 0x989: 0x1512, 0x98a: 0x1522, 0x98b: 0x152e,
+ 0x98c: 0x153a, 0x98d: 0x158e, 0x98e: 0x162e, 0x98f: 0x16b8, 0x990: 0x16b3, 0x991: 0x16e5,
+ 0x992: 0x060a, 0x993: 0x0632, 0x994: 0x0636, 0x995: 0x1767, 0x996: 0x1794, 0x997: 0x180c,
+ 0x998: 0x161a, 0x999: 0x162a,
+ // Block 0x27, offset 0x9c0
+ 0x9c0: 0x06fe, 0x9c1: 0x06f6, 0x9c2: 0x0706, 0x9c3: 0x164a, 0x9c4: 0x074a, 0x9c5: 0x075a,
+ 0x9c6: 0x075e, 0x9c7: 0x0766, 0x9c8: 0x076e, 0x9c9: 0x0772, 0x9ca: 0x077e, 0x9cb: 0x0776,
+ 0x9cc: 0x05b6, 0x9cd: 0x165e, 0x9ce: 0x0792, 0x9cf: 0x0796, 0x9d0: 0x079a, 0x9d1: 0x07b6,
+ 0x9d2: 0x164f, 0x9d3: 0x05ba, 0x9d4: 0x07a2, 0x9d5: 0x07c2, 0x9d6: 0x1659, 0x9d7: 0x07d2,
+ 0x9d8: 0x07da, 0x9d9: 0x073a, 0x9da: 0x07e2, 0x9db: 0x07e6, 0x9dc: 0x1834, 0x9dd: 0x0802,
+ 0x9de: 0x080a, 0x9df: 0x05c2, 0x9e0: 0x0822, 0x9e1: 0x0826, 0x9e2: 0x082e, 0x9e3: 0x0832,
+ 0x9e4: 0x05c6, 0x9e5: 0x084a, 0x9e6: 0x084e, 0x9e7: 0x085a, 0x9e8: 0x0866, 0x9e9: 0x086a,
+ 0x9ea: 0x086e, 0x9eb: 0x0876, 0x9ec: 0x0896, 0x9ed: 0x089a, 0x9ee: 0x08a2, 0x9ef: 0x08b2,
+ 0x9f0: 0x08ba, 0x9f1: 0x08be, 0x9f2: 0x08be, 0x9f3: 0x08be, 0x9f4: 0x166d, 0x9f5: 0x0e96,
+ 0x9f6: 0x08d2, 0x9f7: 0x08da, 0x9f8: 0x1672, 0x9f9: 0x08e6, 0x9fa: 0x08ee, 0x9fb: 0x08f6,
+ 0x9fc: 0x091e, 0x9fd: 0x090a, 0x9fe: 0x0916, 0x9ff: 0x091a,
+ // Block 0x28, offset 0xa00
+ 0xa00: 0x0922, 0xa01: 0x092a, 0xa02: 0x092e, 0xa03: 0x0936, 0xa04: 0x093e, 0xa05: 0x0942,
+ 0xa06: 0x0942, 0xa07: 0x094a, 0xa08: 0x0952, 0xa09: 0x0956, 0xa0a: 0x0962, 0xa0b: 0x0986,
+ 0xa0c: 0x096a, 0xa0d: 0x098a, 0xa0e: 0x096e, 0xa0f: 0x0976, 0xa10: 0x080e, 0xa11: 0x09d2,
+ 0xa12: 0x099a, 0xa13: 0x099e, 0xa14: 0x09a2, 0xa15: 0x0996, 0xa16: 0x09aa, 0xa17: 0x09a6,
+ 0xa18: 0x09be, 0xa19: 0x1677, 0xa1a: 0x09da, 0xa1b: 0x09de, 0xa1c: 0x09e6, 0xa1d: 0x09f2,
+ 0xa1e: 0x09fa, 0xa1f: 0x0a16, 0xa20: 0x167c, 0xa21: 0x1681, 0xa22: 0x0a22, 0xa23: 0x0a26,
+ 0xa24: 0x0a2a, 0xa25: 0x0a1e, 0xa26: 0x0a32, 0xa27: 0x05ca, 0xa28: 0x05ce, 0xa29: 0x0a3a,
+ 0xa2a: 0x0a42, 0xa2b: 0x0a42, 0xa2c: 0x1686, 0xa2d: 0x0a5e, 0xa2e: 0x0a62, 0xa2f: 0x0a66,
+ 0xa30: 0x0a6e, 0xa31: 0x168b, 0xa32: 0x0a76, 0xa33: 0x0a7a, 0xa34: 0x0b52, 0xa35: 0x0a82,
+ 0xa36: 0x05d2, 0xa37: 0x0a8e, 0xa38: 0x0a9e, 0xa39: 0x0aaa, 0xa3a: 0x0aa6, 0xa3b: 0x1695,
+ 0xa3c: 0x0ab2, 0xa3d: 0x169a, 0xa3e: 0x0abe, 0xa3f: 0x0aba,
+ // Block 0x29, offset 0xa40
+ 0xa40: 0x0ac2, 0xa41: 0x0ad2, 0xa42: 0x0ad6, 0xa43: 0x05d6, 0xa44: 0x0ae6, 0xa45: 0x0aee,
+ 0xa46: 0x0af2, 0xa47: 0x0af6, 0xa48: 0x05da, 0xa49: 0x169f, 0xa4a: 0x05de, 0xa4b: 0x0b12,
+ 0xa4c: 0x0b16, 0xa4d: 0x0b1a, 0xa4e: 0x0b22, 0xa4f: 0x1866, 0xa50: 0x0b3a, 0xa51: 0x16a9,
+ 0xa52: 0x16a9, 0xa53: 0x11da, 0xa54: 0x0b4a, 0xa55: 0x0b4a, 0xa56: 0x05e2, 0xa57: 0x16cc,
+ 0xa58: 0x179e, 0xa59: 0x0b5a, 0xa5a: 0x0b62, 0xa5b: 0x05e6, 0xa5c: 0x0b76, 0xa5d: 0x0b86,
+ 0xa5e: 0x0b8a, 0xa5f: 0x0b92, 0xa60: 0x0ba2, 0xa61: 0x05ee, 0xa62: 0x05ea, 0xa63: 0x0ba6,
+ 0xa64: 0x16ae, 0xa65: 0x0baa, 0xa66: 0x0bbe, 0xa67: 0x0bc2, 0xa68: 0x0bc6, 0xa69: 0x0bc2,
+ 0xa6a: 0x0bd2, 0xa6b: 0x0bd6, 0xa6c: 0x0be6, 0xa6d: 0x0bde, 0xa6e: 0x0be2, 0xa6f: 0x0bea,
+ 0xa70: 0x0bee, 0xa71: 0x0bf2, 0xa72: 0x0bfe, 0xa73: 0x0c02, 0xa74: 0x0c1a, 0xa75: 0x0c22,
+ 0xa76: 0x0c32, 0xa77: 0x0c46, 0xa78: 0x16bd, 0xa79: 0x0c42, 0xa7a: 0x0c36, 0xa7b: 0x0c4e,
+ 0xa7c: 0x0c56, 0xa7d: 0x0c6a, 0xa7e: 0x16c2, 0xa7f: 0x0c72,
+ // Block 0x2a, offset 0xa80
+ 0xa80: 0x0c66, 0xa81: 0x0c5e, 0xa82: 0x05f2, 0xa83: 0x0c7a, 0xa84: 0x0c82, 0xa85: 0x0c8a,
+ 0xa86: 0x0c7e, 0xa87: 0x05f6, 0xa88: 0x0c9a, 0xa89: 0x0ca2, 0xa8a: 0x16c7, 0xa8b: 0x0cce,
+ 0xa8c: 0x0d02, 0xa8d: 0x0cde, 0xa8e: 0x0602, 0xa8f: 0x0cea, 0xa90: 0x05fe, 0xa91: 0x05fa,
+ 0xa92: 0x07c6, 0xa93: 0x07ca, 0xa94: 0x0d06, 0xa95: 0x0cee, 0xa96: 0x11ae, 0xa97: 0x0666,
+ 0xa98: 0x0d12, 0xa99: 0x0d16, 0xa9a: 0x0d1a, 0xa9b: 0x0d2e, 0xa9c: 0x0d26, 0xa9d: 0x16e0,
+ 0xa9e: 0x0606, 0xa9f: 0x0d42, 0xaa0: 0x0d36, 0xaa1: 0x0d52, 0xaa2: 0x0d5a, 0xaa3: 0x16ea,
+ 0xaa4: 0x0d5e, 0xaa5: 0x0d4a, 0xaa6: 0x0d66, 0xaa7: 0x060a, 0xaa8: 0x0d6a, 0xaa9: 0x0d6e,
+ 0xaaa: 0x0d72, 0xaab: 0x0d7e, 0xaac: 0x16ef, 0xaad: 0x0d86, 0xaae: 0x060e, 0xaaf: 0x0d92,
+ 0xab0: 0x16f4, 0xab1: 0x0d96, 0xab2: 0x0612, 0xab3: 0x0da2, 0xab4: 0x0dae, 0xab5: 0x0dba,
+ 0xab6: 0x0dbe, 0xab7: 0x16f9, 0xab8: 0x1690, 0xab9: 0x16fe, 0xaba: 0x0dde, 0xabb: 0x1703,
+ 0xabc: 0x0dea, 0xabd: 0x0df2, 0xabe: 0x0de2, 0xabf: 0x0dfe,
+ // Block 0x2b, offset 0xac0
+ 0xac0: 0x0e0e, 0xac1: 0x0e1e, 0xac2: 0x0e12, 0xac3: 0x0e16, 0xac4: 0x0e22, 0xac5: 0x0e26,
+ 0xac6: 0x1708, 0xac7: 0x0e0a, 0xac8: 0x0e3e, 0xac9: 0x0e42, 0xaca: 0x0616, 0xacb: 0x0e56,
+ 0xacc: 0x0e52, 0xacd: 0x170d, 0xace: 0x0e36, 0xacf: 0x0e72, 0xad0: 0x1712, 0xad1: 0x1717,
+ 0xad2: 0x0e76, 0xad3: 0x0e8a, 0xad4: 0x0e86, 0xad5: 0x0e82, 0xad6: 0x061a, 0xad7: 0x0e8e,
+ 0xad8: 0x0e9e, 0xad9: 0x0e9a, 0xada: 0x0ea6, 0xadb: 0x1654, 0xadc: 0x0eb6, 0xadd: 0x171c,
+ 0xade: 0x0ec2, 0xadf: 0x1726, 0xae0: 0x0ed6, 0xae1: 0x0ee2, 0xae2: 0x0ef6, 0xae3: 0x172b,
+ 0xae4: 0x0f0a, 0xae5: 0x0f0e, 0xae6: 0x1730, 0xae7: 0x1735, 0xae8: 0x0f2a, 0xae9: 0x0f3a,
+ 0xaea: 0x061e, 0xaeb: 0x0f3e, 0xaec: 0x0622, 0xaed: 0x0622, 0xaee: 0x0f56, 0xaef: 0x0f5a,
+ 0xaf0: 0x0f62, 0xaf1: 0x0f66, 0xaf2: 0x0f72, 0xaf3: 0x0626, 0xaf4: 0x0f8a, 0xaf5: 0x173a,
+ 0xaf6: 0x0fa6, 0xaf7: 0x173f, 0xaf8: 0x0fb2, 0xaf9: 0x16a4, 0xafa: 0x0fc2, 0xafb: 0x1744,
+ 0xafc: 0x1749, 0xafd: 0x174e, 0xafe: 0x062a, 0xaff: 0x062e,
+ // Block 0x2c, offset 0xb00
+ 0xb00: 0x0ffa, 0xb01: 0x1758, 0xb02: 0x1753, 0xb03: 0x175d, 0xb04: 0x1762, 0xb05: 0x1002,
+ 0xb06: 0x1006, 0xb07: 0x1006, 0xb08: 0x100e, 0xb09: 0x0636, 0xb0a: 0x1012, 0xb0b: 0x063a,
+ 0xb0c: 0x063e, 0xb0d: 0x176c, 0xb0e: 0x1026, 0xb0f: 0x102e, 0xb10: 0x103a, 0xb11: 0x0642,
+ 0xb12: 0x1771, 0xb13: 0x105e, 0xb14: 0x1776, 0xb15: 0x177b, 0xb16: 0x107e, 0xb17: 0x1096,
+ 0xb18: 0x0646, 0xb19: 0x109e, 0xb1a: 0x10a2, 0xb1b: 0x10a6, 0xb1c: 0x1780, 0xb1d: 0x1785,
+ 0xb1e: 0x1785, 0xb1f: 0x10be, 0xb20: 0x064a, 0xb21: 0x178a, 0xb22: 0x10d2, 0xb23: 0x10d6,
+ 0xb24: 0x064e, 0xb25: 0x178f, 0xb26: 0x10f2, 0xb27: 0x0652, 0xb28: 0x1102, 0xb29: 0x10fa,
+ 0xb2a: 0x110a, 0xb2b: 0x1799, 0xb2c: 0x1122, 0xb2d: 0x0656, 0xb2e: 0x112e, 0xb2f: 0x1136,
+ 0xb30: 0x1146, 0xb31: 0x065a, 0xb32: 0x17a3, 0xb33: 0x17a8, 0xb34: 0x065e, 0xb35: 0x17ad,
+ 0xb36: 0x115e, 0xb37: 0x17b2, 0xb38: 0x116a, 0xb39: 0x1176, 0xb3a: 0x117e, 0xb3b: 0x17b7,
+ 0xb3c: 0x17bc, 0xb3d: 0x1192, 0xb3e: 0x17c1, 0xb3f: 0x119a,
+ // Block 0x2d, offset 0xb40
+ 0xb40: 0x16d1, 0xb41: 0x0662, 0xb42: 0x11b2, 0xb43: 0x11b6, 0xb44: 0x066a, 0xb45: 0x11ba,
+ 0xb46: 0x0a36, 0xb47: 0x17c6, 0xb48: 0x17cb, 0xb49: 0x16d6, 0xb4a: 0x16db, 0xb4b: 0x11da,
+ 0xb4c: 0x11de, 0xb4d: 0x13f6, 0xb4e: 0x066e, 0xb4f: 0x120a, 0xb50: 0x1206, 0xb51: 0x120e,
+ 0xb52: 0x0842, 0xb53: 0x1212, 0xb54: 0x1216, 0xb55: 0x121a, 0xb56: 0x1222, 0xb57: 0x17d0,
+ 0xb58: 0x121e, 0xb59: 0x1226, 0xb5a: 0x123a, 0xb5b: 0x123e, 0xb5c: 0x122a, 0xb5d: 0x1242,
+ 0xb5e: 0x1256, 0xb5f: 0x126a, 0xb60: 0x1236, 0xb61: 0x124a, 0xb62: 0x124e, 0xb63: 0x1252,
+ 0xb64: 0x17d5, 0xb65: 0x17df, 0xb66: 0x17da, 0xb67: 0x0672, 0xb68: 0x1272, 0xb69: 0x1276,
+ 0xb6a: 0x127e, 0xb6b: 0x17f3, 0xb6c: 0x1282, 0xb6d: 0x17e4, 0xb6e: 0x0676, 0xb6f: 0x067a,
+ 0xb70: 0x17e9, 0xb71: 0x17ee, 0xb72: 0x067e, 0xb73: 0x12a2, 0xb74: 0x12a6, 0xb75: 0x12aa,
+ 0xb76: 0x12ae, 0xb77: 0x12ba, 0xb78: 0x12b6, 0xb79: 0x12c2, 0xb7a: 0x12be, 0xb7b: 0x12ce,
+ 0xb7c: 0x12c6, 0xb7d: 0x12ca, 0xb7e: 0x12d2, 0xb7f: 0x0682,
+ // Block 0x2e, offset 0xb80
+ 0xb80: 0x12da, 0xb81: 0x12de, 0xb82: 0x0686, 0xb83: 0x12ee, 0xb84: 0x12f2, 0xb85: 0x17f8,
+ 0xb86: 0x12fe, 0xb87: 0x1302, 0xb88: 0x068a, 0xb89: 0x130e, 0xb8a: 0x05be, 0xb8b: 0x17fd,
+ 0xb8c: 0x1802, 0xb8d: 0x068e, 0xb8e: 0x0692, 0xb8f: 0x133a, 0xb90: 0x1352, 0xb91: 0x136e,
+ 0xb92: 0x137e, 0xb93: 0x1807, 0xb94: 0x1392, 0xb95: 0x1396, 0xb96: 0x13ae, 0xb97: 0x13ba,
+ 0xb98: 0x1811, 0xb99: 0x1663, 0xb9a: 0x13c6, 0xb9b: 0x13c2, 0xb9c: 0x13ce, 0xb9d: 0x1668,
+ 0xb9e: 0x13da, 0xb9f: 0x13e6, 0xba0: 0x1816, 0xba1: 0x181b, 0xba2: 0x1426, 0xba3: 0x1432,
+ 0xba4: 0x143a, 0xba5: 0x1820, 0xba6: 0x143e, 0xba7: 0x146a, 0xba8: 0x1476, 0xba9: 0x147a,
+ 0xbaa: 0x1472, 0xbab: 0x1486, 0xbac: 0x148a, 0xbad: 0x1825, 0xbae: 0x1496, 0xbaf: 0x0696,
+ 0xbb0: 0x149e, 0xbb1: 0x182a, 0xbb2: 0x069a, 0xbb3: 0x14d6, 0xbb4: 0x0ac6, 0xbb5: 0x14ee,
+ 0xbb6: 0x182f, 0xbb7: 0x1839, 0xbb8: 0x069e, 0xbb9: 0x06a2, 0xbba: 0x1516, 0xbbb: 0x183e,
+ 0xbbc: 0x06a6, 0xbbd: 0x1843, 0xbbe: 0x152e, 0xbbf: 0x152e,
+ // Block 0x2f, offset 0xbc0
+ 0xbc0: 0x1536, 0xbc1: 0x1848, 0xbc2: 0x154e, 0xbc3: 0x06aa, 0xbc4: 0x155e, 0xbc5: 0x156a,
+ 0xbc6: 0x1572, 0xbc7: 0x157a, 0xbc8: 0x06ae, 0xbc9: 0x184d, 0xbca: 0x158e, 0xbcb: 0x15aa,
+ 0xbcc: 0x15b6, 0xbcd: 0x06b2, 0xbce: 0x06b6, 0xbcf: 0x15ba, 0xbd0: 0x1852, 0xbd1: 0x06ba,
+ 0xbd2: 0x1857, 0xbd3: 0x185c, 0xbd4: 0x1861, 0xbd5: 0x15de, 0xbd6: 0x06be, 0xbd7: 0x15f2,
+ 0xbd8: 0x15fa, 0xbd9: 0x15fe, 0xbda: 0x1606, 0xbdb: 0x160e, 0xbdc: 0x1616, 0xbdd: 0x186b,
+}
+
+// nfcIndex: 22 blocks, 1408 entries, 1408 bytes
+// Block 0 is the zero block.
+var nfcIndex = [1408]uint8{
+ // Block 0x0, offset 0x0
+ // Block 0x1, offset 0x40
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04,
+ 0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32,
+ 0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35,
+ 0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a,
+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+ 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,
+ 0xf0: 0x13,
+ // Block 0x4, offset 0x100
+ 0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40,
+ 0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47,
+ 0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d,
+ 0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55,
+ // Block 0x5, offset 0x140
+ 0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b,
+ 0x14d: 0x5c,
+ 0x15c: 0x5d, 0x15f: 0x5e,
+ 0x162: 0x5f, 0x164: 0x60,
+ 0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16b: 0x64, 0x16c: 0x0e, 0x16d: 0x65, 0x16e: 0x66, 0x16f: 0x67,
+ 0x170: 0x68, 0x173: 0x69, 0x177: 0x0f,
+ 0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17,
+ // Block 0x6, offset 0x180
+ 0x180: 0x6a, 0x183: 0x6b, 0x184: 0x6c, 0x186: 0x6d, 0x187: 0x6e,
+ 0x188: 0x6f, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x70, 0x18c: 0x71,
+ 0x1ab: 0x72,
+ 0x1b3: 0x73, 0x1b5: 0x74, 0x1b7: 0x75,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x76, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x77, 0x1c5: 0x78,
+ 0x1c9: 0x79, 0x1cc: 0x7a, 0x1cd: 0x7b,
+ // Block 0x8, offset 0x200
+ 0x219: 0x7c, 0x21a: 0x7d, 0x21b: 0x7e,
+ 0x220: 0x7f, 0x223: 0x80, 0x224: 0x81, 0x225: 0x82, 0x226: 0x83, 0x227: 0x84,
+ 0x22a: 0x85, 0x22b: 0x86, 0x22f: 0x87,
+ 0x230: 0x88, 0x231: 0x89, 0x232: 0x8a, 0x233: 0x8b, 0x234: 0x8c, 0x235: 0x8d, 0x236: 0x8e, 0x237: 0x88,
+ 0x238: 0x89, 0x239: 0x8a, 0x23a: 0x8b, 0x23b: 0x8c, 0x23c: 0x8d, 0x23d: 0x8e, 0x23e: 0x88, 0x23f: 0x89,
+ // Block 0x9, offset 0x240
+ 0x240: 0x8a, 0x241: 0x8b, 0x242: 0x8c, 0x243: 0x8d, 0x244: 0x8e, 0x245: 0x88, 0x246: 0x89, 0x247: 0x8a,
+ 0x248: 0x8b, 0x249: 0x8c, 0x24a: 0x8d, 0x24b: 0x8e, 0x24c: 0x88, 0x24d: 0x89, 0x24e: 0x8a, 0x24f: 0x8b,
+ 0x250: 0x8c, 0x251: 0x8d, 0x252: 0x8e, 0x253: 0x88, 0x254: 0x89, 0x255: 0x8a, 0x256: 0x8b, 0x257: 0x8c,
+ 0x258: 0x8d, 0x259: 0x8e, 0x25a: 0x88, 0x25b: 0x89, 0x25c: 0x8a, 0x25d: 0x8b, 0x25e: 0x8c, 0x25f: 0x8d,
+ 0x260: 0x8e, 0x261: 0x88, 0x262: 0x89, 0x263: 0x8a, 0x264: 0x8b, 0x265: 0x8c, 0x266: 0x8d, 0x267: 0x8e,
+ 0x268: 0x88, 0x269: 0x89, 0x26a: 0x8a, 0x26b: 0x8b, 0x26c: 0x8c, 0x26d: 0x8d, 0x26e: 0x8e, 0x26f: 0x88,
+ 0x270: 0x89, 0x271: 0x8a, 0x272: 0x8b, 0x273: 0x8c, 0x274: 0x8d, 0x275: 0x8e, 0x276: 0x88, 0x277: 0x89,
+ 0x278: 0x8a, 0x279: 0x8b, 0x27a: 0x8c, 0x27b: 0x8d, 0x27c: 0x8e, 0x27d: 0x88, 0x27e: 0x89, 0x27f: 0x8a,
+ // Block 0xa, offset 0x280
+ 0x280: 0x8b, 0x281: 0x8c, 0x282: 0x8d, 0x283: 0x8e, 0x284: 0x88, 0x285: 0x89, 0x286: 0x8a, 0x287: 0x8b,
+ 0x288: 0x8c, 0x289: 0x8d, 0x28a: 0x8e, 0x28b: 0x88, 0x28c: 0x89, 0x28d: 0x8a, 0x28e: 0x8b, 0x28f: 0x8c,
+ 0x290: 0x8d, 0x291: 0x8e, 0x292: 0x88, 0x293: 0x89, 0x294: 0x8a, 0x295: 0x8b, 0x296: 0x8c, 0x297: 0x8d,
+ 0x298: 0x8e, 0x299: 0x88, 0x29a: 0x89, 0x29b: 0x8a, 0x29c: 0x8b, 0x29d: 0x8c, 0x29e: 0x8d, 0x29f: 0x8e,
+ 0x2a0: 0x88, 0x2a1: 0x89, 0x2a2: 0x8a, 0x2a3: 0x8b, 0x2a4: 0x8c, 0x2a5: 0x8d, 0x2a6: 0x8e, 0x2a7: 0x88,
+ 0x2a8: 0x89, 0x2a9: 0x8a, 0x2aa: 0x8b, 0x2ab: 0x8c, 0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x88, 0x2af: 0x89,
+ 0x2b0: 0x8a, 0x2b1: 0x8b, 0x2b2: 0x8c, 0x2b3: 0x8d, 0x2b4: 0x8e, 0x2b5: 0x88, 0x2b6: 0x89, 0x2b7: 0x8a,
+ 0x2b8: 0x8b, 0x2b9: 0x8c, 0x2ba: 0x8d, 0x2bb: 0x8e, 0x2bc: 0x88, 0x2bd: 0x89, 0x2be: 0x8a, 0x2bf: 0x8b,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0x8c, 0x2c1: 0x8d, 0x2c2: 0x8e, 0x2c3: 0x88, 0x2c4: 0x89, 0x2c5: 0x8a, 0x2c6: 0x8b, 0x2c7: 0x8c,
+ 0x2c8: 0x8d, 0x2c9: 0x8e, 0x2ca: 0x88, 0x2cb: 0x89, 0x2cc: 0x8a, 0x2cd: 0x8b, 0x2ce: 0x8c, 0x2cf: 0x8d,
+ 0x2d0: 0x8e, 0x2d1: 0x88, 0x2d2: 0x89, 0x2d3: 0x8a, 0x2d4: 0x8b, 0x2d5: 0x8c, 0x2d6: 0x8d, 0x2d7: 0x8e,
+ 0x2d8: 0x88, 0x2d9: 0x89, 0x2da: 0x8a, 0x2db: 0x8b, 0x2dc: 0x8c, 0x2dd: 0x8d, 0x2de: 0x8f,
+ // Block 0xc, offset 0x300
+ 0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20,
+ 0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x90, 0x32d: 0x91, 0x32e: 0x92,
+ 0x331: 0x93, 0x332: 0x94, 0x333: 0x95, 0x334: 0x96,
+ 0x338: 0x97, 0x339: 0x98, 0x33a: 0x99, 0x33b: 0x9a, 0x33e: 0x9b, 0x33f: 0x9c,
+ // Block 0xd, offset 0x340
+ 0x347: 0x9d,
+ 0x34b: 0x9e, 0x34d: 0x9f,
+ 0x368: 0xa0, 0x36b: 0xa1,
+ 0x374: 0xa2,
+ 0x37a: 0xa3, 0x37d: 0xa4,
+ // Block 0xe, offset 0x380
+ 0x381: 0xa5, 0x382: 0xa6, 0x384: 0xa7, 0x385: 0x83, 0x387: 0xa8,
+ 0x388: 0xa9, 0x38b: 0xaa, 0x38c: 0xab, 0x38d: 0xac,
+ 0x391: 0xad, 0x392: 0xae, 0x393: 0xaf, 0x396: 0xb0, 0x397: 0xb1,
+ 0x398: 0x74, 0x39a: 0xb2, 0x39c: 0xb3,
+ 0x3a0: 0xb4, 0x3a4: 0xb5, 0x3a5: 0xb6, 0x3a7: 0xb7,
+ 0x3a8: 0xb8, 0x3a9: 0xb9, 0x3aa: 0xba,
+ 0x3b0: 0x74, 0x3b5: 0xbb, 0x3b6: 0xbc,
+ // Block 0xf, offset 0x3c0
+ 0x3eb: 0xbd, 0x3ec: 0xbe,
+ 0x3ff: 0xbf,
+ // Block 0x10, offset 0x400
+ 0x432: 0xc0,
+ // Block 0x11, offset 0x440
+ 0x445: 0xc1, 0x446: 0xc2, 0x447: 0xc3,
+ 0x449: 0xc4,
+ // Block 0x12, offset 0x480
+ 0x480: 0xc5, 0x484: 0xbe,
+ 0x48b: 0xc6,
+ 0x4a3: 0xc7, 0x4a5: 0xc8,
+ // Block 0x13, offset 0x4c0
+ 0x4c8: 0xc9,
+ // Block 0x14, offset 0x500
+ 0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c,
+ 0x528: 0x2d,
+ // Block 0x15, offset 0x540
+ 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,
+ 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
+ 0x56f: 0x12,
+}
+
+// nfcSparseOffset: 156 entries, 312 bytes
+var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xd0, 0xd2, 0xd7, 0xe8, 0xf4, 0xf6, 0xfc, 0xfe, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10b, 0x10e, 0x110, 0x113, 0x116, 0x11a, 0x120, 0x122, 0x12b, 0x12d, 0x130, 0x132, 0x13d, 0x141, 0x14f, 0x152, 0x158, 0x15e, 0x169, 0x16d, 0x16f, 0x171, 0x173, 0x175, 0x177, 0x17d, 0x181, 0x183, 0x185, 0x18d, 0x191, 0x194, 0x196, 0x198, 0x19b, 0x19e, 0x1a0, 0x1a2, 0x1a4, 0x1a6, 0x1ac, 0x1af, 0x1b1, 0x1b8, 0x1be, 0x1c4, 0x1cc, 0x1d2, 0x1d8, 0x1de, 0x1e2, 0x1f0, 0x1f9, 0x1fc, 0x1ff, 0x201, 0x204, 0x206, 0x20a, 0x20f, 0x211, 0x213, 0x218, 0x21e, 0x220, 0x222, 0x224, 0x22a, 0x22d, 0x22f, 0x231, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x254, 0x25c, 0x260, 0x267, 0x26a, 0x270, 0x272, 0x275, 0x277, 0x27a, 0x27f, 0x281, 0x283, 0x285, 0x287, 0x289, 0x28c, 0x28e, 0x290, 0x292, 0x294, 0x296, 0x2a3, 0x2ad, 0x2af, 0x2b1, 0x2b7, 0x2b9, 0x2bb, 0x2be}
+
+// nfcSparseValues: 704 entries, 2816 bytes
+var nfcSparseValues = [704]valueRange{
+ // Block 0x0, offset 0x0
+ {value: 0x0000, lo: 0x04},
+ {value: 0xa100, lo: 0xa8, hi: 0xa8},
+ {value: 0x8100, lo: 0xaf, hi: 0xaf},
+ {value: 0x8100, lo: 0xb4, hi: 0xb4},
+ {value: 0x8100, lo: 0xb8, hi: 0xb8},
+ // Block 0x1, offset 0x5
+ {value: 0x0091, lo: 0x03},
+ {value: 0x46f9, lo: 0xa0, hi: 0xa1},
+ {value: 0x472b, lo: 0xaf, hi: 0xb0},
+ {value: 0xa000, lo: 0xb7, hi: 0xb7},
+ // Block 0x2, offset 0x9
+ {value: 0x0000, lo: 0x01},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ // Block 0x3, offset 0xb
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x98, hi: 0x9d},
+ // Block 0x4, offset 0xd
+ {value: 0x0006, lo: 0x0a},
+ {value: 0xa000, lo: 0x81, hi: 0x81},
+ {value: 0xa000, lo: 0x85, hi: 0x85},
+ {value: 0xa000, lo: 0x89, hi: 0x89},
+ {value: 0x4857, lo: 0x8a, hi: 0x8a},
+ {value: 0x4875, lo: 0x8b, hi: 0x8b},
+ {value: 0x36de, lo: 0x8c, hi: 0x8c},
+ {value: 0x36f6, lo: 0x8d, hi: 0x8d},
+ {value: 0x488d, lo: 0x8e, hi: 0x8e},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x3714, lo: 0x93, hi: 0x94},
+ // Block 0x5, offset 0x18
+ {value: 0x0000, lo: 0x0f},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0xa000, lo: 0x8d, hi: 0x8d},
+ {value: 0x37bc, lo: 0x90, hi: 0x90},
+ {value: 0x37c8, lo: 0x91, hi: 0x91},
+ {value: 0x37b6, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x96, hi: 0x96},
+ {value: 0x382e, lo: 0x97, hi: 0x97},
+ {value: 0x37f8, lo: 0x9c, hi: 0x9c},
+ {value: 0x37e0, lo: 0x9d, hi: 0x9d},
+ {value: 0x380a, lo: 0x9e, hi: 0x9e},
+ {value: 0xa000, lo: 0xb4, hi: 0xb5},
+ {value: 0x3834, lo: 0xb6, hi: 0xb6},
+ {value: 0x383a, lo: 0xb7, hi: 0xb7},
+ // Block 0x6, offset 0x28
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x83, hi: 0x87},
+ // Block 0x7, offset 0x2a
+ {value: 0x0001, lo: 0x04},
+ {value: 0x8114, lo: 0x81, hi: 0x82},
+ {value: 0x8133, lo: 0x84, hi: 0x84},
+ {value: 0x812e, lo: 0x85, hi: 0x85},
+ {value: 0x810e, lo: 0x87, hi: 0x87},
+ // Block 0x8, offset 0x2f
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x97},
+ {value: 0x811a, lo: 0x98, hi: 0x98},
+ {value: 0x811b, lo: 0x99, hi: 0x99},
+ {value: 0x811c, lo: 0x9a, hi: 0x9a},
+ {value: 0x3858, lo: 0xa2, hi: 0xa2},
+ {value: 0x385e, lo: 0xa3, hi: 0xa3},
+ {value: 0x386a, lo: 0xa4, hi: 0xa4},
+ {value: 0x3864, lo: 0xa5, hi: 0xa5},
+ {value: 0x3870, lo: 0xa6, hi: 0xa6},
+ {value: 0xa000, lo: 0xa7, hi: 0xa7},
+ // Block 0x9, offset 0x3a
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3882, lo: 0x80, hi: 0x80},
+ {value: 0xa000, lo: 0x81, hi: 0x81},
+ {value: 0x3876, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x387c, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x95, hi: 0x95},
+ {value: 0x8133, lo: 0x96, hi: 0x9c},
+ {value: 0x8133, lo: 0x9f, hi: 0xa2},
+ {value: 0x812e, lo: 0xa3, hi: 0xa3},
+ {value: 0x8133, lo: 0xa4, hi: 0xa4},
+ {value: 0x8133, lo: 0xa7, hi: 0xa8},
+ {value: 0x812e, lo: 0xaa, hi: 0xaa},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ // Block 0xa, offset 0x49
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x8120, lo: 0x91, hi: 0x91},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x812e, lo: 0xb1, hi: 0xb1},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb5, hi: 0xb6},
+ {value: 0x812e, lo: 0xb7, hi: 0xb9},
+ {value: 0x8133, lo: 0xba, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbc},
+ {value: 0x8133, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbe, hi: 0xbe},
+ {value: 0x8133, lo: 0xbf, hi: 0xbf},
+ // Block 0xb, offset 0x56
+ {value: 0x0005, lo: 0x07},
+ {value: 0x8133, lo: 0x80, hi: 0x80},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x812e, lo: 0x82, hi: 0x83},
+ {value: 0x812e, lo: 0x84, hi: 0x85},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x812e, lo: 0x88, hi: 0x89},
+ {value: 0x8133, lo: 0x8a, hi: 0x8a},
+ // Block 0xc, offset 0x5e
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0xab, hi: 0xb1},
+ {value: 0x812e, lo: 0xb2, hi: 0xb2},
+ {value: 0x8133, lo: 0xb3, hi: 0xb3},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0xd, offset 0x63
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0x96, hi: 0x99},
+ {value: 0x8133, lo: 0x9b, hi: 0xa3},
+ {value: 0x8133, lo: 0xa5, hi: 0xa7},
+ {value: 0x8133, lo: 0xa9, hi: 0xad},
+ // Block 0xe, offset 0x68
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x99, hi: 0x9b},
+ // Block 0xf, offset 0x6a
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0xa8, hi: 0xa8},
+ {value: 0x3eef, lo: 0xa9, hi: 0xa9},
+ {value: 0xa000, lo: 0xb0, hi: 0xb0},
+ {value: 0x3ef7, lo: 0xb1, hi: 0xb1},
+ {value: 0xa000, lo: 0xb3, hi: 0xb3},
+ {value: 0x3eff, lo: 0xb4, hi: 0xb4},
+ {value: 0x9903, lo: 0xbc, hi: 0xbc},
+ // Block 0x10, offset 0x72
+ {value: 0x0008, lo: 0x06},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x91, hi: 0x91},
+ {value: 0x812e, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x93, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x94},
+ {value: 0x4533, lo: 0x98, hi: 0x9f},
+ // Block 0x11, offset 0x79
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x12, offset 0x7c
+ {value: 0x0008, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cab, lo: 0x8b, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x4573, lo: 0x9c, hi: 0x9d},
+ {value: 0x4583, lo: 0x9f, hi: 0x9f},
+ {value: 0x8133, lo: 0xbe, hi: 0xbe},
+ // Block 0x13, offset 0x84
+ {value: 0x0000, lo: 0x03},
+ {value: 0x45ab, lo: 0xb3, hi: 0xb3},
+ {value: 0x45b3, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x14, offset 0x88
+ {value: 0x0008, lo: 0x03},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x458b, lo: 0x99, hi: 0x9b},
+ {value: 0x45a3, lo: 0x9e, hi: 0x9e},
+ // Block 0x15, offset 0x8c
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x16, offset 0x8e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ // Block 0x17, offset 0x90
+ {value: 0x0000, lo: 0x08},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cc3, lo: 0x88, hi: 0x88},
+ {value: 0x2cbb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ccb, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x96, hi: 0x97},
+ {value: 0x45bb, lo: 0x9c, hi: 0x9c},
+ {value: 0x45c3, lo: 0x9d, hi: 0x9d},
+ // Block 0x18, offset 0x99
+ {value: 0x0000, lo: 0x03},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x2cd3, lo: 0x94, hi: 0x94},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x19, offset 0x9d
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2cdb, lo: 0x8a, hi: 0x8a},
+ {value: 0x2ceb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ce3, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x1a, offset 0xa4
+ {value: 0x1801, lo: 0x04},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x3f07, lo: 0x88, hi: 0x88},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8121, lo: 0x95, hi: 0x96},
+ // Block 0x1b, offset 0xa9
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0xa000, lo: 0xbf, hi: 0xbf},
+ // Block 0x1c, offset 0xac
+ {value: 0x0000, lo: 0x09},
+ {value: 0x2cf3, lo: 0x80, hi: 0x80},
+ {value: 0x9900, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x2cfb, lo: 0x87, hi: 0x87},
+ {value: 0x2d03, lo: 0x88, hi: 0x88},
+ {value: 0x2f67, lo: 0x8a, hi: 0x8a},
+ {value: 0x2def, lo: 0x8b, hi: 0x8b},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x95, hi: 0x96},
+ // Block 0x1d, offset 0xb6
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x1e, offset 0xb9
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2d0b, lo: 0x8a, hi: 0x8a},
+ {value: 0x2d1b, lo: 0x8b, hi: 0x8b},
+ {value: 0x2d13, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x1f, offset 0xc0
+ {value: 0x6bdd, lo: 0x07},
+ {value: 0x9905, lo: 0x8a, hi: 0x8a},
+ {value: 0x9900, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x3f0f, lo: 0x9a, hi: 0x9a},
+ {value: 0x2f6f, lo: 0x9c, hi: 0x9c},
+ {value: 0x2dfa, lo: 0x9d, hi: 0x9d},
+ {value: 0x2d23, lo: 0x9e, hi: 0x9f},
+ // Block 0x20, offset 0xc8
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8123, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x21, offset 0xcb
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8124, lo: 0x88, hi: 0x8b},
+ // Block 0x22, offset 0xcd
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8125, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x23, offset 0xd0
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8126, lo: 0x88, hi: 0x8b},
+ // Block 0x24, offset 0xd2
+ {value: 0x0000, lo: 0x04},
+ {value: 0x812e, lo: 0x98, hi: 0x99},
+ {value: 0x812e, lo: 0xb5, hi: 0xb5},
+ {value: 0x812e, lo: 0xb7, hi: 0xb7},
+ {value: 0x812c, lo: 0xb9, hi: 0xb9},
+ // Block 0x25, offset 0xd7
+ {value: 0x0000, lo: 0x10},
+ {value: 0x264a, lo: 0x83, hi: 0x83},
+ {value: 0x2651, lo: 0x8d, hi: 0x8d},
+ {value: 0x2658, lo: 0x92, hi: 0x92},
+ {value: 0x265f, lo: 0x97, hi: 0x97},
+ {value: 0x2666, lo: 0x9c, hi: 0x9c},
+ {value: 0x2643, lo: 0xa9, hi: 0xa9},
+ {value: 0x8127, lo: 0xb1, hi: 0xb1},
+ {value: 0x8128, lo: 0xb2, hi: 0xb2},
+ {value: 0x4a9b, lo: 0xb3, hi: 0xb3},
+ {value: 0x8129, lo: 0xb4, hi: 0xb4},
+ {value: 0x4aa4, lo: 0xb5, hi: 0xb5},
+ {value: 0x45cb, lo: 0xb6, hi: 0xb6},
+ {value: 0x8200, lo: 0xb7, hi: 0xb7},
+ {value: 0x45d3, lo: 0xb8, hi: 0xb8},
+ {value: 0x8200, lo: 0xb9, hi: 0xb9},
+ {value: 0x8128, lo: 0xba, hi: 0xbd},
+ // Block 0x26, offset 0xe8
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x8128, lo: 0x80, hi: 0x80},
+ {value: 0x4aad, lo: 0x81, hi: 0x81},
+ {value: 0x8133, lo: 0x82, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0x86, hi: 0x87},
+ {value: 0x2674, lo: 0x93, hi: 0x93},
+ {value: 0x267b, lo: 0x9d, hi: 0x9d},
+ {value: 0x2682, lo: 0xa2, hi: 0xa2},
+ {value: 0x2689, lo: 0xa7, hi: 0xa7},
+ {value: 0x2690, lo: 0xac, hi: 0xac},
+ {value: 0x266d, lo: 0xb9, hi: 0xb9},
+ // Block 0x27, offset 0xf4
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x86, hi: 0x86},
+ // Block 0x28, offset 0xf6
+ {value: 0x0000, lo: 0x05},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x2d2b, lo: 0xa6, hi: 0xa6},
+ {value: 0x9900, lo: 0xae, hi: 0xae},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x29, offset 0xfc
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ // Block 0x2a, offset 0xfe
+ {value: 0x0000, lo: 0x01},
+ {value: 0xa000, lo: 0x80, hi: 0x92},
+ // Block 0x2b, offset 0x100
+ {value: 0x0000, lo: 0x01},
+ {value: 0xb900, lo: 0xa1, hi: 0xb5},
+ // Block 0x2c, offset 0x102
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0xa8, hi: 0xbf},
+ // Block 0x2d, offset 0x104
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0x80, hi: 0x82},
+ // Block 0x2e, offset 0x106
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x9d, hi: 0x9f},
+ // Block 0x2f, offset 0x108
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x94, hi: 0x94},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x30, offset 0x10b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x9d, hi: 0x9d},
+ // Block 0x31, offset 0x10e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8132, lo: 0xa9, hi: 0xa9},
+ // Block 0x32, offset 0x110
+ {value: 0x0004, lo: 0x02},
+ {value: 0x812f, lo: 0xb9, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbb},
+ // Block 0x33, offset 0x113
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x97, hi: 0x97},
+ {value: 0x812e, lo: 0x98, hi: 0x98},
+ // Block 0x34, offset 0x116
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ {value: 0x8133, lo: 0xb5, hi: 0xbc},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x35, offset 0x11a
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ {value: 0x812e, lo: 0xb5, hi: 0xba},
+ {value: 0x8133, lo: 0xbb, hi: 0xbc},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x36, offset 0x120
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x80, hi: 0x80},
+ // Block 0x37, offset 0x122
+ {value: 0x0000, lo: 0x08},
+ {value: 0x2d73, lo: 0x80, hi: 0x80},
+ {value: 0x2d7b, lo: 0x81, hi: 0x81},
+ {value: 0xa000, lo: 0x82, hi: 0x82},
+ {value: 0x2d83, lo: 0x83, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xab, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xac},
+ {value: 0x8133, lo: 0xad, hi: 0xb3},
+ // Block 0x38, offset 0x12b
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xaa, hi: 0xab},
+ // Block 0x39, offset 0x12d
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xa6, hi: 0xa6},
+ {value: 0x8105, lo: 0xb2, hi: 0xb3},
+ // Block 0x3a, offset 0x130
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x3b, offset 0x132
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x92},
+ {value: 0x8101, lo: 0x94, hi: 0x94},
+ {value: 0x812e, lo: 0x95, hi: 0x99},
+ {value: 0x8133, lo: 0x9a, hi: 0x9b},
+ {value: 0x812e, lo: 0x9c, hi: 0x9f},
+ {value: 0x8133, lo: 0xa0, hi: 0xa0},
+ {value: 0x8101, lo: 0xa2, hi: 0xa8},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ {value: 0x8133, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb8, hi: 0xb9},
+ // Block 0x3c, offset 0x13d
+ {value: 0x0004, lo: 0x03},
+ {value: 0x0436, lo: 0x80, hi: 0x81},
+ {value: 0x8100, lo: 0x97, hi: 0x97},
+ {value: 0x8100, lo: 0xbe, hi: 0xbe},
+ // Block 0x3d, offset 0x141
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x8133, lo: 0x90, hi: 0x91},
+ {value: 0x8101, lo: 0x92, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x97},
+ {value: 0x8101, lo: 0x98, hi: 0x9a},
+ {value: 0x8133, lo: 0x9b, hi: 0x9c},
+ {value: 0x8133, lo: 0xa1, hi: 0xa1},
+ {value: 0x8101, lo: 0xa5, hi: 0xa6},
+ {value: 0x8133, lo: 0xa7, hi: 0xa7},
+ {value: 0x812e, lo: 0xa8, hi: 0xa8},
+ {value: 0x8133, lo: 0xa9, hi: 0xa9},
+ {value: 0x8101, lo: 0xaa, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xaf},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ // Block 0x3e, offset 0x14f
+ {value: 0x4292, lo: 0x02},
+ {value: 0x01bb, lo: 0xa6, hi: 0xa6},
+ {value: 0x0057, lo: 0xaa, hi: 0xab},
+ // Block 0x3f, offset 0x152
+ {value: 0x0007, lo: 0x05},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ {value: 0x3bd0, lo: 0x9a, hi: 0x9b},
+ {value: 0x3bde, lo: 0xae, hi: 0xae},
+ // Block 0x40, offset 0x158
+ {value: 0x000e, lo: 0x05},
+ {value: 0x3be5, lo: 0x8d, hi: 0x8e},
+ {value: 0x3bec, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ // Block 0x41, offset 0x15e
+ {value: 0x63f1, lo: 0x0a},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0x3bfa, lo: 0x84, hi: 0x84},
+ {value: 0xa000, lo: 0x88, hi: 0x88},
+ {value: 0x3c01, lo: 0x89, hi: 0x89},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0x3c08, lo: 0x8c, hi: 0x8c},
+ {value: 0xa000, lo: 0xa3, hi: 0xa3},
+ {value: 0x3c0f, lo: 0xa4, hi: 0xa5},
+ {value: 0x3c16, lo: 0xa6, hi: 0xa6},
+ {value: 0xa000, lo: 0xbc, hi: 0xbc},
+ // Block 0x42, offset 0x169
+ {value: 0x0007, lo: 0x03},
+ {value: 0x3c7f, lo: 0xa0, hi: 0xa1},
+ {value: 0x3ca9, lo: 0xa2, hi: 0xa3},
+ {value: 0x3cd3, lo: 0xaa, hi: 0xad},
+ // Block 0x43, offset 0x16d
+ {value: 0x0004, lo: 0x01},
+ {value: 0x048e, lo: 0xa9, hi: 0xaa},
+ // Block 0x44, offset 0x16f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x44f4, lo: 0x9c, hi: 0x9c},
+ // Block 0x45, offset 0x171
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xaf, hi: 0xb1},
+ // Block 0x46, offset 0x173
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x47, offset 0x175
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa0, hi: 0xbf},
+ // Block 0x48, offset 0x177
+ {value: 0x0000, lo: 0x05},
+ {value: 0x812d, lo: 0xaa, hi: 0xaa},
+ {value: 0x8132, lo: 0xab, hi: 0xab},
+ {value: 0x8134, lo: 0xac, hi: 0xac},
+ {value: 0x812f, lo: 0xad, hi: 0xad},
+ {value: 0x8130, lo: 0xae, hi: 0xaf},
+ // Block 0x49, offset 0x17d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x4ab6, lo: 0xb3, hi: 0xb3},
+ {value: 0x4ab6, lo: 0xb5, hi: 0xb6},
+ {value: 0x4ab6, lo: 0xba, hi: 0xbf},
+ // Block 0x4a, offset 0x181
+ {value: 0x0000, lo: 0x01},
+ {value: 0x4ab6, lo: 0x8f, hi: 0xa3},
+ // Block 0x4b, offset 0x183
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0xae, hi: 0xbe},
+ // Block 0x4c, offset 0x185
+ {value: 0x0000, lo: 0x07},
+ {value: 0x8100, lo: 0x84, hi: 0x84},
+ {value: 0x8100, lo: 0x87, hi: 0x87},
+ {value: 0x8100, lo: 0x90, hi: 0x90},
+ {value: 0x8100, lo: 0x9e, hi: 0x9e},
+ {value: 0x8100, lo: 0xa1, hi: 0xa1},
+ {value: 0x8100, lo: 0xb2, hi: 0xb2},
+ {value: 0x8100, lo: 0xbb, hi: 0xbb},
+ // Block 0x4d, offset 0x18d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8100, lo: 0x80, hi: 0x80},
+ {value: 0x8100, lo: 0x8b, hi: 0x8b},
+ {value: 0x8100, lo: 0x8e, hi: 0x8e},
+ // Block 0x4e, offset 0x191
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xaf, hi: 0xaf},
+ {value: 0x8133, lo: 0xb4, hi: 0xbd},
+ // Block 0x4f, offset 0x194
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x9e, hi: 0x9f},
+ // Block 0x50, offset 0x196
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb1},
+ // Block 0x51, offset 0x198
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xac, hi: 0xac},
+ // Block 0x52, offset 0x19b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xa0, hi: 0xb1},
+ // Block 0x53, offset 0x19e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xab, hi: 0xad},
+ // Block 0x54, offset 0x1a0
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x93, hi: 0x93},
+ // Block 0x55, offset 0x1a2
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb3, hi: 0xb3},
+ // Block 0x56, offset 0x1a4
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ // Block 0x57, offset 0x1a6
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb7, hi: 0xb8},
+ {value: 0x8133, lo: 0xbe, hi: 0xbf},
+ // Block 0x58, offset 0x1ac
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ // Block 0x59, offset 0x1af
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xad, hi: 0xad},
+ // Block 0x5a, offset 0x1b1
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe500, lo: 0x80, hi: 0x80},
+ {value: 0xc600, lo: 0x81, hi: 0x9b},
+ {value: 0xe500, lo: 0x9c, hi: 0x9c},
+ {value: 0xc600, lo: 0x9d, hi: 0xb7},
+ {value: 0xe500, lo: 0xb8, hi: 0xb8},
+ {value: 0xc600, lo: 0xb9, hi: 0xbf},
+ // Block 0x5b, offset 0x1b8
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x93},
+ {value: 0xe500, lo: 0x94, hi: 0x94},
+ {value: 0xc600, lo: 0x95, hi: 0xaf},
+ {value: 0xe500, lo: 0xb0, hi: 0xb0},
+ {value: 0xc600, lo: 0xb1, hi: 0xbf},
+ // Block 0x5c, offset 0x1be
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8b},
+ {value: 0xe500, lo: 0x8c, hi: 0x8c},
+ {value: 0xc600, lo: 0x8d, hi: 0xa7},
+ {value: 0xe500, lo: 0xa8, hi: 0xa8},
+ {value: 0xc600, lo: 0xa9, hi: 0xbf},
+ // Block 0x5d, offset 0x1c4
+ {value: 0x0000, lo: 0x07},
+ {value: 0xc600, lo: 0x80, hi: 0x83},
+ {value: 0xe500, lo: 0x84, hi: 0x84},
+ {value: 0xc600, lo: 0x85, hi: 0x9f},
+ {value: 0xe500, lo: 0xa0, hi: 0xa0},
+ {value: 0xc600, lo: 0xa1, hi: 0xbb},
+ {value: 0xe500, lo: 0xbc, hi: 0xbc},
+ {value: 0xc600, lo: 0xbd, hi: 0xbf},
+ // Block 0x5e, offset 0x1cc
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x97},
+ {value: 0xe500, lo: 0x98, hi: 0x98},
+ {value: 0xc600, lo: 0x99, hi: 0xb3},
+ {value: 0xe500, lo: 0xb4, hi: 0xb4},
+ {value: 0xc600, lo: 0xb5, hi: 0xbf},
+ // Block 0x5f, offset 0x1d2
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8f},
+ {value: 0xe500, lo: 0x90, hi: 0x90},
+ {value: 0xc600, lo: 0x91, hi: 0xab},
+ {value: 0xe500, lo: 0xac, hi: 0xac},
+ {value: 0xc600, lo: 0xad, hi: 0xbf},
+ // Block 0x60, offset 0x1d8
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ {value: 0xe500, lo: 0xa4, hi: 0xa4},
+ {value: 0xc600, lo: 0xa5, hi: 0xbf},
+ // Block 0x61, offset 0x1de
+ {value: 0x0000, lo: 0x03},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ // Block 0x62, offset 0x1e2
+ {value: 0x0006, lo: 0x0d},
+ {value: 0x43a7, lo: 0x9d, hi: 0x9d},
+ {value: 0x8116, lo: 0x9e, hi: 0x9e},
+ {value: 0x4419, lo: 0x9f, hi: 0x9f},
+ {value: 0x4407, lo: 0xaa, hi: 0xab},
+ {value: 0x450b, lo: 0xac, hi: 0xac},
+ {value: 0x4513, lo: 0xad, hi: 0xad},
+ {value: 0x435f, lo: 0xae, hi: 0xb1},
+ {value: 0x437d, lo: 0xb2, hi: 0xb4},
+ {value: 0x4395, lo: 0xb5, hi: 0xb6},
+ {value: 0x43a1, lo: 0xb8, hi: 0xb8},
+ {value: 0x43ad, lo: 0xb9, hi: 0xbb},
+ {value: 0x43c5, lo: 0xbc, hi: 0xbc},
+ {value: 0x43cb, lo: 0xbe, hi: 0xbe},
+ // Block 0x63, offset 0x1f0
+ {value: 0x0006, lo: 0x08},
+ {value: 0x43d1, lo: 0x80, hi: 0x81},
+ {value: 0x43dd, lo: 0x83, hi: 0x84},
+ {value: 0x43ef, lo: 0x86, hi: 0x89},
+ {value: 0x4413, lo: 0x8a, hi: 0x8a},
+ {value: 0x438f, lo: 0x8b, hi: 0x8b},
+ {value: 0x4377, lo: 0x8c, hi: 0x8c},
+ {value: 0x43bf, lo: 0x8d, hi: 0x8d},
+ {value: 0x43e9, lo: 0x8e, hi: 0x8e},
+ // Block 0x64, offset 0x1f9
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8100, lo: 0xa4, hi: 0xa5},
+ {value: 0x8100, lo: 0xb0, hi: 0xb1},
+ // Block 0x65, offset 0x1fc
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8100, lo: 0x9b, hi: 0x9d},
+ {value: 0x8200, lo: 0x9e, hi: 0xa3},
+ // Block 0x66, offset 0x1ff
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x90, hi: 0x90},
+ // Block 0x67, offset 0x201
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8100, lo: 0x99, hi: 0x99},
+ {value: 0x8200, lo: 0xb2, hi: 0xb4},
+ // Block 0x68, offset 0x204
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0xbc, hi: 0xbd},
+ // Block 0x69, offset 0x206
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8133, lo: 0xa0, hi: 0xa6},
+ {value: 0x812e, lo: 0xa7, hi: 0xad},
+ {value: 0x8133, lo: 0xae, hi: 0xaf},
+ // Block 0x6a, offset 0x20a
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8100, lo: 0x89, hi: 0x8c},
+ {value: 0x8100, lo: 0xb0, hi: 0xb2},
+ {value: 0x8100, lo: 0xb4, hi: 0xb4},
+ {value: 0x8100, lo: 0xb6, hi: 0xbf},
+ // Block 0x6b, offset 0x20f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x81, hi: 0x8c},
+ // Block 0x6c, offset 0x211
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0xb5, hi: 0xba},
+ // Block 0x6d, offset 0x213
+ {value: 0x0000, lo: 0x04},
+ {value: 0x4ab6, lo: 0x9e, hi: 0x9f},
+ {value: 0x4ab6, lo: 0xa3, hi: 0xa3},
+ {value: 0x4ab6, lo: 0xa5, hi: 0xa6},
+ {value: 0x4ab6, lo: 0xaa, hi: 0xaf},
+ // Block 0x6e, offset 0x218
+ {value: 0x0000, lo: 0x05},
+ {value: 0x4ab6, lo: 0x82, hi: 0x87},
+ {value: 0x4ab6, lo: 0x8a, hi: 0x8f},
+ {value: 0x4ab6, lo: 0x92, hi: 0x97},
+ {value: 0x4ab6, lo: 0x9a, hi: 0x9c},
+ {value: 0x8100, lo: 0xa3, hi: 0xa3},
+ // Block 0x6f, offset 0x21e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0x70, offset 0x220
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xa0, hi: 0xa0},
+ // Block 0x71, offset 0x222
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb6, hi: 0xba},
+ // Block 0x72, offset 0x224
+ {value: 0x002d, lo: 0x05},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x8f, hi: 0x8f},
+ {value: 0x8133, lo: 0xb8, hi: 0xb8},
+ {value: 0x8101, lo: 0xb9, hi: 0xba},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x73, offset 0x22a
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xa5, hi: 0xa5},
+ {value: 0x812e, lo: 0xa6, hi: 0xa6},
+ // Block 0x74, offset 0x22d
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa4, hi: 0xa7},
+ // Block 0x75, offset 0x22f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ // Block 0x76, offset 0x231
+ {value: 0x0000, lo: 0x05},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x8133, lo: 0x88, hi: 0x8a},
+ {value: 0x812e, lo: 0x8b, hi: 0x8b},
+ {value: 0x8133, lo: 0x8c, hi: 0x8c},
+ {value: 0x812e, lo: 0x8d, hi: 0x90},
+ // Block 0x77, offset 0x237
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x78, offset 0x23a
+ {value: 0x17fe, lo: 0x07},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x424f, lo: 0x9a, hi: 0x9a},
+ {value: 0xa000, lo: 0x9b, hi: 0x9b},
+ {value: 0x4259, lo: 0x9c, hi: 0x9c},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x4263, lo: 0xab, hi: 0xab},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x79, offset 0x242
+ {value: 0x0000, lo: 0x06},
+ {value: 0x8133, lo: 0x80, hi: 0x82},
+ {value: 0x9900, lo: 0xa7, hi: 0xa7},
+ {value: 0x2d8b, lo: 0xae, hi: 0xae},
+ {value: 0x2d95, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb1, hi: 0xb2},
+ {value: 0x8105, lo: 0xb3, hi: 0xb4},
+ // Block 0x7a, offset 0x249
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0x7b, offset 0x24c
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb5, hi: 0xb5},
+ {value: 0x8103, lo: 0xb6, hi: 0xb6},
+ // Block 0x7c, offset 0x24f
+ {value: 0x0002, lo: 0x01},
+ {value: 0x8103, lo: 0xa9, hi: 0xaa},
+ // Block 0x7d, offset 0x251
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x7e, offset 0x254
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2d9f, lo: 0x8b, hi: 0x8b},
+ {value: 0x2da9, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x8133, lo: 0xa6, hi: 0xac},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ // Block 0x7f, offset 0x25c
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x86, hi: 0x86},
+ {value: 0x8133, lo: 0x9e, hi: 0x9e},
+ // Block 0x80, offset 0x260
+ {value: 0x6b4d, lo: 0x06},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb9, hi: 0xb9},
+ {value: 0x9900, lo: 0xba, hi: 0xba},
+ {value: 0x2dbd, lo: 0xbb, hi: 0xbb},
+ {value: 0x2db3, lo: 0xbc, hi: 0xbd},
+ {value: 0x2dc7, lo: 0xbe, hi: 0xbe},
+ // Block 0x81, offset 0x267
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x82, offset 0x26a
+ {value: 0x0000, lo: 0x05},
+ {value: 0x9900, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb8, hi: 0xb9},
+ {value: 0x2dd1, lo: 0xba, hi: 0xba},
+ {value: 0x2ddb, lo: 0xbb, hi: 0xbb},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x83, offset 0x270
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x80, hi: 0x80},
+ // Block 0x84, offset 0x272
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x85, offset 0x275
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xab, hi: 0xab},
+ // Block 0x86, offset 0x277
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb9, hi: 0xb9},
+ {value: 0x8103, lo: 0xba, hi: 0xba},
+ // Block 0x87, offset 0x27a
+ {value: 0x0000, lo: 0x04},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb5, hi: 0xb5},
+ {value: 0x2de5, lo: 0xb8, hi: 0xb8},
+ {value: 0x8105, lo: 0xbd, hi: 0xbe},
+ // Block 0x88, offset 0x27f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x89, offset 0x281
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ // Block 0x8a, offset 0x283
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x8b, offset 0x285
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x87, hi: 0x87},
+ // Block 0x8c, offset 0x287
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x99, hi: 0x99},
+ // Block 0x8d, offset 0x289
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0x82, hi: 0x82},
+ {value: 0x8105, lo: 0x84, hi: 0x85},
+ // Block 0x8e, offset 0x28c
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x97, hi: 0x97},
+ // Block 0x8f, offset 0x28e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0xb0, hi: 0xb4},
+ // Block 0x90, offset 0x290
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb6},
+ // Block 0x91, offset 0x292
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8102, lo: 0xb0, hi: 0xb1},
+ // Block 0x92, offset 0x294
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0x9e, hi: 0x9e},
+ // Block 0x93, offset 0x296
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x45e3, lo: 0x9e, hi: 0x9e},
+ {value: 0x45ed, lo: 0x9f, hi: 0x9f},
+ {value: 0x4621, lo: 0xa0, hi: 0xa0},
+ {value: 0x462f, lo: 0xa1, hi: 0xa1},
+ {value: 0x463d, lo: 0xa2, hi: 0xa2},
+ {value: 0x464b, lo: 0xa3, hi: 0xa3},
+ {value: 0x4659, lo: 0xa4, hi: 0xa4},
+ {value: 0x812c, lo: 0xa5, hi: 0xa6},
+ {value: 0x8101, lo: 0xa7, hi: 0xa9},
+ {value: 0x8131, lo: 0xad, hi: 0xad},
+ {value: 0x812c, lo: 0xae, hi: 0xb2},
+ {value: 0x812e, lo: 0xbb, hi: 0xbf},
+ // Block 0x94, offset 0x2a3
+ {value: 0x0000, lo: 0x09},
+ {value: 0x812e, lo: 0x80, hi: 0x82},
+ {value: 0x8133, lo: 0x85, hi: 0x89},
+ {value: 0x812e, lo: 0x8a, hi: 0x8b},
+ {value: 0x8133, lo: 0xaa, hi: 0xad},
+ {value: 0x45f7, lo: 0xbb, hi: 0xbb},
+ {value: 0x4601, lo: 0xbc, hi: 0xbc},
+ {value: 0x4667, lo: 0xbd, hi: 0xbd},
+ {value: 0x4683, lo: 0xbe, hi: 0xbe},
+ {value: 0x4675, lo: 0xbf, hi: 0xbf},
+ // Block 0x95, offset 0x2ad
+ {value: 0x0000, lo: 0x01},
+ {value: 0x4691, lo: 0x80, hi: 0x80},
+ // Block 0x96, offset 0x2af
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x82, hi: 0x84},
+ // Block 0x97, offset 0x2b1
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0x80, hi: 0x86},
+ {value: 0x8133, lo: 0x88, hi: 0x98},
+ {value: 0x8133, lo: 0x9b, hi: 0xa1},
+ {value: 0x8133, lo: 0xa3, hi: 0xa4},
+ {value: 0x8133, lo: 0xa6, hi: 0xaa},
+ // Block 0x98, offset 0x2b7
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xac, hi: 0xaf},
+ // Block 0x99, offset 0x2b9
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x90, hi: 0x96},
+ // Block 0x9a, offset 0x2bb
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x84, hi: 0x89},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0x9b, offset 0x2be
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8100, lo: 0x93, hi: 0x93},
+}
+
+// lookup returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfkcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfkcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfkcTrie) lookupUnsafe(s []byte) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfkcValues[c0]
+ }
+ i := nfkcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// lookupString returns the trie value for the first UTF-8 encoding in s and
+// the width in bytes of this encoding. The size will be 0 if s does not
+// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+func (t *nfkcTrie) lookupString(s string) (v uint16, sz int) {
+ c0 := s[0]
+ switch {
+ case c0 < 0x80: // is ASCII
+ return nfkcValues[c0], 1
+ case c0 < 0xC2:
+ return 0, 1 // Illegal UTF-8: not a starter, not ASCII.
+ case c0 < 0xE0: // 2-byte UTF-8
+ if len(s) < 2 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c1), 2
+ case c0 < 0xF0: // 3-byte UTF-8
+ if len(s) < 3 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c2), 3
+ case c0 < 0xF8: // 4-byte UTF-8
+ if len(s) < 4 {
+ return 0, 0
+ }
+ i := nfkcIndex[c0]
+ c1 := s[1]
+ if c1 < 0x80 || 0xC0 <= c1 {
+ return 0, 1 // Illegal UTF-8: not a continuation byte.
+ }
+ o := uint32(i)<<6 + uint32(c1)
+ i = nfkcIndex[o]
+ c2 := s[2]
+ if c2 < 0x80 || 0xC0 <= c2 {
+ return 0, 2 // Illegal UTF-8: not a continuation byte.
+ }
+ o = uint32(i)<<6 + uint32(c2)
+ i = nfkcIndex[o]
+ c3 := s[3]
+ if c3 < 0x80 || 0xC0 <= c3 {
+ return 0, 3 // Illegal UTF-8: not a continuation byte.
+ }
+ return t.lookupValue(uint32(i), c3), 4
+ }
+ // Illegal rune
+ return 0, 1
+}
+
+// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+// s must start with a full and valid UTF-8 encoded rune.
+func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 {
+ c0 := s[0]
+ if c0 < 0x80 { // is ASCII
+ return nfkcValues[c0]
+ }
+ i := nfkcIndex[c0]
+ if c0 < 0xE0 { // 2-byte UTF-8
+ return t.lookupValue(uint32(i), s[1])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[1])]
+ if c0 < 0xF0 { // 3-byte UTF-8
+ return t.lookupValue(uint32(i), s[2])
+ }
+ i = nfkcIndex[uint32(i)<<6+uint32(s[2])]
+ if c0 < 0xF8 { // 4-byte UTF-8
+ return t.lookupValue(uint32(i), s[3])
+ }
+ return 0
+}
+
+// nfkcTrie. Total size: 18768 bytes (18.33 KiB). Checksum: c51186dd2412943d.
+type nfkcTrie struct{}
+
+func newNfkcTrie(i int) *nfkcTrie {
+ return &nfkcTrie{}
+}
+
+// lookupValue determines the type of block n and looks up the value for b.
+func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 {
+ switch {
+ case n < 92:
+ return uint16(nfkcValues[n<<6+uint32(b)])
+ default:
+ n -= 92
+ return uint16(nfkcSparse.lookup(n, b))
+ }
+}
+
+// nfkcValues: 94 blocks, 6016 entries, 12032 bytes
+// The third block is the zero block.
+var nfkcValues = [6016]uint16{
+ // Block 0x0, offset 0x0
+ 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000,
+ // Block 0x1, offset 0x40
+ 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000,
+ 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000,
+ 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000,
+ 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000,
+ 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000,
+ 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000,
+ 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000,
+ 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000,
+ 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000,
+ 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000,
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3,
+ 0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012,
+ 0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b,
+ 0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4,
+ 0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c,
+ 0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c,
+ 0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a,
+ 0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767,
+ 0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776,
+ 0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea,
+ 0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580,
+ // Block 0x4, offset 0x100
+ 0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf,
+ 0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd,
+ 0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec,
+ 0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319,
+ 0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350,
+ 0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369,
+ 0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5,
+ 0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd,
+ 0x130: 0x30a3, 0x132: 0x1960, 0x133: 0x19ed, 0x134: 0x30cb, 0x135: 0x33d7,
+ 0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3,
+ 0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff, 0x13f: 0x1bb2,
+ // Block 0x5, offset 0x140
+ 0x140: 0x1c3a, 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f,
+ 0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436, 0x149: 0x1c62,
+ 0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463,
+ 0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a,
+ 0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4,
+ 0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1,
+ 0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad,
+ 0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9,
+ 0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f,
+ 0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e,
+ 0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0x00a7,
+ // Block 0x6, offset 0x180
+ 0x184: 0x2e05, 0x185: 0x2e0b,
+ 0x186: 0x2e11, 0x187: 0x1975, 0x188: 0x1978, 0x189: 0x1a0e, 0x18a: 0x198d, 0x18b: 0x1990,
+ 0x18c: 0x1a44, 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157,
+ 0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df,
+ 0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67,
+ 0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc,
+ 0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6,
+ 0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4,
+ 0x1b0: 0x33dc, 0x1b1: 0x1945, 0x1b2: 0x1948, 0x1b3: 0x19d5, 0x1b4: 0x303f, 0x1b5: 0x334b,
+ 0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d,
+ 0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d,
+ 0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3,
+ 0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490,
+ 0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d,
+ 0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc,
+ 0x1de: 0x3071, 0x1df: 0x337d,
+ 0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762,
+ 0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780,
+ 0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576,
+ // Block 0x8, offset 0x200
+ 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133,
+ 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933,
+ 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933,
+ 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e,
+ 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e,
+ 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e,
+ 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e,
+ 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e,
+ 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101,
+ 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e,
+ 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133,
+ // Block 0x9, offset 0x240
+ 0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937,
+ 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133,
+ 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133,
+ 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133,
+ 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136,
+ 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133,
+ 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133,
+ 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133,
+ 0x274: 0x0173,
+ 0x27a: 0x42bc,
+ 0x27e: 0x0037,
+ // Block 0xa, offset 0x280
+ 0x284: 0x4271, 0x285: 0x4492,
+ 0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c,
+ 0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000,
+ 0x295: 0xa000, 0x297: 0xa000,
+ 0x299: 0xa000,
+ 0x29f: 0xa000, 0x2a1: 0xa000,
+ 0x2a5: 0xa000, 0x2a9: 0xa000,
+ 0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0,
+ 0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000,
+ 0x2b7: 0xa000, 0x2b9: 0xa000,
+ 0x2bf: 0xa000,
+ // Block 0xb, offset 0x2c0
+ 0x2c1: 0xa000, 0x2c5: 0xa000,
+ 0x2c9: 0xa000, 0x2ca: 0x4857, 0x2cb: 0x4875,
+ 0x2cc: 0x36de, 0x2cd: 0x36f6, 0x2ce: 0x488d, 0x2d0: 0x01c1, 0x2d1: 0x01d3,
+ 0x2d2: 0x01af, 0x2d3: 0x4323, 0x2d4: 0x4329, 0x2d5: 0x01fd, 0x2d6: 0x01eb,
+ 0x2f0: 0x01d9, 0x2f1: 0x01ee, 0x2f2: 0x01f1, 0x2f4: 0x018b, 0x2f5: 0x01ca,
+ 0x2f9: 0x01a9,
+ // Block 0xc, offset 0x300
+ 0x300: 0x3738, 0x301: 0x3744, 0x303: 0x3732,
+ 0x306: 0xa000, 0x307: 0x3720,
+ 0x30c: 0x3774, 0x30d: 0x375c, 0x30e: 0x3786, 0x310: 0xa000,
+ 0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000,
+ 0x318: 0xa000, 0x319: 0x3768, 0x31a: 0xa000,
+ 0x31e: 0xa000, 0x323: 0xa000,
+ 0x327: 0xa000,
+ 0x32b: 0xa000, 0x32d: 0xa000,
+ 0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000,
+ 0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37ec, 0x33a: 0xa000,
+ 0x33e: 0xa000,
+ // Block 0xd, offset 0x340
+ 0x341: 0x374a, 0x342: 0x37ce,
+ 0x350: 0x3726, 0x351: 0x37aa,
+ 0x352: 0x372c, 0x353: 0x37b0, 0x356: 0x373e, 0x357: 0x37c2,
+ 0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3840, 0x35b: 0x3846, 0x35c: 0x3750, 0x35d: 0x37d4,
+ 0x35e: 0x3756, 0x35f: 0x37da, 0x362: 0x3762, 0x363: 0x37e6,
+ 0x364: 0x376e, 0x365: 0x37f2, 0x366: 0x377a, 0x367: 0x37fe, 0x368: 0xa000, 0x369: 0xa000,
+ 0x36a: 0x384c, 0x36b: 0x3852, 0x36c: 0x37a4, 0x36d: 0x3828, 0x36e: 0x3780, 0x36f: 0x3804,
+ 0x370: 0x378c, 0x371: 0x3810, 0x372: 0x3792, 0x373: 0x3816, 0x374: 0x3798, 0x375: 0x381c,
+ 0x378: 0x379e, 0x379: 0x3822,
+ // Block 0xe, offset 0x380
+ 0x387: 0x1d67,
+ 0x391: 0x812e,
+ 0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133,
+ 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133,
+ 0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e,
+ 0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133,
+ 0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133,
+ 0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b,
+ 0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110,
+ 0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113,
+ // Block 0xf, offset 0x3c0
+ 0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117,
+ 0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d,
+ 0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133,
+ 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133,
+ 0x3de: 0x8133, 0x3df: 0x812e,
+ 0x3f0: 0x811f, 0x3f5: 0x1d8a,
+ 0x3f6: 0x2019, 0x3f7: 0x2055, 0x3f8: 0x2050,
+ // Block 0x10, offset 0x400
+ 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133,
+ 0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133,
+ 0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e,
+ 0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e,
+ 0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e,
+ 0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133,
+ 0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133,
+ 0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133,
+ // Block 0x11, offset 0x440
+ 0x445: 0xa000,
+ 0x446: 0x2d33, 0x447: 0xa000, 0x448: 0x2d3b, 0x449: 0xa000, 0x44a: 0x2d43, 0x44b: 0xa000,
+ 0x44c: 0x2d4b, 0x44d: 0xa000, 0x44e: 0x2d53, 0x451: 0xa000,
+ 0x452: 0x2d5b,
+ 0x474: 0x8103, 0x475: 0x9900,
+ 0x47a: 0xa000, 0x47b: 0x2d63,
+ 0x47c: 0xa000, 0x47d: 0x2d6b, 0x47e: 0xa000, 0x47f: 0xa000,
+ // Block 0x12, offset 0x480
+ 0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8,
+ 0x486: 0x0416, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107,
+ 0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0,
+ 0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x041a, 0x495: 0x041e, 0x496: 0x00a1, 0x497: 0x00a9,
+ 0x498: 0x00ab, 0x499: 0x0426, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x042a, 0x49d: 0x01c1,
+ 0x49e: 0x01c4, 0x49f: 0x01c7, 0x4a0: 0x01fd, 0x4a1: 0x0200, 0x4a2: 0x0093, 0x4a3: 0x00a5,
+ 0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01c1, 0x4a7: 0x01c4, 0x4a8: 0x01ee, 0x4a9: 0x01fd,
+ 0x4aa: 0x0200,
+ 0x4b8: 0x020f,
+ // Block 0x13, offset 0x4c0
+ 0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101,
+ 0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116,
+ 0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042e, 0x4e8: 0x016d, 0x4e9: 0x0128,
+ 0x4ea: 0x0432, 0x4eb: 0x0170, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137,
+ 0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec,
+ 0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x0422, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5,
+ 0x4fc: 0x0161, 0x4fd: 0x0164, 0x4fe: 0x0167, 0x4ff: 0x01d3,
+ // Block 0x14, offset 0x500
+ 0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133,
+ 0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133,
+ 0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133,
+ 0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133,
+ 0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133,
+ 0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133,
+ 0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133,
+ 0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133,
+ 0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133,
+ 0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53b: 0x8133,
+ 0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e,
+ // Block 0x15, offset 0x540
+ 0x540: 0x2fae, 0x541: 0x32ba, 0x542: 0x2fb8, 0x543: 0x32c4, 0x544: 0x2fbd, 0x545: 0x32c9,
+ 0x546: 0x2fc2, 0x547: 0x32ce, 0x548: 0x38e3, 0x549: 0x3a72, 0x54a: 0x2fdb, 0x54b: 0x32e7,
+ 0x54c: 0x2fe5, 0x54d: 0x32f1, 0x54e: 0x2ff4, 0x54f: 0x3300, 0x550: 0x2fea, 0x551: 0x32f6,
+ 0x552: 0x2fef, 0x553: 0x32fb, 0x554: 0x3906, 0x555: 0x3a95, 0x556: 0x390d, 0x557: 0x3a9c,
+ 0x558: 0x3030, 0x559: 0x333c, 0x55a: 0x3035, 0x55b: 0x3341, 0x55c: 0x391b, 0x55d: 0x3aaa,
+ 0x55e: 0x303a, 0x55f: 0x3346, 0x560: 0x3049, 0x561: 0x3355, 0x562: 0x3067, 0x563: 0x3373,
+ 0x564: 0x3076, 0x565: 0x3382, 0x566: 0x306c, 0x567: 0x3378, 0x568: 0x307b, 0x569: 0x3387,
+ 0x56a: 0x3080, 0x56b: 0x338c, 0x56c: 0x30c6, 0x56d: 0x33d2, 0x56e: 0x3922, 0x56f: 0x3ab1,
+ 0x570: 0x30d0, 0x571: 0x33e1, 0x572: 0x30da, 0x573: 0x33eb, 0x574: 0x30e4, 0x575: 0x33f5,
+ 0x576: 0x46db, 0x577: 0x476c, 0x578: 0x3929, 0x579: 0x3ab8, 0x57a: 0x30fd, 0x57b: 0x340e,
+ 0x57c: 0x30f8, 0x57d: 0x3409, 0x57e: 0x3102, 0x57f: 0x3413,
+ // Block 0x16, offset 0x580
+ 0x580: 0x3107, 0x581: 0x3418, 0x582: 0x310c, 0x583: 0x341d, 0x584: 0x3120, 0x585: 0x3431,
+ 0x586: 0x312a, 0x587: 0x343b, 0x588: 0x3139, 0x589: 0x344a, 0x58a: 0x3134, 0x58b: 0x3445,
+ 0x58c: 0x394c, 0x58d: 0x3adb, 0x58e: 0x395a, 0x58f: 0x3ae9, 0x590: 0x3961, 0x591: 0x3af0,
+ 0x592: 0x3968, 0x593: 0x3af7, 0x594: 0x3166, 0x595: 0x3477, 0x596: 0x316b, 0x597: 0x347c,
+ 0x598: 0x3175, 0x599: 0x3486, 0x59a: 0x4708, 0x59b: 0x4799, 0x59c: 0x39ae, 0x59d: 0x3b3d,
+ 0x59e: 0x318e, 0x59f: 0x349f, 0x5a0: 0x3198, 0x5a1: 0x34a9, 0x5a2: 0x4717, 0x5a3: 0x47a8,
+ 0x5a4: 0x39b5, 0x5a5: 0x3b44, 0x5a6: 0x39bc, 0x5a7: 0x3b4b, 0x5a8: 0x39c3, 0x5a9: 0x3b52,
+ 0x5aa: 0x31a7, 0x5ab: 0x34b8, 0x5ac: 0x31b1, 0x5ad: 0x34c7, 0x5ae: 0x31c5, 0x5af: 0x34db,
+ 0x5b0: 0x31c0, 0x5b1: 0x34d6, 0x5b2: 0x3201, 0x5b3: 0x3517, 0x5b4: 0x3210, 0x5b5: 0x3526,
+ 0x5b6: 0x320b, 0x5b7: 0x3521, 0x5b8: 0x39ca, 0x5b9: 0x3b59, 0x5ba: 0x39d1, 0x5bb: 0x3b60,
+ 0x5bc: 0x3215, 0x5bd: 0x352b, 0x5be: 0x321a, 0x5bf: 0x3530,
+ // Block 0x17, offset 0x5c0
+ 0x5c0: 0x321f, 0x5c1: 0x3535, 0x5c2: 0x3224, 0x5c3: 0x353a, 0x5c4: 0x3233, 0x5c5: 0x3549,
+ 0x5c6: 0x322e, 0x5c7: 0x3544, 0x5c8: 0x3238, 0x5c9: 0x3553, 0x5ca: 0x323d, 0x5cb: 0x3558,
+ 0x5cc: 0x3242, 0x5cd: 0x355d, 0x5ce: 0x3260, 0x5cf: 0x357b, 0x5d0: 0x3279, 0x5d1: 0x3599,
+ 0x5d2: 0x3288, 0x5d3: 0x35a8, 0x5d4: 0x328d, 0x5d5: 0x35ad, 0x5d6: 0x3391, 0x5d7: 0x34bd,
+ 0x5d8: 0x354e, 0x5d9: 0x358a, 0x5da: 0x1be6, 0x5db: 0x42ee,
+ 0x5e0: 0x46b8, 0x5e1: 0x4749, 0x5e2: 0x2f9a, 0x5e3: 0x32a6,
+ 0x5e4: 0x388f, 0x5e5: 0x3a1e, 0x5e6: 0x3888, 0x5e7: 0x3a17, 0x5e8: 0x389d, 0x5e9: 0x3a2c,
+ 0x5ea: 0x3896, 0x5eb: 0x3a25, 0x5ec: 0x38d5, 0x5ed: 0x3a64, 0x5ee: 0x38ab, 0x5ef: 0x3a3a,
+ 0x5f0: 0x38a4, 0x5f1: 0x3a33, 0x5f2: 0x38b9, 0x5f3: 0x3a48, 0x5f4: 0x38b2, 0x5f5: 0x3a41,
+ 0x5f6: 0x38dc, 0x5f7: 0x3a6b, 0x5f8: 0x46cc, 0x5f9: 0x475d, 0x5fa: 0x3017, 0x5fb: 0x3323,
+ 0x5fc: 0x3003, 0x5fd: 0x330f, 0x5fe: 0x38f1, 0x5ff: 0x3a80,
+ // Block 0x18, offset 0x600
+ 0x600: 0x38ea, 0x601: 0x3a79, 0x602: 0x38ff, 0x603: 0x3a8e, 0x604: 0x38f8, 0x605: 0x3a87,
+ 0x606: 0x3914, 0x607: 0x3aa3, 0x608: 0x30a8, 0x609: 0x33b4, 0x60a: 0x30bc, 0x60b: 0x33c8,
+ 0x60c: 0x46fe, 0x60d: 0x478f, 0x60e: 0x314d, 0x60f: 0x345e, 0x610: 0x3937, 0x611: 0x3ac6,
+ 0x612: 0x3930, 0x613: 0x3abf, 0x614: 0x3945, 0x615: 0x3ad4, 0x616: 0x393e, 0x617: 0x3acd,
+ 0x618: 0x39a0, 0x619: 0x3b2f, 0x61a: 0x3984, 0x61b: 0x3b13, 0x61c: 0x397d, 0x61d: 0x3b0c,
+ 0x61e: 0x3992, 0x61f: 0x3b21, 0x620: 0x398b, 0x621: 0x3b1a, 0x622: 0x3999, 0x623: 0x3b28,
+ 0x624: 0x31fc, 0x625: 0x3512, 0x626: 0x31de, 0x627: 0x34f4, 0x628: 0x39fb, 0x629: 0x3b8a,
+ 0x62a: 0x39f4, 0x62b: 0x3b83, 0x62c: 0x3a09, 0x62d: 0x3b98, 0x62e: 0x3a02, 0x62f: 0x3b91,
+ 0x630: 0x3a10, 0x631: 0x3b9f, 0x632: 0x3247, 0x633: 0x3562, 0x634: 0x326f, 0x635: 0x358f,
+ 0x636: 0x326a, 0x637: 0x3585, 0x638: 0x3256, 0x639: 0x3571,
+ // Block 0x19, offset 0x640
+ 0x640: 0x481b, 0x641: 0x4821, 0x642: 0x4935, 0x643: 0x494d, 0x644: 0x493d, 0x645: 0x4955,
+ 0x646: 0x4945, 0x647: 0x495d, 0x648: 0x47c1, 0x649: 0x47c7, 0x64a: 0x48a5, 0x64b: 0x48bd,
+ 0x64c: 0x48ad, 0x64d: 0x48c5, 0x64e: 0x48b5, 0x64f: 0x48cd, 0x650: 0x482d, 0x651: 0x4833,
+ 0x652: 0x3dcf, 0x653: 0x3ddf, 0x654: 0x3dd7, 0x655: 0x3de7,
+ 0x658: 0x47cd, 0x659: 0x47d3, 0x65a: 0x3cff, 0x65b: 0x3d0f, 0x65c: 0x3d07, 0x65d: 0x3d17,
+ 0x660: 0x4845, 0x661: 0x484b, 0x662: 0x4965, 0x663: 0x497d,
+ 0x664: 0x496d, 0x665: 0x4985, 0x666: 0x4975, 0x667: 0x498d, 0x668: 0x47d9, 0x669: 0x47df,
+ 0x66a: 0x48d5, 0x66b: 0x48ed, 0x66c: 0x48dd, 0x66d: 0x48f5, 0x66e: 0x48e5, 0x66f: 0x48fd,
+ 0x670: 0x485d, 0x671: 0x4863, 0x672: 0x3e2f, 0x673: 0x3e47, 0x674: 0x3e37, 0x675: 0x3e4f,
+ 0x676: 0x3e3f, 0x677: 0x3e57, 0x678: 0x47e5, 0x679: 0x47eb, 0x67a: 0x3d2f, 0x67b: 0x3d47,
+ 0x67c: 0x3d37, 0x67d: 0x3d4f, 0x67e: 0x3d3f, 0x67f: 0x3d57,
+ // Block 0x1a, offset 0x680
+ 0x680: 0x4869, 0x681: 0x486f, 0x682: 0x3e5f, 0x683: 0x3e6f, 0x684: 0x3e67, 0x685: 0x3e77,
+ 0x688: 0x47f1, 0x689: 0x47f7, 0x68a: 0x3d5f, 0x68b: 0x3d6f,
+ 0x68c: 0x3d67, 0x68d: 0x3d77, 0x690: 0x487b, 0x691: 0x4881,
+ 0x692: 0x3e97, 0x693: 0x3eaf, 0x694: 0x3e9f, 0x695: 0x3eb7, 0x696: 0x3ea7, 0x697: 0x3ebf,
+ 0x699: 0x47fd, 0x69b: 0x3d7f, 0x69d: 0x3d87,
+ 0x69f: 0x3d8f, 0x6a0: 0x4893, 0x6a1: 0x4899, 0x6a2: 0x4995, 0x6a3: 0x49ad,
+ 0x6a4: 0x499d, 0x6a5: 0x49b5, 0x6a6: 0x49a5, 0x6a7: 0x49bd, 0x6a8: 0x4803, 0x6a9: 0x4809,
+ 0x6aa: 0x4905, 0x6ab: 0x491d, 0x6ac: 0x490d, 0x6ad: 0x4925, 0x6ae: 0x4915, 0x6af: 0x492d,
+ 0x6b0: 0x480f, 0x6b1: 0x4335, 0x6b2: 0x36a8, 0x6b3: 0x433b, 0x6b4: 0x4839, 0x6b5: 0x4341,
+ 0x6b6: 0x36ba, 0x6b7: 0x4347, 0x6b8: 0x36d8, 0x6b9: 0x434d, 0x6ba: 0x36f0, 0x6bb: 0x4353,
+ 0x6bc: 0x4887, 0x6bd: 0x4359,
+ // Block 0x1b, offset 0x6c0
+ 0x6c0: 0x3db7, 0x6c1: 0x3dbf, 0x6c2: 0x419b, 0x6c3: 0x41b9, 0x6c4: 0x41a5, 0x6c5: 0x41c3,
+ 0x6c6: 0x41af, 0x6c7: 0x41cd, 0x6c8: 0x3cef, 0x6c9: 0x3cf7, 0x6ca: 0x40e7, 0x6cb: 0x4105,
+ 0x6cc: 0x40f1, 0x6cd: 0x410f, 0x6ce: 0x40fb, 0x6cf: 0x4119, 0x6d0: 0x3dff, 0x6d1: 0x3e07,
+ 0x6d2: 0x41d7, 0x6d3: 0x41f5, 0x6d4: 0x41e1, 0x6d5: 0x41ff, 0x6d6: 0x41eb, 0x6d7: 0x4209,
+ 0x6d8: 0x3d1f, 0x6d9: 0x3d27, 0x6da: 0x4123, 0x6db: 0x4141, 0x6dc: 0x412d, 0x6dd: 0x414b,
+ 0x6de: 0x4137, 0x6df: 0x4155, 0x6e0: 0x3ed7, 0x6e1: 0x3edf, 0x6e2: 0x4213, 0x6e3: 0x4231,
+ 0x6e4: 0x421d, 0x6e5: 0x423b, 0x6e6: 0x4227, 0x6e7: 0x4245, 0x6e8: 0x3d97, 0x6e9: 0x3d9f,
+ 0x6ea: 0x415f, 0x6eb: 0x417d, 0x6ec: 0x4169, 0x6ed: 0x4187, 0x6ee: 0x4173, 0x6ef: 0x4191,
+ 0x6f0: 0x369c, 0x6f1: 0x3696, 0x6f2: 0x3da7, 0x6f3: 0x36a2, 0x6f4: 0x3daf,
+ 0x6f6: 0x4827, 0x6f7: 0x3dc7, 0x6f8: 0x360c, 0x6f9: 0x3606, 0x6fa: 0x35fa, 0x6fb: 0x4305,
+ 0x6fc: 0x3612, 0x6fd: 0x429e, 0x6fe: 0x01d6, 0x6ff: 0x429e,
+ // Block 0x1c, offset 0x700
+ 0x700: 0x42b7, 0x701: 0x4499, 0x702: 0x3def, 0x703: 0x36b4, 0x704: 0x3df7,
+ 0x706: 0x4851, 0x707: 0x3e0f, 0x708: 0x3618, 0x709: 0x430b, 0x70a: 0x3624, 0x70b: 0x4311,
+ 0x70c: 0x3630, 0x70d: 0x44a0, 0x70e: 0x44a7, 0x70f: 0x44ae, 0x710: 0x36cc, 0x711: 0x36c6,
+ 0x712: 0x3e17, 0x713: 0x44fb, 0x716: 0x36d2, 0x717: 0x3e27,
+ 0x718: 0x3648, 0x719: 0x3642, 0x71a: 0x3636, 0x71b: 0x4317, 0x71d: 0x44b5,
+ 0x71e: 0x44bc, 0x71f: 0x44c3, 0x720: 0x3702, 0x721: 0x36fc, 0x722: 0x3e7f, 0x723: 0x4503,
+ 0x724: 0x36e4, 0x725: 0x36ea, 0x726: 0x3708, 0x727: 0x3e8f, 0x728: 0x3678, 0x729: 0x3672,
+ 0x72a: 0x3666, 0x72b: 0x4323, 0x72c: 0x3660, 0x72d: 0x448b, 0x72e: 0x4492, 0x72f: 0x0081,
+ 0x732: 0x3ec7, 0x733: 0x370e, 0x734: 0x3ecf,
+ 0x736: 0x489f, 0x737: 0x3ee7, 0x738: 0x3654, 0x739: 0x431d, 0x73a: 0x3684, 0x73b: 0x432f,
+ 0x73c: 0x3690, 0x73d: 0x4271, 0x73e: 0x42a3,
+ // Block 0x1d, offset 0x740
+ 0x740: 0x1bde, 0x741: 0x1be2, 0x742: 0x0047, 0x743: 0x1c5a, 0x745: 0x1bee,
+ 0x746: 0x1bf2, 0x747: 0x00e9, 0x749: 0x1c5e, 0x74a: 0x008f, 0x74b: 0x0051,
+ 0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053,
+ 0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1993,
+ 0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065,
+ 0x760: 0x19a5, 0x761: 0x1bce, 0x762: 0x19ae,
+ 0x764: 0x0075, 0x766: 0x01bb, 0x768: 0x0075,
+ 0x76a: 0x0057, 0x76b: 0x42e9, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b,
+ 0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0218,
+ 0x776: 0x021b, 0x777: 0x021e, 0x778: 0x0221, 0x779: 0x0093, 0x77b: 0x1b9e,
+ 0x77c: 0x01eb, 0x77d: 0x01c4, 0x77e: 0x017c, 0x77f: 0x01a3,
+ // Block 0x1e, offset 0x780
+ 0x780: 0x0466, 0x785: 0x0049,
+ 0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095,
+ 0x790: 0x2234, 0x791: 0x2240,
+ 0x792: 0x22f4, 0x793: 0x221c, 0x794: 0x22a0, 0x795: 0x2228, 0x796: 0x22a6, 0x797: 0x22be,
+ 0x798: 0x22ca, 0x799: 0x222e, 0x79a: 0x22d0, 0x79b: 0x223a, 0x79c: 0x22c4, 0x79d: 0x22d6,
+ 0x79e: 0x22dc, 0x79f: 0x1cc2, 0x7a0: 0x0053, 0x7a1: 0x195d, 0x7a2: 0x1baa, 0x7a3: 0x1966,
+ 0x7a4: 0x006d, 0x7a5: 0x19b1, 0x7a6: 0x1bd6, 0x7a7: 0x1d4e, 0x7a8: 0x1969, 0x7a9: 0x0071,
+ 0x7aa: 0x19bd, 0x7ab: 0x1bda, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b,
+ 0x7b0: 0x0093, 0x7b1: 0x19ea, 0x7b2: 0x1c1e, 0x7b3: 0x19f3, 0x7b4: 0x00ad, 0x7b5: 0x1a68,
+ 0x7b6: 0x1c52, 0x7b7: 0x1d62, 0x7b8: 0x19f6, 0x7b9: 0x00b1, 0x7ba: 0x1a6b, 0x7bb: 0x1c56,
+ 0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b,
+ // Block 0x1f, offset 0x7c0
+ 0x7c1: 0x3c1d, 0x7c3: 0xa000, 0x7c4: 0x3c24, 0x7c5: 0xa000,
+ 0x7c7: 0x3c2b, 0x7c8: 0xa000, 0x7c9: 0x3c32,
+ 0x7cd: 0xa000,
+ 0x7e0: 0x2f7c, 0x7e1: 0xa000, 0x7e2: 0x3c40,
+ 0x7e4: 0xa000, 0x7e5: 0xa000,
+ 0x7ed: 0x3c39, 0x7ee: 0x2f77, 0x7ef: 0x2f81,
+ 0x7f0: 0x3c47, 0x7f1: 0x3c4e, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c55, 0x7f5: 0x3c5c,
+ 0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c63, 0x7f9: 0x3c6a, 0x7fa: 0xa000, 0x7fb: 0xa000,
+ 0x7fc: 0xa000, 0x7fd: 0xa000,
+ // Block 0x20, offset 0x800
+ 0x800: 0x3c71, 0x801: 0x3c78, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c8d, 0x805: 0x3c94,
+ 0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c9b, 0x809: 0x3ca2,
+ 0x811: 0xa000,
+ 0x812: 0xa000,
+ 0x822: 0xa000,
+ 0x828: 0xa000, 0x829: 0xa000,
+ 0x82b: 0xa000, 0x82c: 0x3cb7, 0x82d: 0x3cbe, 0x82e: 0x3cc5, 0x82f: 0x3ccc,
+ 0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000,
+ // Block 0x21, offset 0x840
+ 0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029,
+ 0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1885,
+ 0x86a: 0x1888, 0x86b: 0x188b, 0x86c: 0x188e, 0x86d: 0x1891, 0x86e: 0x1894, 0x86f: 0x1897,
+ 0x870: 0x189a, 0x871: 0x189d, 0x872: 0x18a0, 0x873: 0x18a9, 0x874: 0x1a6e, 0x875: 0x1a72,
+ 0x876: 0x1a76, 0x877: 0x1a7a, 0x878: 0x1a7e, 0x879: 0x1a82, 0x87a: 0x1a86, 0x87b: 0x1a8a,
+ 0x87c: 0x1a8e, 0x87d: 0x1c86, 0x87e: 0x1c8b, 0x87f: 0x1c90,
+ // Block 0x22, offset 0x880
+ 0x880: 0x1c95, 0x881: 0x1c9a, 0x882: 0x1c9f, 0x883: 0x1ca4, 0x884: 0x1ca9, 0x885: 0x1cae,
+ 0x886: 0x1cb3, 0x887: 0x1cb8, 0x888: 0x1882, 0x889: 0x18a6, 0x88a: 0x18ca, 0x88b: 0x18ee,
+ 0x88c: 0x1912, 0x88d: 0x191b, 0x88e: 0x1921, 0x88f: 0x1927, 0x890: 0x192d, 0x891: 0x1b66,
+ 0x892: 0x1b6a, 0x893: 0x1b6e, 0x894: 0x1b72, 0x895: 0x1b76, 0x896: 0x1b7a, 0x897: 0x1b7e,
+ 0x898: 0x1b82, 0x899: 0x1b86, 0x89a: 0x1b8a, 0x89b: 0x1b8e, 0x89c: 0x1afa, 0x89d: 0x1afe,
+ 0x89e: 0x1b02, 0x89f: 0x1b06, 0x8a0: 0x1b0a, 0x8a1: 0x1b0e, 0x8a2: 0x1b12, 0x8a3: 0x1b16,
+ 0x8a4: 0x1b1a, 0x8a5: 0x1b1e, 0x8a6: 0x1b22, 0x8a7: 0x1b26, 0x8a8: 0x1b2a, 0x8a9: 0x1b2e,
+ 0x8aa: 0x1b32, 0x8ab: 0x1b36, 0x8ac: 0x1b3a, 0x8ad: 0x1b3e, 0x8ae: 0x1b42, 0x8af: 0x1b46,
+ 0x8b0: 0x1b4a, 0x8b1: 0x1b4e, 0x8b2: 0x1b52, 0x8b3: 0x1b56, 0x8b4: 0x1b5a, 0x8b5: 0x1b5e,
+ 0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d,
+ 0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055,
+ // Block 0x23, offset 0x8c0
+ 0x8c0: 0x06c2, 0x8c1: 0x06e6, 0x8c2: 0x06f2, 0x8c3: 0x0702, 0x8c4: 0x070a, 0x8c5: 0x0716,
+ 0x8c6: 0x071e, 0x8c7: 0x0726, 0x8c8: 0x0732, 0x8c9: 0x0786, 0x8ca: 0x079e, 0x8cb: 0x07ae,
+ 0x8cc: 0x07be, 0x8cd: 0x07ce, 0x8ce: 0x07de, 0x8cf: 0x07fe, 0x8d0: 0x0802, 0x8d1: 0x0806,
+ 0x8d2: 0x083a, 0x8d3: 0x0862, 0x8d4: 0x0872, 0x8d5: 0x087a, 0x8d6: 0x087e, 0x8d7: 0x088a,
+ 0x8d8: 0x08a6, 0x8d9: 0x08aa, 0x8da: 0x08c2, 0x8db: 0x08c6, 0x8dc: 0x08ce, 0x8dd: 0x08de,
+ 0x8de: 0x097a, 0x8df: 0x098e, 0x8e0: 0x09ce, 0x8e1: 0x09e2, 0x8e2: 0x09ea, 0x8e3: 0x09ee,
+ 0x8e4: 0x09fe, 0x8e5: 0x0a1a, 0x8e6: 0x0a46, 0x8e7: 0x0a52, 0x8e8: 0x0a72, 0x8e9: 0x0a7e,
+ 0x8ea: 0x0a82, 0x8eb: 0x0a86, 0x8ec: 0x0a9e, 0x8ed: 0x0aa2, 0x8ee: 0x0ace, 0x8ef: 0x0ada,
+ 0x8f0: 0x0ae2, 0x8f1: 0x0aea, 0x8f2: 0x0afa, 0x8f3: 0x0b02, 0x8f4: 0x0b0a, 0x8f5: 0x0b36,
+ 0x8f6: 0x0b3a, 0x8f7: 0x0b42, 0x8f8: 0x0b46, 0x8f9: 0x0b4e, 0x8fa: 0x0b56, 0x8fb: 0x0b66,
+ 0x8fc: 0x0b82, 0x8fd: 0x0bfa, 0x8fe: 0x0c0e, 0x8ff: 0x0c12,
+ // Block 0x24, offset 0x900
+ 0x900: 0x0c92, 0x901: 0x0c96, 0x902: 0x0caa, 0x903: 0x0cae, 0x904: 0x0cb6, 0x905: 0x0cbe,
+ 0x906: 0x0cc6, 0x907: 0x0cd2, 0x908: 0x0cfa, 0x909: 0x0d0a, 0x90a: 0x0d1e, 0x90b: 0x0d8e,
+ 0x90c: 0x0d9a, 0x90d: 0x0daa, 0x90e: 0x0db6, 0x90f: 0x0dc2, 0x910: 0x0dca, 0x911: 0x0dce,
+ 0x912: 0x0dd2, 0x913: 0x0dd6, 0x914: 0x0dda, 0x915: 0x0e92, 0x916: 0x0eda, 0x917: 0x0ee6,
+ 0x918: 0x0eea, 0x919: 0x0eee, 0x91a: 0x0ef2, 0x91b: 0x0efa, 0x91c: 0x0efe, 0x91d: 0x0f12,
+ 0x91e: 0x0f2e, 0x91f: 0x0f36, 0x920: 0x0f76, 0x921: 0x0f7a, 0x922: 0x0f82, 0x923: 0x0f86,
+ 0x924: 0x0f8e, 0x925: 0x0f92, 0x926: 0x0fb6, 0x927: 0x0fba, 0x928: 0x0fd6, 0x929: 0x0fda,
+ 0x92a: 0x0fde, 0x92b: 0x0fe2, 0x92c: 0x0ff6, 0x92d: 0x101a, 0x92e: 0x101e, 0x92f: 0x1022,
+ 0x930: 0x1046, 0x931: 0x1086, 0x932: 0x108a, 0x933: 0x10aa, 0x934: 0x10ba, 0x935: 0x10c2,
+ 0x936: 0x10e2, 0x937: 0x1106, 0x938: 0x114a, 0x939: 0x1152, 0x93a: 0x1166, 0x93b: 0x1172,
+ 0x93c: 0x117a, 0x93d: 0x1182, 0x93e: 0x1186, 0x93f: 0x118a,
+ // Block 0x25, offset 0x940
+ 0x940: 0x11a2, 0x941: 0x11a6, 0x942: 0x11c2, 0x943: 0x11ca, 0x944: 0x11d2, 0x945: 0x11d6,
+ 0x946: 0x11e2, 0x947: 0x11ea, 0x948: 0x11ee, 0x949: 0x11f2, 0x94a: 0x11fa, 0x94b: 0x11fe,
+ 0x94c: 0x129e, 0x94d: 0x12b2, 0x94e: 0x12e6, 0x94f: 0x12ea, 0x950: 0x12f2, 0x951: 0x131e,
+ 0x952: 0x1326, 0x953: 0x132e, 0x954: 0x1336, 0x955: 0x1372, 0x956: 0x1376, 0x957: 0x137e,
+ 0x958: 0x1382, 0x959: 0x1386, 0x95a: 0x13b2, 0x95b: 0x13b6, 0x95c: 0x13be, 0x95d: 0x13d2,
+ 0x95e: 0x13d6, 0x95f: 0x13f2, 0x960: 0x13fa, 0x961: 0x13fe, 0x962: 0x1422, 0x963: 0x1442,
+ 0x964: 0x1456, 0x965: 0x145a, 0x966: 0x1462, 0x967: 0x148e, 0x968: 0x1492, 0x969: 0x14a2,
+ 0x96a: 0x14c6, 0x96b: 0x14d2, 0x96c: 0x14e2, 0x96d: 0x14fa, 0x96e: 0x1502, 0x96f: 0x1506,
+ 0x970: 0x150a, 0x971: 0x150e, 0x972: 0x151a, 0x973: 0x151e, 0x974: 0x1526, 0x975: 0x1542,
+ 0x976: 0x1546, 0x977: 0x154a, 0x978: 0x1562, 0x979: 0x1566, 0x97a: 0x156e, 0x97b: 0x1582,
+ 0x97c: 0x1586, 0x97d: 0x158a, 0x97e: 0x1592, 0x97f: 0x1596,
+ // Block 0x26, offset 0x980
+ 0x986: 0xa000, 0x98b: 0xa000,
+ 0x98c: 0x3f1f, 0x98d: 0xa000, 0x98e: 0x3f27, 0x98f: 0xa000, 0x990: 0x3f2f, 0x991: 0xa000,
+ 0x992: 0x3f37, 0x993: 0xa000, 0x994: 0x3f3f, 0x995: 0xa000, 0x996: 0x3f47, 0x997: 0xa000,
+ 0x998: 0x3f4f, 0x999: 0xa000, 0x99a: 0x3f57, 0x99b: 0xa000, 0x99c: 0x3f5f, 0x99d: 0xa000,
+ 0x99e: 0x3f67, 0x99f: 0xa000, 0x9a0: 0x3f6f, 0x9a1: 0xa000, 0x9a2: 0x3f77,
+ 0x9a4: 0xa000, 0x9a5: 0x3f7f, 0x9a6: 0xa000, 0x9a7: 0x3f87, 0x9a8: 0xa000, 0x9a9: 0x3f8f,
+ 0x9af: 0xa000,
+ 0x9b0: 0x3f97, 0x9b1: 0x3f9f, 0x9b2: 0xa000, 0x9b3: 0x3fa7, 0x9b4: 0x3faf, 0x9b5: 0xa000,
+ 0x9b6: 0x3fb7, 0x9b7: 0x3fbf, 0x9b8: 0xa000, 0x9b9: 0x3fc7, 0x9ba: 0x3fcf, 0x9bb: 0xa000,
+ 0x9bc: 0x3fd7, 0x9bd: 0x3fdf,
+ // Block 0x27, offset 0x9c0
+ 0x9d4: 0x3f17,
+ 0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x42f3, 0x9dc: 0x42f9, 0x9dd: 0xa000,
+ 0x9de: 0x3fe7, 0x9df: 0x26ba,
+ 0x9e6: 0xa000,
+ 0x9eb: 0xa000, 0x9ec: 0x3ff7, 0x9ed: 0xa000, 0x9ee: 0x3fff, 0x9ef: 0xa000,
+ 0x9f0: 0x4007, 0x9f1: 0xa000, 0x9f2: 0x400f, 0x9f3: 0xa000, 0x9f4: 0x4017, 0x9f5: 0xa000,
+ 0x9f6: 0x401f, 0x9f7: 0xa000, 0x9f8: 0x4027, 0x9f9: 0xa000, 0x9fa: 0x402f, 0x9fb: 0xa000,
+ 0x9fc: 0x4037, 0x9fd: 0xa000, 0x9fe: 0x403f, 0x9ff: 0xa000,
+ // Block 0x28, offset 0xa00
+ 0xa00: 0x4047, 0xa01: 0xa000, 0xa02: 0x404f, 0xa04: 0xa000, 0xa05: 0x4057,
+ 0xa06: 0xa000, 0xa07: 0x405f, 0xa08: 0xa000, 0xa09: 0x4067,
+ 0xa0f: 0xa000, 0xa10: 0x406f, 0xa11: 0x4077,
+ 0xa12: 0xa000, 0xa13: 0x407f, 0xa14: 0x4087, 0xa15: 0xa000, 0xa16: 0x408f, 0xa17: 0x4097,
+ 0xa18: 0xa000, 0xa19: 0x409f, 0xa1a: 0x40a7, 0xa1b: 0xa000, 0xa1c: 0x40af, 0xa1d: 0x40b7,
+ 0xa2f: 0xa000,
+ 0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fef,
+ 0xa37: 0x40bf, 0xa38: 0x40c7, 0xa39: 0x40cf, 0xa3a: 0x40d7,
+ 0xa3d: 0xa000, 0xa3e: 0x40df, 0xa3f: 0x26cf,
+ // Block 0x29, offset 0xa40
+ 0xa40: 0x036a, 0xa41: 0x032e, 0xa42: 0x0332, 0xa43: 0x0336, 0xa44: 0x037e, 0xa45: 0x033a,
+ 0xa46: 0x033e, 0xa47: 0x0342, 0xa48: 0x0346, 0xa49: 0x034a, 0xa4a: 0x034e, 0xa4b: 0x0352,
+ 0xa4c: 0x0356, 0xa4d: 0x035a, 0xa4e: 0x035e, 0xa4f: 0x49d4, 0xa50: 0x49da, 0xa51: 0x49e0,
+ 0xa52: 0x49e6, 0xa53: 0x49ec, 0xa54: 0x49f2, 0xa55: 0x49f8, 0xa56: 0x49fe, 0xa57: 0x4a04,
+ 0xa58: 0x4a0a, 0xa59: 0x4a10, 0xa5a: 0x4a16, 0xa5b: 0x4a1c, 0xa5c: 0x4a22, 0xa5d: 0x4a28,
+ 0xa5e: 0x4a2e, 0xa5f: 0x4a34, 0xa60: 0x4a3a, 0xa61: 0x4a40, 0xa62: 0x4a46, 0xa63: 0x4a4c,
+ 0xa64: 0x03c6, 0xa65: 0x0362, 0xa66: 0x0366, 0xa67: 0x03ea, 0xa68: 0x03ee, 0xa69: 0x03f2,
+ 0xa6a: 0x03f6, 0xa6b: 0x03fa, 0xa6c: 0x03fe, 0xa6d: 0x0402, 0xa6e: 0x036e, 0xa6f: 0x0406,
+ 0xa70: 0x040a, 0xa71: 0x0372, 0xa72: 0x0376, 0xa73: 0x037a, 0xa74: 0x0382, 0xa75: 0x0386,
+ 0xa76: 0x038a, 0xa77: 0x038e, 0xa78: 0x0392, 0xa79: 0x0396, 0xa7a: 0x039a, 0xa7b: 0x039e,
+ 0xa7c: 0x03a2, 0xa7d: 0x03a6, 0xa7e: 0x03aa, 0xa7f: 0x03ae,
+ // Block 0x2a, offset 0xa80
+ 0xa80: 0x03b2, 0xa81: 0x03b6, 0xa82: 0x040e, 0xa83: 0x0412, 0xa84: 0x03ba, 0xa85: 0x03be,
+ 0xa86: 0x03c2, 0xa87: 0x03ca, 0xa88: 0x03ce, 0xa89: 0x03d2, 0xa8a: 0x03d6, 0xa8b: 0x03da,
+ 0xa8c: 0x03de, 0xa8d: 0x03e2, 0xa8e: 0x03e6,
+ 0xa92: 0x06c2, 0xa93: 0x071e, 0xa94: 0x06ce, 0xa95: 0x097e, 0xa96: 0x06d2, 0xa97: 0x06ea,
+ 0xa98: 0x06d6, 0xa99: 0x0f96, 0xa9a: 0x070a, 0xa9b: 0x06de, 0xa9c: 0x06c6, 0xa9d: 0x0a02,
+ 0xa9e: 0x0992, 0xa9f: 0x0732,
+ // Block 0x2b, offset 0xac0
+ 0xac0: 0x205a, 0xac1: 0x2060, 0xac2: 0x2066, 0xac3: 0x206c, 0xac4: 0x2072, 0xac5: 0x2078,
+ 0xac6: 0x207e, 0xac7: 0x2084, 0xac8: 0x208a, 0xac9: 0x2090, 0xaca: 0x2096, 0xacb: 0x209c,
+ 0xacc: 0x20a2, 0xacd: 0x20a8, 0xace: 0x2733, 0xacf: 0x273c, 0xad0: 0x2745, 0xad1: 0x274e,
+ 0xad2: 0x2757, 0xad3: 0x2760, 0xad4: 0x2769, 0xad5: 0x2772, 0xad6: 0x277b, 0xad7: 0x278d,
+ 0xad8: 0x2796, 0xad9: 0x279f, 0xada: 0x27a8, 0xadb: 0x27b1, 0xadc: 0x2784, 0xadd: 0x2bb9,
+ 0xade: 0x2afa, 0xae0: 0x20ae, 0xae1: 0x20c6, 0xae2: 0x20ba, 0xae3: 0x210e,
+ 0xae4: 0x20cc, 0xae5: 0x20ea, 0xae6: 0x20b4, 0xae7: 0x20e4, 0xae8: 0x20c0, 0xae9: 0x20f6,
+ 0xaea: 0x2126, 0xaeb: 0x2144, 0xaec: 0x213e, 0xaed: 0x2132, 0xaee: 0x2180, 0xaef: 0x2114,
+ 0xaf0: 0x2120, 0xaf1: 0x2138, 0xaf2: 0x212c, 0xaf3: 0x2156, 0xaf4: 0x2102, 0xaf5: 0x214a,
+ 0xaf6: 0x2174, 0xaf7: 0x215c, 0xaf8: 0x20f0, 0xaf9: 0x20d2, 0xafa: 0x2108, 0xafb: 0x211a,
+ 0xafc: 0x2150, 0xafd: 0x20d8, 0xafe: 0x217a, 0xaff: 0x20fc,
+ // Block 0x2c, offset 0xb00
+ 0xb00: 0x2162, 0xb01: 0x20de, 0xb02: 0x2168, 0xb03: 0x216e, 0xb04: 0x0932, 0xb05: 0x0b06,
+ 0xb06: 0x0caa, 0xb07: 0x10ca,
+ 0xb10: 0x1bca, 0xb11: 0x18ac,
+ 0xb12: 0x18af, 0xb13: 0x18b2, 0xb14: 0x18b5, 0xb15: 0x18b8, 0xb16: 0x18bb, 0xb17: 0x18be,
+ 0xb18: 0x18c1, 0xb19: 0x18c4, 0xb1a: 0x18cd, 0xb1b: 0x18d0, 0xb1c: 0x18d3, 0xb1d: 0x18d6,
+ 0xb1e: 0x18d9, 0xb1f: 0x18dc, 0xb20: 0x0316, 0xb21: 0x031e, 0xb22: 0x0322, 0xb23: 0x032a,
+ 0xb24: 0x032e, 0xb25: 0x0332, 0xb26: 0x033a, 0xb27: 0x0342, 0xb28: 0x0346, 0xb29: 0x034e,
+ 0xb2a: 0x0352, 0xb2b: 0x0356, 0xb2c: 0x035a, 0xb2d: 0x035e, 0xb2e: 0x2e2f, 0xb2f: 0x2e37,
+ 0xb30: 0x2e3f, 0xb31: 0x2e47, 0xb32: 0x2e4f, 0xb33: 0x2e57, 0xb34: 0x2e5f, 0xb35: 0x2e67,
+ 0xb36: 0x2e77, 0xb37: 0x2e7f, 0xb38: 0x2e87, 0xb39: 0x2e8f, 0xb3a: 0x2e97, 0xb3b: 0x2e9f,
+ 0xb3c: 0x2eea, 0xb3d: 0x2eb2, 0xb3e: 0x2e6f,
+ // Block 0x2d, offset 0xb40
+ 0xb40: 0x06c2, 0xb41: 0x071e, 0xb42: 0x06ce, 0xb43: 0x097e, 0xb44: 0x0722, 0xb45: 0x07b2,
+ 0xb46: 0x06ca, 0xb47: 0x07ae, 0xb48: 0x070e, 0xb49: 0x088a, 0xb4a: 0x0d0a, 0xb4b: 0x0e92,
+ 0xb4c: 0x0dda, 0xb4d: 0x0d1e, 0xb4e: 0x1462, 0xb4f: 0x098e, 0xb50: 0x0cd2, 0xb51: 0x0d4e,
+ 0xb52: 0x0d0e, 0xb53: 0x104e, 0xb54: 0x08fe, 0xb55: 0x0f06, 0xb56: 0x138a, 0xb57: 0x1062,
+ 0xb58: 0x0846, 0xb59: 0x1092, 0xb5a: 0x0f9e, 0xb5b: 0x0a1a, 0xb5c: 0x1412, 0xb5d: 0x0782,
+ 0xb5e: 0x08ae, 0xb5f: 0x0dfa, 0xb60: 0x152a, 0xb61: 0x0746, 0xb62: 0x07d6, 0xb63: 0x0d9e,
+ 0xb64: 0x06d2, 0xb65: 0x06ea, 0xb66: 0x06d6, 0xb67: 0x0ade, 0xb68: 0x08f2, 0xb69: 0x0882,
+ 0xb6a: 0x0a5a, 0xb6b: 0x0a4e, 0xb6c: 0x0fee, 0xb6d: 0x0742, 0xb6e: 0x139e, 0xb6f: 0x089e,
+ 0xb70: 0x09f6, 0xb71: 0x18df, 0xb72: 0x18e2, 0xb73: 0x18e5, 0xb74: 0x18e8, 0xb75: 0x18f1,
+ 0xb76: 0x18f4, 0xb77: 0x18f7, 0xb78: 0x18fa, 0xb79: 0x18fd, 0xb7a: 0x1900, 0xb7b: 0x1903,
+ 0xb7c: 0x1906, 0xb7d: 0x1909, 0xb7e: 0x190c, 0xb7f: 0x1915,
+ // Block 0x2e, offset 0xb80
+ 0xb80: 0x1ccc, 0xb81: 0x1cdb, 0xb82: 0x1cea, 0xb83: 0x1cf9, 0xb84: 0x1d08, 0xb85: 0x1d17,
+ 0xb86: 0x1d26, 0xb87: 0x1d35, 0xb88: 0x1d44, 0xb89: 0x2192, 0xb8a: 0x21a4, 0xb8b: 0x21b6,
+ 0xb8c: 0x1957, 0xb8d: 0x1c0a, 0xb8e: 0x19d8, 0xb8f: 0x1bae, 0xb90: 0x04ce, 0xb91: 0x04d6,
+ 0xb92: 0x04de, 0xb93: 0x04e6, 0xb94: 0x04ee, 0xb95: 0x04f2, 0xb96: 0x04f6, 0xb97: 0x04fa,
+ 0xb98: 0x04fe, 0xb99: 0x0502, 0xb9a: 0x0506, 0xb9b: 0x050a, 0xb9c: 0x050e, 0xb9d: 0x0512,
+ 0xb9e: 0x0516, 0xb9f: 0x051a, 0xba0: 0x051e, 0xba1: 0x0526, 0xba2: 0x052a, 0xba3: 0x052e,
+ 0xba4: 0x0532, 0xba5: 0x0536, 0xba6: 0x053a, 0xba7: 0x053e, 0xba8: 0x0542, 0xba9: 0x0546,
+ 0xbaa: 0x054a, 0xbab: 0x054e, 0xbac: 0x0552, 0xbad: 0x0556, 0xbae: 0x055a, 0xbaf: 0x055e,
+ 0xbb0: 0x0562, 0xbb1: 0x0566, 0xbb2: 0x056a, 0xbb3: 0x0572, 0xbb4: 0x057a, 0xbb5: 0x0582,
+ 0xbb6: 0x0586, 0xbb7: 0x058a, 0xbb8: 0x058e, 0xbb9: 0x0592, 0xbba: 0x0596, 0xbbb: 0x059a,
+ 0xbbc: 0x059e, 0xbbd: 0x05a2, 0xbbe: 0x05a6, 0xbbf: 0x2700,
+ // Block 0x2f, offset 0xbc0
+ 0xbc0: 0x2b19, 0xbc1: 0x29b5, 0xbc2: 0x2b29, 0xbc3: 0x288d, 0xbc4: 0x2efb, 0xbc5: 0x2897,
+ 0xbc6: 0x28a1, 0xbc7: 0x2f3f, 0xbc8: 0x29c2, 0xbc9: 0x28ab, 0xbca: 0x28b5, 0xbcb: 0x28bf,
+ 0xbcc: 0x29e9, 0xbcd: 0x29f6, 0xbce: 0x29cf, 0xbcf: 0x29dc, 0xbd0: 0x2ec0, 0xbd1: 0x2a03,
+ 0xbd2: 0x2a10, 0xbd3: 0x2bcb, 0xbd4: 0x26c1, 0xbd5: 0x2bde, 0xbd6: 0x2bf1, 0xbd7: 0x2b39,
+ 0xbd8: 0x2a1d, 0xbd9: 0x2c04, 0xbda: 0x2c17, 0xbdb: 0x2a2a, 0xbdc: 0x28c9, 0xbdd: 0x28d3,
+ 0xbde: 0x2ece, 0xbdf: 0x2a37, 0xbe0: 0x2b49, 0xbe1: 0x2f0c, 0xbe2: 0x28dd, 0xbe3: 0x28e7,
+ 0xbe4: 0x2a44, 0xbe5: 0x28f1, 0xbe6: 0x28fb, 0xbe7: 0x26d6, 0xbe8: 0x26dd, 0xbe9: 0x2905,
+ 0xbea: 0x290f, 0xbeb: 0x2c2a, 0xbec: 0x2a51, 0xbed: 0x2b59, 0xbee: 0x2c3d, 0xbef: 0x2a5e,
+ 0xbf0: 0x2923, 0xbf1: 0x2919, 0xbf2: 0x2f53, 0xbf3: 0x2a6b, 0xbf4: 0x2c50, 0xbf5: 0x292d,
+ 0xbf6: 0x2b69, 0xbf7: 0x2937, 0xbf8: 0x2a85, 0xbf9: 0x2941, 0xbfa: 0x2a92, 0xbfb: 0x2f1d,
+ 0xbfc: 0x2a78, 0xbfd: 0x2b79, 0xbfe: 0x2a9f, 0xbff: 0x26e4,
+ // Block 0x30, offset 0xc00
+ 0xc00: 0x2f2e, 0xc01: 0x294b, 0xc02: 0x2955, 0xc03: 0x2aac, 0xc04: 0x295f, 0xc05: 0x2969,
+ 0xc06: 0x2973, 0xc07: 0x2b89, 0xc08: 0x2ab9, 0xc09: 0x26eb, 0xc0a: 0x2c63, 0xc0b: 0x2ea7,
+ 0xc0c: 0x2b99, 0xc0d: 0x2ac6, 0xc0e: 0x2edc, 0xc0f: 0x297d, 0xc10: 0x2987, 0xc11: 0x2ad3,
+ 0xc12: 0x26f2, 0xc13: 0x2ae0, 0xc14: 0x2ba9, 0xc15: 0x26f9, 0xc16: 0x2c76, 0xc17: 0x2991,
+ 0xc18: 0x1cbd, 0xc19: 0x1cd1, 0xc1a: 0x1ce0, 0xc1b: 0x1cef, 0xc1c: 0x1cfe, 0xc1d: 0x1d0d,
+ 0xc1e: 0x1d1c, 0xc1f: 0x1d2b, 0xc20: 0x1d3a, 0xc21: 0x1d49, 0xc22: 0x2198, 0xc23: 0x21aa,
+ 0xc24: 0x21bc, 0xc25: 0x21c8, 0xc26: 0x21d4, 0xc27: 0x21e0, 0xc28: 0x21ec, 0xc29: 0x21f8,
+ 0xc2a: 0x2204, 0xc2b: 0x2210, 0xc2c: 0x224c, 0xc2d: 0x2258, 0xc2e: 0x2264, 0xc2f: 0x2270,
+ 0xc30: 0x227c, 0xc31: 0x1c1a, 0xc32: 0x19cc, 0xc33: 0x1939, 0xc34: 0x1bea, 0xc35: 0x1a4d,
+ 0xc36: 0x1a5c, 0xc37: 0x19d2, 0xc38: 0x1c02, 0xc39: 0x1c06, 0xc3a: 0x1963, 0xc3b: 0x270e,
+ 0xc3c: 0x271c, 0xc3d: 0x2707, 0xc3e: 0x2715, 0xc3f: 0x2aed,
+ // Block 0x31, offset 0xc40
+ 0xc40: 0x1a50, 0xc41: 0x1a38, 0xc42: 0x1c66, 0xc43: 0x1a20, 0xc44: 0x19f9, 0xc45: 0x196c,
+ 0xc46: 0x197b, 0xc47: 0x194b, 0xc48: 0x1bf6, 0xc49: 0x1d58, 0xc4a: 0x1a53, 0xc4b: 0x1a3b,
+ 0xc4c: 0x1c6a, 0xc4d: 0x1c76, 0xc4e: 0x1a2c, 0xc4f: 0x1a02, 0xc50: 0x195a, 0xc51: 0x1c22,
+ 0xc52: 0x1bb6, 0xc53: 0x1ba2, 0xc54: 0x1bd2, 0xc55: 0x1c7a, 0xc56: 0x1a2f, 0xc57: 0x19cf,
+ 0xc58: 0x1a05, 0xc59: 0x19e4, 0xc5a: 0x1a47, 0xc5b: 0x1c7e, 0xc5c: 0x1a32, 0xc5d: 0x19c6,
+ 0xc5e: 0x1a08, 0xc5f: 0x1c42, 0xc60: 0x1bfa, 0xc61: 0x1a1a, 0xc62: 0x1c2a, 0xc63: 0x1c46,
+ 0xc64: 0x1bfe, 0xc65: 0x1a1d, 0xc66: 0x1c2e, 0xc67: 0x22ee, 0xc68: 0x2302, 0xc69: 0x199c,
+ 0xc6a: 0x1c26, 0xc6b: 0x1bba, 0xc6c: 0x1ba6, 0xc6d: 0x1c4e, 0xc6e: 0x2723, 0xc6f: 0x27ba,
+ 0xc70: 0x1a5f, 0xc71: 0x1a4a, 0xc72: 0x1c82, 0xc73: 0x1a35, 0xc74: 0x1a56, 0xc75: 0x1a3e,
+ 0xc76: 0x1c6e, 0xc77: 0x1a23, 0xc78: 0x19fc, 0xc79: 0x1987, 0xc7a: 0x1a59, 0xc7b: 0x1a41,
+ 0xc7c: 0x1c72, 0xc7d: 0x1a26, 0xc7e: 0x19ff, 0xc7f: 0x198a,
+ // Block 0x32, offset 0xc80
+ 0xc80: 0x1c32, 0xc81: 0x1bbe, 0xc82: 0x1d53, 0xc83: 0x193c, 0xc84: 0x19c0, 0xc85: 0x19c3,
+ 0xc86: 0x22fb, 0xc87: 0x1b9a, 0xc88: 0x19c9, 0xc89: 0x194e, 0xc8a: 0x19e7, 0xc8b: 0x1951,
+ 0xc8c: 0x19f0, 0xc8d: 0x196f, 0xc8e: 0x1972, 0xc8f: 0x1a0b, 0xc90: 0x1a11, 0xc91: 0x1a14,
+ 0xc92: 0x1c36, 0xc93: 0x1a17, 0xc94: 0x1a29, 0xc95: 0x1c3e, 0xc96: 0x1c4a, 0xc97: 0x1996,
+ 0xc98: 0x1d5d, 0xc99: 0x1bc2, 0xc9a: 0x1999, 0xc9b: 0x1a62, 0xc9c: 0x19ab, 0xc9d: 0x19ba,
+ 0xc9e: 0x22e8, 0xc9f: 0x22e2, 0xca0: 0x1cc7, 0xca1: 0x1cd6, 0xca2: 0x1ce5, 0xca3: 0x1cf4,
+ 0xca4: 0x1d03, 0xca5: 0x1d12, 0xca6: 0x1d21, 0xca7: 0x1d30, 0xca8: 0x1d3f, 0xca9: 0x218c,
+ 0xcaa: 0x219e, 0xcab: 0x21b0, 0xcac: 0x21c2, 0xcad: 0x21ce, 0xcae: 0x21da, 0xcaf: 0x21e6,
+ 0xcb0: 0x21f2, 0xcb1: 0x21fe, 0xcb2: 0x220a, 0xcb3: 0x2246, 0xcb4: 0x2252, 0xcb5: 0x225e,
+ 0xcb6: 0x226a, 0xcb7: 0x2276, 0xcb8: 0x2282, 0xcb9: 0x2288, 0xcba: 0x228e, 0xcbb: 0x2294,
+ 0xcbc: 0x229a, 0xcbd: 0x22ac, 0xcbe: 0x22b2, 0xcbf: 0x1c16,
+ // Block 0x33, offset 0xcc0
+ 0xcc0: 0x137a, 0xcc1: 0x0cfe, 0xcc2: 0x13d6, 0xcc3: 0x13a2, 0xcc4: 0x0e5a, 0xcc5: 0x06ee,
+ 0xcc6: 0x08e2, 0xcc7: 0x162e, 0xcc8: 0x162e, 0xcc9: 0x0a0e, 0xcca: 0x1462, 0xccb: 0x0946,
+ 0xccc: 0x0a0a, 0xccd: 0x0bf2, 0xcce: 0x0fd2, 0xccf: 0x1162, 0xcd0: 0x129a, 0xcd1: 0x12d6,
+ 0xcd2: 0x130a, 0xcd3: 0x141e, 0xcd4: 0x0d76, 0xcd5: 0x0e02, 0xcd6: 0x0eae, 0xcd7: 0x0f46,
+ 0xcd8: 0x1262, 0xcd9: 0x144a, 0xcda: 0x1576, 0xcdb: 0x0712, 0xcdc: 0x08b6, 0xcdd: 0x0d8a,
+ 0xcde: 0x0ed2, 0xcdf: 0x1296, 0xce0: 0x15c6, 0xce1: 0x0ab6, 0xce2: 0x0e7a, 0xce3: 0x1286,
+ 0xce4: 0x131a, 0xce5: 0x0c26, 0xce6: 0x11be, 0xce7: 0x12e2, 0xce8: 0x0b22, 0xce9: 0x0d12,
+ 0xcea: 0x0e1a, 0xceb: 0x0f1e, 0xcec: 0x142a, 0xced: 0x0752, 0xcee: 0x07ea, 0xcef: 0x0856,
+ 0xcf0: 0x0c8e, 0xcf1: 0x0d82, 0xcf2: 0x0ece, 0xcf3: 0x0ff2, 0xcf4: 0x117a, 0xcf5: 0x128e,
+ 0xcf6: 0x12a6, 0xcf7: 0x13ca, 0xcf8: 0x14f2, 0xcf9: 0x15a6, 0xcfa: 0x15c2, 0xcfb: 0x102e,
+ 0xcfc: 0x106e, 0xcfd: 0x1126, 0xcfe: 0x1246, 0xcff: 0x147e,
+ // Block 0x34, offset 0xd00
+ 0xd00: 0x15ce, 0xd01: 0x134e, 0xd02: 0x09ca, 0xd03: 0x0b3e, 0xd04: 0x10de, 0xd05: 0x119e,
+ 0xd06: 0x0f02, 0xd07: 0x1036, 0xd08: 0x139a, 0xd09: 0x14ea, 0xd0a: 0x09c6, 0xd0b: 0x0a92,
+ 0xd0c: 0x0d7a, 0xd0d: 0x0e2e, 0xd0e: 0x0e62, 0xd0f: 0x1116, 0xd10: 0x113e, 0xd11: 0x14aa,
+ 0xd12: 0x0852, 0xd13: 0x11aa, 0xd14: 0x07f6, 0xd15: 0x07f2, 0xd16: 0x109a, 0xd17: 0x112a,
+ 0xd18: 0x125e, 0xd19: 0x14b2, 0xd1a: 0x136a, 0xd1b: 0x0c2a, 0xd1c: 0x0d76, 0xd1d: 0x135a,
+ 0xd1e: 0x06fa, 0xd1f: 0x0a66, 0xd20: 0x0b96, 0xd21: 0x0f32, 0xd22: 0x0fb2, 0xd23: 0x0876,
+ 0xd24: 0x103e, 0xd25: 0x0762, 0xd26: 0x0b7a, 0xd27: 0x06da, 0xd28: 0x0dee, 0xd29: 0x0ca6,
+ 0xd2a: 0x1112, 0xd2b: 0x08ca, 0xd2c: 0x09b6, 0xd2d: 0x0ffe, 0xd2e: 0x1266, 0xd2f: 0x133e,
+ 0xd30: 0x0dba, 0xd31: 0x13fa, 0xd32: 0x0de6, 0xd33: 0x0c3a, 0xd34: 0x121e, 0xd35: 0x0c5a,
+ 0xd36: 0x0fae, 0xd37: 0x072e, 0xd38: 0x07aa, 0xd39: 0x07ee, 0xd3a: 0x0d56, 0xd3b: 0x10fe,
+ 0xd3c: 0x11f6, 0xd3d: 0x134a, 0xd3e: 0x145e, 0xd3f: 0x085e,
+ // Block 0x35, offset 0xd40
+ 0xd40: 0x0912, 0xd41: 0x0a1a, 0xd42: 0x0b32, 0xd43: 0x0cc2, 0xd44: 0x0e7e, 0xd45: 0x1042,
+ 0xd46: 0x149a, 0xd47: 0x157e, 0xd48: 0x15d2, 0xd49: 0x15ea, 0xd4a: 0x083a, 0xd4b: 0x0cf6,
+ 0xd4c: 0x0da6, 0xd4d: 0x13ee, 0xd4e: 0x0afe, 0xd4f: 0x0bda, 0xd50: 0x0bf6, 0xd51: 0x0c86,
+ 0xd52: 0x0e6e, 0xd53: 0x0eba, 0xd54: 0x0f6a, 0xd55: 0x108e, 0xd56: 0x1132, 0xd57: 0x1196,
+ 0xd58: 0x13de, 0xd59: 0x126e, 0xd5a: 0x1406, 0xd5b: 0x1482, 0xd5c: 0x0812, 0xd5d: 0x083e,
+ 0xd5e: 0x0926, 0xd5f: 0x0eaa, 0xd60: 0x12f6, 0xd61: 0x133e, 0xd62: 0x0b1e, 0xd63: 0x0b8e,
+ 0xd64: 0x0c52, 0xd65: 0x0db2, 0xd66: 0x10da, 0xd67: 0x0f26, 0xd68: 0x073e, 0xd69: 0x0982,
+ 0xd6a: 0x0a66, 0xd6b: 0x0aca, 0xd6c: 0x0b9a, 0xd6d: 0x0f42, 0xd6e: 0x0f5e, 0xd6f: 0x116e,
+ 0xd70: 0x118e, 0xd71: 0x1466, 0xd72: 0x14e6, 0xd73: 0x14f6, 0xd74: 0x1532, 0xd75: 0x0756,
+ 0xd76: 0x1082, 0xd77: 0x1452, 0xd78: 0x14ce, 0xd79: 0x0bb2, 0xd7a: 0x071a, 0xd7b: 0x077a,
+ 0xd7c: 0x0a6a, 0xd7d: 0x0a8a, 0xd7e: 0x0cb2, 0xd7f: 0x0d76,
+ // Block 0x36, offset 0xd80
+ 0xd80: 0x0ec6, 0xd81: 0x0fce, 0xd82: 0x127a, 0xd83: 0x141a, 0xd84: 0x1626, 0xd85: 0x0ce6,
+ 0xd86: 0x14a6, 0xd87: 0x0836, 0xd88: 0x0d32, 0xd89: 0x0d3e, 0xd8a: 0x0e12, 0xd8b: 0x0e4a,
+ 0xd8c: 0x0f4e, 0xd8d: 0x0faa, 0xd8e: 0x102a, 0xd8f: 0x110e, 0xd90: 0x153e, 0xd91: 0x07b2,
+ 0xd92: 0x0c06, 0xd93: 0x14b6, 0xd94: 0x076a, 0xd95: 0x0aae, 0xd96: 0x0e32, 0xd97: 0x13e2,
+ 0xd98: 0x0b6a, 0xd99: 0x0bba, 0xd9a: 0x0d46, 0xd9b: 0x0f32, 0xd9c: 0x14be, 0xd9d: 0x081a,
+ 0xd9e: 0x0902, 0xd9f: 0x0a9a, 0xda0: 0x0cd6, 0xda1: 0x0d22, 0xda2: 0x0d62, 0xda3: 0x0df6,
+ 0xda4: 0x0f4a, 0xda5: 0x0fbe, 0xda6: 0x115a, 0xda7: 0x12fa, 0xda8: 0x1306, 0xda9: 0x145a,
+ 0xdaa: 0x14da, 0xdab: 0x0886, 0xdac: 0x0e4e, 0xdad: 0x0906, 0xdae: 0x0eca, 0xdaf: 0x0f6e,
+ 0xdb0: 0x128a, 0xdb1: 0x14c2, 0xdb2: 0x15ae, 0xdb3: 0x15d6, 0xdb4: 0x0d3a, 0xdb5: 0x0e2a,
+ 0xdb6: 0x11c6, 0xdb7: 0x10ba, 0xdb8: 0x10c6, 0xdb9: 0x10ea, 0xdba: 0x0f1a, 0xdbb: 0x0ea2,
+ 0xdbc: 0x1366, 0xdbd: 0x0736, 0xdbe: 0x122e, 0xdbf: 0x081e,
+ // Block 0x37, offset 0xdc0
+ 0xdc0: 0x080e, 0xdc1: 0x0b0e, 0xdc2: 0x0c2e, 0xdc3: 0x10f6, 0xdc4: 0x0a56, 0xdc5: 0x0e06,
+ 0xdc6: 0x0cf2, 0xdc7: 0x13ea, 0xdc8: 0x12ea, 0xdc9: 0x14ae, 0xdca: 0x1326, 0xdcb: 0x0b2a,
+ 0xdcc: 0x078a, 0xdcd: 0x095e, 0xdd0: 0x09b2,
+ 0xdd2: 0x0ce2, 0xdd5: 0x07fa, 0xdd6: 0x0f22, 0xdd7: 0x0fe6,
+ 0xdd8: 0x104a, 0xdd9: 0x1066, 0xdda: 0x106a, 0xddb: 0x107e, 0xddc: 0x14fe, 0xddd: 0x10ee,
+ 0xdde: 0x1172, 0xde0: 0x1292, 0xde2: 0x1356,
+ 0xde5: 0x140a, 0xde6: 0x1436,
+ 0xdea: 0x1552, 0xdeb: 0x1556, 0xdec: 0x155a, 0xded: 0x15be, 0xdee: 0x142e, 0xdef: 0x14ca,
+ 0xdf0: 0x075a, 0xdf1: 0x077e, 0xdf2: 0x0792, 0xdf3: 0x084e, 0xdf4: 0x085a, 0xdf5: 0x089a,
+ 0xdf6: 0x094e, 0xdf7: 0x096a, 0xdf8: 0x0972, 0xdf9: 0x09ae, 0xdfa: 0x09ba, 0xdfb: 0x0a96,
+ 0xdfc: 0x0a9e, 0xdfd: 0x0ba6, 0xdfe: 0x0bce, 0xdff: 0x0bd6,
+ // Block 0x38, offset 0xe00
+ 0xe00: 0x0bee, 0xe01: 0x0c9a, 0xe02: 0x0cca, 0xe03: 0x0cea, 0xe04: 0x0d5a, 0xe05: 0x0e1e,
+ 0xe06: 0x0e3a, 0xe07: 0x0e6a, 0xe08: 0x0ebe, 0xe09: 0x0ede, 0xe0a: 0x0f52, 0xe0b: 0x1032,
+ 0xe0c: 0x104e, 0xe0d: 0x1056, 0xe0e: 0x1052, 0xe0f: 0x105a, 0xe10: 0x105e, 0xe11: 0x1062,
+ 0xe12: 0x1076, 0xe13: 0x107a, 0xe14: 0x109e, 0xe15: 0x10b2, 0xe16: 0x10ce, 0xe17: 0x1132,
+ 0xe18: 0x113a, 0xe19: 0x1142, 0xe1a: 0x1156, 0xe1b: 0x117e, 0xe1c: 0x11ce, 0xe1d: 0x1202,
+ 0xe1e: 0x1202, 0xe1f: 0x126a, 0xe20: 0x1312, 0xe21: 0x132a, 0xe22: 0x135e, 0xe23: 0x1362,
+ 0xe24: 0x13a6, 0xe25: 0x13aa, 0xe26: 0x1402, 0xe27: 0x140a, 0xe28: 0x14de, 0xe29: 0x1522,
+ 0xe2a: 0x153a, 0xe2b: 0x0b9e, 0xe2c: 0x1721, 0xe2d: 0x11e6,
+ 0xe30: 0x06e2, 0xe31: 0x07e6, 0xe32: 0x07a6, 0xe33: 0x074e, 0xe34: 0x078e, 0xe35: 0x07ba,
+ 0xe36: 0x084a, 0xe37: 0x0866, 0xe38: 0x094e, 0xe39: 0x093a, 0xe3a: 0x094a, 0xe3b: 0x0966,
+ 0xe3c: 0x09b2, 0xe3d: 0x09c2, 0xe3e: 0x0a06, 0xe3f: 0x0a12,
+ // Block 0x39, offset 0xe40
+ 0xe40: 0x0a2e, 0xe41: 0x0a3e, 0xe42: 0x0b26, 0xe43: 0x0b2e, 0xe44: 0x0b5e, 0xe45: 0x0b7e,
+ 0xe46: 0x0bae, 0xe47: 0x0bc6, 0xe48: 0x0bb6, 0xe49: 0x0bd6, 0xe4a: 0x0bca, 0xe4b: 0x0bee,
+ 0xe4c: 0x0c0a, 0xe4d: 0x0c62, 0xe4e: 0x0c6e, 0xe4f: 0x0c76, 0xe50: 0x0c9e, 0xe51: 0x0ce2,
+ 0xe52: 0x0d12, 0xe53: 0x0d16, 0xe54: 0x0d2a, 0xe55: 0x0daa, 0xe56: 0x0dba, 0xe57: 0x0e12,
+ 0xe58: 0x0e5e, 0xe59: 0x0e56, 0xe5a: 0x0e6a, 0xe5b: 0x0e86, 0xe5c: 0x0ebe, 0xe5d: 0x1016,
+ 0xe5e: 0x0ee2, 0xe5f: 0x0f16, 0xe60: 0x0f22, 0xe61: 0x0f62, 0xe62: 0x0f7e, 0xe63: 0x0fa2,
+ 0xe64: 0x0fc6, 0xe65: 0x0fca, 0xe66: 0x0fe6, 0xe67: 0x0fea, 0xe68: 0x0ffa, 0xe69: 0x100e,
+ 0xe6a: 0x100a, 0xe6b: 0x103a, 0xe6c: 0x10b6, 0xe6d: 0x10ce, 0xe6e: 0x10e6, 0xe6f: 0x111e,
+ 0xe70: 0x1132, 0xe71: 0x114e, 0xe72: 0x117e, 0xe73: 0x1232, 0xe74: 0x125a, 0xe75: 0x12ce,
+ 0xe76: 0x1316, 0xe77: 0x1322, 0xe78: 0x132a, 0xe79: 0x1342, 0xe7a: 0x1356, 0xe7b: 0x1346,
+ 0xe7c: 0x135e, 0xe7d: 0x135a, 0xe7e: 0x1352, 0xe7f: 0x1362,
+ // Block 0x3a, offset 0xe80
+ 0xe80: 0x136e, 0xe81: 0x13aa, 0xe82: 0x13e6, 0xe83: 0x1416, 0xe84: 0x144e, 0xe85: 0x146e,
+ 0xe86: 0x14ba, 0xe87: 0x14de, 0xe88: 0x14fe, 0xe89: 0x1512, 0xe8a: 0x1522, 0xe8b: 0x152e,
+ 0xe8c: 0x153a, 0xe8d: 0x158e, 0xe8e: 0x162e, 0xe8f: 0x16b8, 0xe90: 0x16b3, 0xe91: 0x16e5,
+ 0xe92: 0x060a, 0xe93: 0x0632, 0xe94: 0x0636, 0xe95: 0x1767, 0xe96: 0x1794, 0xe97: 0x180c,
+ 0xe98: 0x161a, 0xe99: 0x162a,
+ // Block 0x3b, offset 0xec0
+ 0xec0: 0x19db, 0xec1: 0x19de, 0xec2: 0x19e1, 0xec3: 0x1c0e, 0xec4: 0x1c12, 0xec5: 0x1a65,
+ 0xec6: 0x1a65,
+ 0xed3: 0x1d7b, 0xed4: 0x1d6c, 0xed5: 0x1d71, 0xed6: 0x1d80, 0xed7: 0x1d76,
+ 0xedd: 0x43a7,
+ 0xede: 0x8116, 0xedf: 0x4419, 0xee0: 0x0230, 0xee1: 0x0218, 0xee2: 0x0221, 0xee3: 0x0224,
+ 0xee4: 0x0227, 0xee5: 0x022a, 0xee6: 0x022d, 0xee7: 0x0233, 0xee8: 0x0236, 0xee9: 0x0017,
+ 0xeea: 0x4407, 0xeeb: 0x440d, 0xeec: 0x450b, 0xeed: 0x4513, 0xeee: 0x435f, 0xeef: 0x4365,
+ 0xef0: 0x436b, 0xef1: 0x4371, 0xef2: 0x437d, 0xef3: 0x4383, 0xef4: 0x4389, 0xef5: 0x4395,
+ 0xef6: 0x439b, 0xef8: 0x43a1, 0xef9: 0x43ad, 0xefa: 0x43b3, 0xefb: 0x43b9,
+ 0xefc: 0x43c5, 0xefe: 0x43cb,
+ // Block 0x3c, offset 0xf00
+ 0xf00: 0x43d1, 0xf01: 0x43d7, 0xf03: 0x43dd, 0xf04: 0x43e3,
+ 0xf06: 0x43ef, 0xf07: 0x43f5, 0xf08: 0x43fb, 0xf09: 0x4401, 0xf0a: 0x4413, 0xf0b: 0x438f,
+ 0xf0c: 0x4377, 0xf0d: 0x43bf, 0xf0e: 0x43e9, 0xf0f: 0x1d85, 0xf10: 0x029c, 0xf11: 0x029c,
+ 0xf12: 0x02a5, 0xf13: 0x02a5, 0xf14: 0x02a5, 0xf15: 0x02a5, 0xf16: 0x02a8, 0xf17: 0x02a8,
+ 0xf18: 0x02a8, 0xf19: 0x02a8, 0xf1a: 0x02ae, 0xf1b: 0x02ae, 0xf1c: 0x02ae, 0xf1d: 0x02ae,
+ 0xf1e: 0x02a2, 0xf1f: 0x02a2, 0xf20: 0x02a2, 0xf21: 0x02a2, 0xf22: 0x02ab, 0xf23: 0x02ab,
+ 0xf24: 0x02ab, 0xf25: 0x02ab, 0xf26: 0x029f, 0xf27: 0x029f, 0xf28: 0x029f, 0xf29: 0x029f,
+ 0xf2a: 0x02d2, 0xf2b: 0x02d2, 0xf2c: 0x02d2, 0xf2d: 0x02d2, 0xf2e: 0x02d5, 0xf2f: 0x02d5,
+ 0xf30: 0x02d5, 0xf31: 0x02d5, 0xf32: 0x02b4, 0xf33: 0x02b4, 0xf34: 0x02b4, 0xf35: 0x02b4,
+ 0xf36: 0x02b1, 0xf37: 0x02b1, 0xf38: 0x02b1, 0xf39: 0x02b1, 0xf3a: 0x02b7, 0xf3b: 0x02b7,
+ 0xf3c: 0x02b7, 0xf3d: 0x02b7, 0xf3e: 0x02ba, 0xf3f: 0x02ba,
+ // Block 0x3d, offset 0xf40
+ 0xf40: 0x02ba, 0xf41: 0x02ba, 0xf42: 0x02c3, 0xf43: 0x02c3, 0xf44: 0x02c0, 0xf45: 0x02c0,
+ 0xf46: 0x02c6, 0xf47: 0x02c6, 0xf48: 0x02bd, 0xf49: 0x02bd, 0xf4a: 0x02cc, 0xf4b: 0x02cc,
+ 0xf4c: 0x02c9, 0xf4d: 0x02c9, 0xf4e: 0x02d8, 0xf4f: 0x02d8, 0xf50: 0x02d8, 0xf51: 0x02d8,
+ 0xf52: 0x02de, 0xf53: 0x02de, 0xf54: 0x02de, 0xf55: 0x02de, 0xf56: 0x02e4, 0xf57: 0x02e4,
+ 0xf58: 0x02e4, 0xf59: 0x02e4, 0xf5a: 0x02e1, 0xf5b: 0x02e1, 0xf5c: 0x02e1, 0xf5d: 0x02e1,
+ 0xf5e: 0x02e7, 0xf5f: 0x02e7, 0xf60: 0x02ea, 0xf61: 0x02ea, 0xf62: 0x02ea, 0xf63: 0x02ea,
+ 0xf64: 0x4485, 0xf65: 0x4485, 0xf66: 0x02f0, 0xf67: 0x02f0, 0xf68: 0x02f0, 0xf69: 0x02f0,
+ 0xf6a: 0x02ed, 0xf6b: 0x02ed, 0xf6c: 0x02ed, 0xf6d: 0x02ed, 0xf6e: 0x030b, 0xf6f: 0x030b,
+ 0xf70: 0x447f, 0xf71: 0x447f,
+ // Block 0x3e, offset 0xf80
+ 0xf93: 0x02db, 0xf94: 0x02db, 0xf95: 0x02db, 0xf96: 0x02db, 0xf97: 0x02f9,
+ 0xf98: 0x02f9, 0xf99: 0x02f6, 0xf9a: 0x02f6, 0xf9b: 0x02fc, 0xf9c: 0x02fc, 0xf9d: 0x2055,
+ 0xf9e: 0x0302, 0xf9f: 0x0302, 0xfa0: 0x02f3, 0xfa1: 0x02f3, 0xfa2: 0x02ff, 0xfa3: 0x02ff,
+ 0xfa4: 0x0308, 0xfa5: 0x0308, 0xfa6: 0x0308, 0xfa7: 0x0308, 0xfa8: 0x0290, 0xfa9: 0x0290,
+ 0xfaa: 0x25b0, 0xfab: 0x25b0, 0xfac: 0x2620, 0xfad: 0x2620, 0xfae: 0x25ef, 0xfaf: 0x25ef,
+ 0xfb0: 0x260b, 0xfb1: 0x260b, 0xfb2: 0x2604, 0xfb3: 0x2604, 0xfb4: 0x2612, 0xfb5: 0x2612,
+ 0xfb6: 0x2619, 0xfb7: 0x2619, 0xfb8: 0x2619, 0xfb9: 0x25f6, 0xfba: 0x25f6, 0xfbb: 0x25f6,
+ 0xfbc: 0x0305, 0xfbd: 0x0305, 0xfbe: 0x0305, 0xfbf: 0x0305,
+ // Block 0x3f, offset 0xfc0
+ 0xfc0: 0x25b7, 0xfc1: 0x25be, 0xfc2: 0x25da, 0xfc3: 0x25f6, 0xfc4: 0x25fd, 0xfc5: 0x1d8f,
+ 0xfc6: 0x1d94, 0xfc7: 0x1d99, 0xfc8: 0x1da8, 0xfc9: 0x1db7, 0xfca: 0x1dbc, 0xfcb: 0x1dc1,
+ 0xfcc: 0x1dc6, 0xfcd: 0x1dcb, 0xfce: 0x1dda, 0xfcf: 0x1de9, 0xfd0: 0x1dee, 0xfd1: 0x1df3,
+ 0xfd2: 0x1e02, 0xfd3: 0x1e11, 0xfd4: 0x1e16, 0xfd5: 0x1e1b, 0xfd6: 0x1e20, 0xfd7: 0x1e2f,
+ 0xfd8: 0x1e34, 0xfd9: 0x1e43, 0xfda: 0x1e48, 0xfdb: 0x1e4d, 0xfdc: 0x1e5c, 0xfdd: 0x1e61,
+ 0xfde: 0x1e66, 0xfdf: 0x1e70, 0xfe0: 0x1eac, 0xfe1: 0x1ebb, 0xfe2: 0x1eca, 0xfe3: 0x1ecf,
+ 0xfe4: 0x1ed4, 0xfe5: 0x1ede, 0xfe6: 0x1eed, 0xfe7: 0x1ef2, 0xfe8: 0x1f01, 0xfe9: 0x1f06,
+ 0xfea: 0x1f0b, 0xfeb: 0x1f1a, 0xfec: 0x1f1f, 0xfed: 0x1f2e, 0xfee: 0x1f33, 0xfef: 0x1f38,
+ 0xff0: 0x1f3d, 0xff1: 0x1f42, 0xff2: 0x1f47, 0xff3: 0x1f4c, 0xff4: 0x1f51, 0xff5: 0x1f56,
+ 0xff6: 0x1f5b, 0xff7: 0x1f60, 0xff8: 0x1f65, 0xff9: 0x1f6a, 0xffa: 0x1f6f, 0xffb: 0x1f74,
+ 0xffc: 0x1f79, 0xffd: 0x1f7e, 0xffe: 0x1f83, 0xfff: 0x1f8d,
+ // Block 0x40, offset 0x1000
+ 0x1000: 0x1f92, 0x1001: 0x1f97, 0x1002: 0x1f9c, 0x1003: 0x1fa6, 0x1004: 0x1fab, 0x1005: 0x1fb5,
+ 0x1006: 0x1fba, 0x1007: 0x1fbf, 0x1008: 0x1fc4, 0x1009: 0x1fc9, 0x100a: 0x1fce, 0x100b: 0x1fd3,
+ 0x100c: 0x1fd8, 0x100d: 0x1fdd, 0x100e: 0x1fec, 0x100f: 0x1ffb, 0x1010: 0x2000, 0x1011: 0x2005,
+ 0x1012: 0x200a, 0x1013: 0x200f, 0x1014: 0x2014, 0x1015: 0x201e, 0x1016: 0x2023, 0x1017: 0x2028,
+ 0x1018: 0x2037, 0x1019: 0x2046, 0x101a: 0x204b, 0x101b: 0x4437, 0x101c: 0x443d, 0x101d: 0x4473,
+ 0x101e: 0x44ca, 0x101f: 0x44d1, 0x1020: 0x44d8, 0x1021: 0x44df, 0x1022: 0x44e6, 0x1023: 0x44ed,
+ 0x1024: 0x25cc, 0x1025: 0x25d3, 0x1026: 0x25da, 0x1027: 0x25e1, 0x1028: 0x25f6, 0x1029: 0x25fd,
+ 0x102a: 0x1d9e, 0x102b: 0x1da3, 0x102c: 0x1da8, 0x102d: 0x1dad, 0x102e: 0x1db7, 0x102f: 0x1dbc,
+ 0x1030: 0x1dd0, 0x1031: 0x1dd5, 0x1032: 0x1dda, 0x1033: 0x1ddf, 0x1034: 0x1de9, 0x1035: 0x1dee,
+ 0x1036: 0x1df8, 0x1037: 0x1dfd, 0x1038: 0x1e02, 0x1039: 0x1e07, 0x103a: 0x1e11, 0x103b: 0x1e16,
+ 0x103c: 0x1f42, 0x103d: 0x1f47, 0x103e: 0x1f56, 0x103f: 0x1f5b,
+ // Block 0x41, offset 0x1040
+ 0x1040: 0x1f60, 0x1041: 0x1f74, 0x1042: 0x1f79, 0x1043: 0x1f7e, 0x1044: 0x1f83, 0x1045: 0x1f9c,
+ 0x1046: 0x1fa6, 0x1047: 0x1fab, 0x1048: 0x1fb0, 0x1049: 0x1fc4, 0x104a: 0x1fe2, 0x104b: 0x1fe7,
+ 0x104c: 0x1fec, 0x104d: 0x1ff1, 0x104e: 0x1ffb, 0x104f: 0x2000, 0x1050: 0x4473, 0x1051: 0x202d,
+ 0x1052: 0x2032, 0x1053: 0x2037, 0x1054: 0x203c, 0x1055: 0x2046, 0x1056: 0x204b, 0x1057: 0x25b7,
+ 0x1058: 0x25be, 0x1059: 0x25c5, 0x105a: 0x25da, 0x105b: 0x25e8, 0x105c: 0x1d8f, 0x105d: 0x1d94,
+ 0x105e: 0x1d99, 0x105f: 0x1da8, 0x1060: 0x1db2, 0x1061: 0x1dc1, 0x1062: 0x1dc6, 0x1063: 0x1dcb,
+ 0x1064: 0x1dda, 0x1065: 0x1de4, 0x1066: 0x1e02, 0x1067: 0x1e1b, 0x1068: 0x1e20, 0x1069: 0x1e2f,
+ 0x106a: 0x1e34, 0x106b: 0x1e43, 0x106c: 0x1e4d, 0x106d: 0x1e5c, 0x106e: 0x1e61, 0x106f: 0x1e66,
+ 0x1070: 0x1e70, 0x1071: 0x1eac, 0x1072: 0x1eb1, 0x1073: 0x1ebb, 0x1074: 0x1eca, 0x1075: 0x1ecf,
+ 0x1076: 0x1ed4, 0x1077: 0x1ede, 0x1078: 0x1eed, 0x1079: 0x1f01, 0x107a: 0x1f06, 0x107b: 0x1f0b,
+ 0x107c: 0x1f1a, 0x107d: 0x1f1f, 0x107e: 0x1f2e, 0x107f: 0x1f33,
+ // Block 0x42, offset 0x1080
+ 0x1080: 0x1f38, 0x1081: 0x1f3d, 0x1082: 0x1f4c, 0x1083: 0x1f51, 0x1084: 0x1f65, 0x1085: 0x1f6a,
+ 0x1086: 0x1f6f, 0x1087: 0x1f74, 0x1088: 0x1f79, 0x1089: 0x1f8d, 0x108a: 0x1f92, 0x108b: 0x1f97,
+ 0x108c: 0x1f9c, 0x108d: 0x1fa1, 0x108e: 0x1fb5, 0x108f: 0x1fba, 0x1090: 0x1fbf, 0x1091: 0x1fc4,
+ 0x1092: 0x1fd3, 0x1093: 0x1fd8, 0x1094: 0x1fdd, 0x1095: 0x1fec, 0x1096: 0x1ff6, 0x1097: 0x2005,
+ 0x1098: 0x200a, 0x1099: 0x4467, 0x109a: 0x201e, 0x109b: 0x2023, 0x109c: 0x2028, 0x109d: 0x2037,
+ 0x109e: 0x2041, 0x109f: 0x25da, 0x10a0: 0x25e8, 0x10a1: 0x1da8, 0x10a2: 0x1db2, 0x10a3: 0x1dda,
+ 0x10a4: 0x1de4, 0x10a5: 0x1e02, 0x10a6: 0x1e0c, 0x10a7: 0x1e70, 0x10a8: 0x1e75, 0x10a9: 0x1e98,
+ 0x10aa: 0x1e9d, 0x10ab: 0x1f74, 0x10ac: 0x1f79, 0x10ad: 0x1f9c, 0x10ae: 0x1fec, 0x10af: 0x1ff6,
+ 0x10b0: 0x2037, 0x10b1: 0x2041, 0x10b2: 0x451b, 0x10b3: 0x4523, 0x10b4: 0x452b, 0x10b5: 0x1ef7,
+ 0x10b6: 0x1efc, 0x10b7: 0x1f10, 0x10b8: 0x1f15, 0x10b9: 0x1f24, 0x10ba: 0x1f29, 0x10bb: 0x1e7a,
+ 0x10bc: 0x1e7f, 0x10bd: 0x1ea2, 0x10be: 0x1ea7, 0x10bf: 0x1e39,
+ // Block 0x43, offset 0x10c0
+ 0x10c0: 0x1e3e, 0x10c1: 0x1e25, 0x10c2: 0x1e2a, 0x10c3: 0x1e52, 0x10c4: 0x1e57, 0x10c5: 0x1ec0,
+ 0x10c6: 0x1ec5, 0x10c7: 0x1ee3, 0x10c8: 0x1ee8, 0x10c9: 0x1e84, 0x10ca: 0x1e89, 0x10cb: 0x1e8e,
+ 0x10cc: 0x1e98, 0x10cd: 0x1e93, 0x10ce: 0x1e6b, 0x10cf: 0x1eb6, 0x10d0: 0x1ed9, 0x10d1: 0x1ef7,
+ 0x10d2: 0x1efc, 0x10d3: 0x1f10, 0x10d4: 0x1f15, 0x10d5: 0x1f24, 0x10d6: 0x1f29, 0x10d7: 0x1e7a,
+ 0x10d8: 0x1e7f, 0x10d9: 0x1ea2, 0x10da: 0x1ea7, 0x10db: 0x1e39, 0x10dc: 0x1e3e, 0x10dd: 0x1e25,
+ 0x10de: 0x1e2a, 0x10df: 0x1e52, 0x10e0: 0x1e57, 0x10e1: 0x1ec0, 0x10e2: 0x1ec5, 0x10e3: 0x1ee3,
+ 0x10e4: 0x1ee8, 0x10e5: 0x1e84, 0x10e6: 0x1e89, 0x10e7: 0x1e8e, 0x10e8: 0x1e98, 0x10e9: 0x1e93,
+ 0x10ea: 0x1e6b, 0x10eb: 0x1eb6, 0x10ec: 0x1ed9, 0x10ed: 0x1e84, 0x10ee: 0x1e89, 0x10ef: 0x1e8e,
+ 0x10f0: 0x1e98, 0x10f1: 0x1e75, 0x10f2: 0x1e9d, 0x10f3: 0x1ef2, 0x10f4: 0x1e5c, 0x10f5: 0x1e61,
+ 0x10f6: 0x1e66, 0x10f7: 0x1e84, 0x10f8: 0x1e89, 0x10f9: 0x1e8e, 0x10fa: 0x1ef2, 0x10fb: 0x1f01,
+ 0x10fc: 0x441f, 0x10fd: 0x441f,
+ // Block 0x44, offset 0x1100
+ 0x1110: 0x2317, 0x1111: 0x232c,
+ 0x1112: 0x232c, 0x1113: 0x2333, 0x1114: 0x233a, 0x1115: 0x234f, 0x1116: 0x2356, 0x1117: 0x235d,
+ 0x1118: 0x2380, 0x1119: 0x2380, 0x111a: 0x23a3, 0x111b: 0x239c, 0x111c: 0x23b8, 0x111d: 0x23aa,
+ 0x111e: 0x23b1, 0x111f: 0x23d4, 0x1120: 0x23d4, 0x1121: 0x23cd, 0x1122: 0x23db, 0x1123: 0x23db,
+ 0x1124: 0x2405, 0x1125: 0x2405, 0x1126: 0x2421, 0x1127: 0x23e9, 0x1128: 0x23e9, 0x1129: 0x23e2,
+ 0x112a: 0x23f7, 0x112b: 0x23f7, 0x112c: 0x23fe, 0x112d: 0x23fe, 0x112e: 0x2428, 0x112f: 0x2436,
+ 0x1130: 0x2436, 0x1131: 0x243d, 0x1132: 0x243d, 0x1133: 0x2444, 0x1134: 0x244b, 0x1135: 0x2452,
+ 0x1136: 0x2459, 0x1137: 0x2459, 0x1138: 0x2460, 0x1139: 0x246e, 0x113a: 0x247c, 0x113b: 0x2475,
+ 0x113c: 0x2483, 0x113d: 0x2483, 0x113e: 0x2498, 0x113f: 0x249f,
+ // Block 0x45, offset 0x1140
+ 0x1140: 0x24d0, 0x1141: 0x24de, 0x1142: 0x24d7, 0x1143: 0x24bb, 0x1144: 0x24bb, 0x1145: 0x24e5,
+ 0x1146: 0x24e5, 0x1147: 0x24ec, 0x1148: 0x24ec, 0x1149: 0x2516, 0x114a: 0x251d, 0x114b: 0x2524,
+ 0x114c: 0x24fa, 0x114d: 0x2508, 0x114e: 0x252b, 0x114f: 0x2532,
+ 0x1152: 0x2501, 0x1153: 0x2586, 0x1154: 0x258d, 0x1155: 0x2563, 0x1156: 0x256a, 0x1157: 0x254e,
+ 0x1158: 0x254e, 0x1159: 0x2555, 0x115a: 0x257f, 0x115b: 0x2578, 0x115c: 0x25a2, 0x115d: 0x25a2,
+ 0x115e: 0x2310, 0x115f: 0x2325, 0x1160: 0x231e, 0x1161: 0x2348, 0x1162: 0x2341, 0x1163: 0x236b,
+ 0x1164: 0x2364, 0x1165: 0x238e, 0x1166: 0x2372, 0x1167: 0x2387, 0x1168: 0x23bf, 0x1169: 0x240c,
+ 0x116a: 0x23f0, 0x116b: 0x242f, 0x116c: 0x24c9, 0x116d: 0x24f3, 0x116e: 0x259b, 0x116f: 0x2594,
+ 0x1170: 0x25a9, 0x1171: 0x2540, 0x1172: 0x24a6, 0x1173: 0x2571, 0x1174: 0x2498, 0x1175: 0x24d0,
+ 0x1176: 0x2467, 0x1177: 0x24b4, 0x1178: 0x2547, 0x1179: 0x2539, 0x117a: 0x24c2, 0x117b: 0x24ad,
+ 0x117c: 0x24c2, 0x117d: 0x2547, 0x117e: 0x2379, 0x117f: 0x2395,
+ // Block 0x46, offset 0x1180
+ 0x1180: 0x250f, 0x1181: 0x248a, 0x1182: 0x2309, 0x1183: 0x24ad, 0x1184: 0x2452, 0x1185: 0x2421,
+ 0x1186: 0x23c6, 0x1187: 0x255c,
+ 0x11b0: 0x241a, 0x11b1: 0x2491, 0x11b2: 0x27cc, 0x11b3: 0x27c3, 0x11b4: 0x27f9, 0x11b5: 0x27e7,
+ 0x11b6: 0x27d5, 0x11b7: 0x27f0, 0x11b8: 0x2802, 0x11b9: 0x2413, 0x11ba: 0x2c89, 0x11bb: 0x2b09,
+ 0x11bc: 0x27de,
+ // Block 0x47, offset 0x11c0
+ 0x11d0: 0x0019, 0x11d1: 0x0486,
+ 0x11d2: 0x048a, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04c2,
+ 0x11d8: 0x04c6, 0x11d9: 0x1b62,
+ 0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133,
+ 0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e,
+ 0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133,
+ 0x11f0: 0x1876, 0x11f1: 0x0446, 0x11f2: 0x0442, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011,
+ 0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04ba, 0x11fa: 0x04be, 0x11fb: 0x04ae,
+ 0x11fc: 0x04b2, 0x11fd: 0x0496, 0x11fe: 0x049a, 0x11ff: 0x048e,
+ // Block 0x48, offset 0x1200
+ 0x1200: 0x0492, 0x1201: 0x049e, 0x1202: 0x04a2, 0x1203: 0x04a6, 0x1204: 0x04aa,
+ 0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4280, 0x120a: 0x4280, 0x120b: 0x4280,
+ 0x120c: 0x4280, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0486,
+ 0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003,
+ 0x1218: 0x0446, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04ba,
+ 0x121e: 0x04be, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b,
+ 0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009,
+ 0x122a: 0x000b, 0x122b: 0x0041,
+ 0x1230: 0x42c1, 0x1231: 0x4443, 0x1232: 0x42c6, 0x1234: 0x42cb,
+ 0x1236: 0x42d0, 0x1237: 0x4449, 0x1238: 0x42d5, 0x1239: 0x444f, 0x123a: 0x42da, 0x123b: 0x4455,
+ 0x123c: 0x42df, 0x123d: 0x445b, 0x123e: 0x42e4, 0x123f: 0x4461,
+ // Block 0x49, offset 0x1240
+ 0x1240: 0x0239, 0x1241: 0x4425, 0x1242: 0x4425, 0x1243: 0x442b, 0x1244: 0x442b, 0x1245: 0x446d,
+ 0x1246: 0x446d, 0x1247: 0x4431, 0x1248: 0x4431, 0x1249: 0x4479, 0x124a: 0x4479, 0x124b: 0x4479,
+ 0x124c: 0x4479, 0x124d: 0x023c, 0x124e: 0x023c, 0x124f: 0x023f, 0x1250: 0x023f, 0x1251: 0x023f,
+ 0x1252: 0x023f, 0x1253: 0x0242, 0x1254: 0x0242, 0x1255: 0x0245, 0x1256: 0x0245, 0x1257: 0x0245,
+ 0x1258: 0x0245, 0x1259: 0x0248, 0x125a: 0x0248, 0x125b: 0x0248, 0x125c: 0x0248, 0x125d: 0x024b,
+ 0x125e: 0x024b, 0x125f: 0x024b, 0x1260: 0x024b, 0x1261: 0x024e, 0x1262: 0x024e, 0x1263: 0x024e,
+ 0x1264: 0x024e, 0x1265: 0x0251, 0x1266: 0x0251, 0x1267: 0x0251, 0x1268: 0x0251, 0x1269: 0x0254,
+ 0x126a: 0x0254, 0x126b: 0x0257, 0x126c: 0x0257, 0x126d: 0x025a, 0x126e: 0x025a, 0x126f: 0x025d,
+ 0x1270: 0x025d, 0x1271: 0x0260, 0x1272: 0x0260, 0x1273: 0x0260, 0x1274: 0x0260, 0x1275: 0x0263,
+ 0x1276: 0x0263, 0x1277: 0x0263, 0x1278: 0x0263, 0x1279: 0x0266, 0x127a: 0x0266, 0x127b: 0x0266,
+ 0x127c: 0x0266, 0x127d: 0x0269, 0x127e: 0x0269, 0x127f: 0x0269,
+ // Block 0x4a, offset 0x1280
+ 0x1280: 0x0269, 0x1281: 0x026c, 0x1282: 0x026c, 0x1283: 0x026c, 0x1284: 0x026c, 0x1285: 0x026f,
+ 0x1286: 0x026f, 0x1287: 0x026f, 0x1288: 0x026f, 0x1289: 0x0272, 0x128a: 0x0272, 0x128b: 0x0272,
+ 0x128c: 0x0272, 0x128d: 0x0275, 0x128e: 0x0275, 0x128f: 0x0275, 0x1290: 0x0275, 0x1291: 0x0278,
+ 0x1292: 0x0278, 0x1293: 0x0278, 0x1294: 0x0278, 0x1295: 0x027b, 0x1296: 0x027b, 0x1297: 0x027b,
+ 0x1298: 0x027b, 0x1299: 0x027e, 0x129a: 0x027e, 0x129b: 0x027e, 0x129c: 0x027e, 0x129d: 0x0281,
+ 0x129e: 0x0281, 0x129f: 0x0281, 0x12a0: 0x0281, 0x12a1: 0x0284, 0x12a2: 0x0284, 0x12a3: 0x0284,
+ 0x12a4: 0x0284, 0x12a5: 0x0287, 0x12a6: 0x0287, 0x12a7: 0x0287, 0x12a8: 0x0287, 0x12a9: 0x028a,
+ 0x12aa: 0x028a, 0x12ab: 0x028a, 0x12ac: 0x028a, 0x12ad: 0x028d, 0x12ae: 0x028d, 0x12af: 0x0290,
+ 0x12b0: 0x0290, 0x12b1: 0x0293, 0x12b2: 0x0293, 0x12b3: 0x0293, 0x12b4: 0x0293, 0x12b5: 0x2e17,
+ 0x12b6: 0x2e17, 0x12b7: 0x2e1f, 0x12b8: 0x2e1f, 0x12b9: 0x2e27, 0x12ba: 0x2e27, 0x12bb: 0x1f88,
+ 0x12bc: 0x1f88,
+ // Block 0x4b, offset 0x12c0
+ 0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b,
+ 0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097,
+ 0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3,
+ 0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af,
+ 0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb,
+ 0x12de: 0x00bd, 0x12df: 0x047a, 0x12e0: 0x047e, 0x12e1: 0x048a, 0x12e2: 0x049e, 0x12e3: 0x04a2,
+ 0x12e4: 0x0486, 0x12e5: 0x05ae, 0x12e6: 0x05a6, 0x12e7: 0x04ca, 0x12e8: 0x04d2, 0x12e9: 0x04da,
+ 0x12ea: 0x04e2, 0x12eb: 0x04ea, 0x12ec: 0x056e, 0x12ed: 0x0576, 0x12ee: 0x057e, 0x12ef: 0x0522,
+ 0x12f0: 0x05b2, 0x12f1: 0x04ce, 0x12f2: 0x04d6, 0x12f3: 0x04de, 0x12f4: 0x04e6, 0x12f5: 0x04ee,
+ 0x12f6: 0x04f2, 0x12f7: 0x04f6, 0x12f8: 0x04fa, 0x12f9: 0x04fe, 0x12fa: 0x0502, 0x12fb: 0x0506,
+ 0x12fc: 0x050a, 0x12fd: 0x050e, 0x12fe: 0x0512, 0x12ff: 0x0516,
+ // Block 0x4c, offset 0x1300
+ 0x1300: 0x051a, 0x1301: 0x051e, 0x1302: 0x0526, 0x1303: 0x052a, 0x1304: 0x052e, 0x1305: 0x0532,
+ 0x1306: 0x0536, 0x1307: 0x053a, 0x1308: 0x053e, 0x1309: 0x0542, 0x130a: 0x0546, 0x130b: 0x054a,
+ 0x130c: 0x054e, 0x130d: 0x0552, 0x130e: 0x0556, 0x130f: 0x055a, 0x1310: 0x055e, 0x1311: 0x0562,
+ 0x1312: 0x0566, 0x1313: 0x056a, 0x1314: 0x0572, 0x1315: 0x057a, 0x1316: 0x0582, 0x1317: 0x0586,
+ 0x1318: 0x058a, 0x1319: 0x058e, 0x131a: 0x0592, 0x131b: 0x0596, 0x131c: 0x059a, 0x131d: 0x05aa,
+ 0x131e: 0x4a8f, 0x131f: 0x4a95, 0x1320: 0x03c6, 0x1321: 0x0316, 0x1322: 0x031a, 0x1323: 0x4a52,
+ 0x1324: 0x031e, 0x1325: 0x4a58, 0x1326: 0x4a5e, 0x1327: 0x0322, 0x1328: 0x0326, 0x1329: 0x032a,
+ 0x132a: 0x4a64, 0x132b: 0x4a6a, 0x132c: 0x4a70, 0x132d: 0x4a76, 0x132e: 0x4a7c, 0x132f: 0x4a82,
+ 0x1330: 0x036a, 0x1331: 0x032e, 0x1332: 0x0332, 0x1333: 0x0336, 0x1334: 0x037e, 0x1335: 0x033a,
+ 0x1336: 0x033e, 0x1337: 0x0342, 0x1338: 0x0346, 0x1339: 0x034a, 0x133a: 0x034e, 0x133b: 0x0352,
+ 0x133c: 0x0356, 0x133d: 0x035a, 0x133e: 0x035e,
+ // Block 0x4d, offset 0x1340
+ 0x1342: 0x49d4, 0x1343: 0x49da, 0x1344: 0x49e0, 0x1345: 0x49e6,
+ 0x1346: 0x49ec, 0x1347: 0x49f2, 0x134a: 0x49f8, 0x134b: 0x49fe,
+ 0x134c: 0x4a04, 0x134d: 0x4a0a, 0x134e: 0x4a10, 0x134f: 0x4a16,
+ 0x1352: 0x4a1c, 0x1353: 0x4a22, 0x1354: 0x4a28, 0x1355: 0x4a2e, 0x1356: 0x4a34, 0x1357: 0x4a3a,
+ 0x135a: 0x4a40, 0x135b: 0x4a46, 0x135c: 0x4a4c,
+ 0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x427b,
+ 0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x044a, 0x1368: 0x046e, 0x1369: 0x044e,
+ 0x136a: 0x0452, 0x136b: 0x0456, 0x136c: 0x045a, 0x136d: 0x0472, 0x136e: 0x0476,
+ // Block 0x4e, offset 0x1380
+ 0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d,
+ 0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085,
+ 0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091,
+ 0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d,
+ 0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9,
+ 0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5,
+ 0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0176, 0x13a9: 0x0179,
+ 0x13aa: 0x017c, 0x13ab: 0x017f, 0x13ac: 0x0182, 0x13ad: 0x0185, 0x13ae: 0x0188, 0x13af: 0x018b,
+ 0x13b0: 0x018e, 0x13b1: 0x0191, 0x13b2: 0x0194, 0x13b3: 0x0197, 0x13b4: 0x019a, 0x13b5: 0x019d,
+ 0x13b6: 0x01a0, 0x13b7: 0x01a3, 0x13b8: 0x01a6, 0x13b9: 0x018b, 0x13ba: 0x01a9, 0x13bb: 0x01ac,
+ 0x13bc: 0x01af, 0x13bd: 0x01b2, 0x13be: 0x01b5, 0x13bf: 0x01b8,
+ // Block 0x4f, offset 0x13c0
+ 0x13c0: 0x0200, 0x13c1: 0x0203, 0x13c2: 0x0206, 0x13c3: 0x045e, 0x13c4: 0x01ca, 0x13c5: 0x01d3,
+ 0x13c6: 0x01d9, 0x13c7: 0x01fd, 0x13c8: 0x01ee, 0x13c9: 0x01eb, 0x13ca: 0x0209, 0x13cb: 0x020c,
+ 0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027,
+ 0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033,
+ 0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b,
+ 0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023,
+ 0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f,
+ 0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027,
+ 0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033,
+ 0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b,
+ 0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033,
+ // Block 0x50, offset 0x1400
+ 0x1400: 0x023c, 0x1401: 0x023f, 0x1402: 0x024b, 0x1403: 0x0254, 0x1405: 0x028d,
+ 0x1406: 0x025d, 0x1407: 0x024e, 0x1408: 0x026c, 0x1409: 0x0293, 0x140a: 0x027e, 0x140b: 0x0281,
+ 0x140c: 0x0284, 0x140d: 0x0287, 0x140e: 0x0260, 0x140f: 0x0272, 0x1410: 0x0278, 0x1411: 0x0266,
+ 0x1412: 0x027b, 0x1413: 0x025a, 0x1414: 0x0263, 0x1415: 0x0245, 0x1416: 0x0248, 0x1417: 0x0251,
+ 0x1418: 0x0257, 0x1419: 0x0269, 0x141a: 0x026f, 0x141b: 0x0275, 0x141c: 0x0296, 0x141d: 0x02e7,
+ 0x141e: 0x02cf, 0x141f: 0x0299, 0x1421: 0x023f, 0x1422: 0x024b,
+ 0x1424: 0x028a, 0x1427: 0x024e, 0x1429: 0x0293,
+ 0x142a: 0x027e, 0x142b: 0x0281, 0x142c: 0x0284, 0x142d: 0x0287, 0x142e: 0x0260, 0x142f: 0x0272,
+ 0x1430: 0x0278, 0x1431: 0x0266, 0x1432: 0x027b, 0x1434: 0x0263, 0x1435: 0x0245,
+ 0x1436: 0x0248, 0x1437: 0x0251, 0x1439: 0x0269, 0x143b: 0x0275,
+ // Block 0x51, offset 0x1440
+ 0x1442: 0x024b,
+ 0x1447: 0x024e, 0x1449: 0x0293, 0x144b: 0x0281,
+ 0x144d: 0x0287, 0x144e: 0x0260, 0x144f: 0x0272, 0x1451: 0x0266,
+ 0x1452: 0x027b, 0x1454: 0x0263, 0x1457: 0x0251,
+ 0x1459: 0x0269, 0x145b: 0x0275, 0x145d: 0x02e7,
+ 0x145f: 0x0299, 0x1461: 0x023f, 0x1462: 0x024b,
+ 0x1464: 0x028a, 0x1467: 0x024e, 0x1468: 0x026c, 0x1469: 0x0293,
+ 0x146a: 0x027e, 0x146c: 0x0284, 0x146d: 0x0287, 0x146e: 0x0260, 0x146f: 0x0272,
+ 0x1470: 0x0278, 0x1471: 0x0266, 0x1472: 0x027b, 0x1474: 0x0263, 0x1475: 0x0245,
+ 0x1476: 0x0248, 0x1477: 0x0251, 0x1479: 0x0269, 0x147a: 0x026f, 0x147b: 0x0275,
+ 0x147c: 0x0296, 0x147e: 0x02cf,
+ // Block 0x52, offset 0x1480
+ 0x1480: 0x023c, 0x1481: 0x023f, 0x1482: 0x024b, 0x1483: 0x0254, 0x1484: 0x028a, 0x1485: 0x028d,
+ 0x1486: 0x025d, 0x1487: 0x024e, 0x1488: 0x026c, 0x1489: 0x0293, 0x148b: 0x0281,
+ 0x148c: 0x0284, 0x148d: 0x0287, 0x148e: 0x0260, 0x148f: 0x0272, 0x1490: 0x0278, 0x1491: 0x0266,
+ 0x1492: 0x027b, 0x1493: 0x025a, 0x1494: 0x0263, 0x1495: 0x0245, 0x1496: 0x0248, 0x1497: 0x0251,
+ 0x1498: 0x0257, 0x1499: 0x0269, 0x149a: 0x026f, 0x149b: 0x0275,
+ 0x14a1: 0x023f, 0x14a2: 0x024b, 0x14a3: 0x0254,
+ 0x14a5: 0x028d, 0x14a6: 0x025d, 0x14a7: 0x024e, 0x14a8: 0x026c, 0x14a9: 0x0293,
+ 0x14ab: 0x0281, 0x14ac: 0x0284, 0x14ad: 0x0287, 0x14ae: 0x0260, 0x14af: 0x0272,
+ 0x14b0: 0x0278, 0x14b1: 0x0266, 0x14b2: 0x027b, 0x14b3: 0x025a, 0x14b4: 0x0263, 0x14b5: 0x0245,
+ 0x14b6: 0x0248, 0x14b7: 0x0251, 0x14b8: 0x0257, 0x14b9: 0x0269, 0x14ba: 0x026f, 0x14bb: 0x0275,
+ // Block 0x53, offset 0x14c0
+ 0x14c0: 0x187c, 0x14c1: 0x1879, 0x14c2: 0x187f, 0x14c3: 0x18a3, 0x14c4: 0x18c7, 0x14c5: 0x18eb,
+ 0x14c6: 0x190f, 0x14c7: 0x1918, 0x14c8: 0x191e, 0x14c9: 0x1924, 0x14ca: 0x192a,
+ 0x14d0: 0x1a92, 0x14d1: 0x1a96,
+ 0x14d2: 0x1a9a, 0x14d3: 0x1a9e, 0x14d4: 0x1aa2, 0x14d5: 0x1aa6, 0x14d6: 0x1aaa, 0x14d7: 0x1aae,
+ 0x14d8: 0x1ab2, 0x14d9: 0x1ab6, 0x14da: 0x1aba, 0x14db: 0x1abe, 0x14dc: 0x1ac2, 0x14dd: 0x1ac6,
+ 0x14de: 0x1aca, 0x14df: 0x1ace, 0x14e0: 0x1ad2, 0x14e1: 0x1ad6, 0x14e2: 0x1ada, 0x14e3: 0x1ade,
+ 0x14e4: 0x1ae2, 0x14e5: 0x1ae6, 0x14e6: 0x1aea, 0x14e7: 0x1aee, 0x14e8: 0x1af2, 0x14e9: 0x1af6,
+ 0x14ea: 0x272b, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193f, 0x14ee: 0x19b7,
+ 0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d,
+ 0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059,
+ 0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061,
+ // Block 0x54, offset 0x1500
+ 0x1500: 0x26b3, 0x1501: 0x26c8, 0x1502: 0x0506,
+ 0x1510: 0x0c12, 0x1511: 0x0a4a,
+ 0x1512: 0x08d6, 0x1513: 0x45db, 0x1514: 0x071e, 0x1515: 0x09f2, 0x1516: 0x1332, 0x1517: 0x0a02,
+ 0x1518: 0x072a, 0x1519: 0x0cda, 0x151a: 0x0eb2, 0x151b: 0x0cb2, 0x151c: 0x082a, 0x151d: 0x0b6e,
+ 0x151e: 0x07c2, 0x151f: 0x0cba, 0x1520: 0x0816, 0x1521: 0x111a, 0x1522: 0x0f86, 0x1523: 0x138e,
+ 0x1524: 0x09d6, 0x1525: 0x090e, 0x1526: 0x0e66, 0x1527: 0x0c1e, 0x1528: 0x0c4a, 0x1529: 0x06c2,
+ 0x152a: 0x06ce, 0x152b: 0x140e, 0x152c: 0x0ade, 0x152d: 0x06ea, 0x152e: 0x08f2, 0x152f: 0x0c3e,
+ 0x1530: 0x13b6, 0x1531: 0x0c16, 0x1532: 0x1072, 0x1533: 0x10ae, 0x1534: 0x08fa, 0x1535: 0x0e46,
+ 0x1536: 0x0d0e, 0x1537: 0x0d0a, 0x1538: 0x0f9a, 0x1539: 0x082e, 0x153a: 0x095a, 0x153b: 0x1446,
+ // Block 0x55, offset 0x1540
+ 0x1540: 0x06fe, 0x1541: 0x06f6, 0x1542: 0x0706, 0x1543: 0x164a, 0x1544: 0x074a, 0x1545: 0x075a,
+ 0x1546: 0x075e, 0x1547: 0x0766, 0x1548: 0x076e, 0x1549: 0x0772, 0x154a: 0x077e, 0x154b: 0x0776,
+ 0x154c: 0x05b6, 0x154d: 0x165e, 0x154e: 0x0792, 0x154f: 0x0796, 0x1550: 0x079a, 0x1551: 0x07b6,
+ 0x1552: 0x164f, 0x1553: 0x05ba, 0x1554: 0x07a2, 0x1555: 0x07c2, 0x1556: 0x1659, 0x1557: 0x07d2,
+ 0x1558: 0x07da, 0x1559: 0x073a, 0x155a: 0x07e2, 0x155b: 0x07e6, 0x155c: 0x1834, 0x155d: 0x0802,
+ 0x155e: 0x080a, 0x155f: 0x05c2, 0x1560: 0x0822, 0x1561: 0x0826, 0x1562: 0x082e, 0x1563: 0x0832,
+ 0x1564: 0x05c6, 0x1565: 0x084a, 0x1566: 0x084e, 0x1567: 0x085a, 0x1568: 0x0866, 0x1569: 0x086a,
+ 0x156a: 0x086e, 0x156b: 0x0876, 0x156c: 0x0896, 0x156d: 0x089a, 0x156e: 0x08a2, 0x156f: 0x08b2,
+ 0x1570: 0x08ba, 0x1571: 0x08be, 0x1572: 0x08be, 0x1573: 0x08be, 0x1574: 0x166d, 0x1575: 0x0e96,
+ 0x1576: 0x08d2, 0x1577: 0x08da, 0x1578: 0x1672, 0x1579: 0x08e6, 0x157a: 0x08ee, 0x157b: 0x08f6,
+ 0x157c: 0x091e, 0x157d: 0x090a, 0x157e: 0x0916, 0x157f: 0x091a,
+ // Block 0x56, offset 0x1580
+ 0x1580: 0x0922, 0x1581: 0x092a, 0x1582: 0x092e, 0x1583: 0x0936, 0x1584: 0x093e, 0x1585: 0x0942,
+ 0x1586: 0x0942, 0x1587: 0x094a, 0x1588: 0x0952, 0x1589: 0x0956, 0x158a: 0x0962, 0x158b: 0x0986,
+ 0x158c: 0x096a, 0x158d: 0x098a, 0x158e: 0x096e, 0x158f: 0x0976, 0x1590: 0x080e, 0x1591: 0x09d2,
+ 0x1592: 0x099a, 0x1593: 0x099e, 0x1594: 0x09a2, 0x1595: 0x0996, 0x1596: 0x09aa, 0x1597: 0x09a6,
+ 0x1598: 0x09be, 0x1599: 0x1677, 0x159a: 0x09da, 0x159b: 0x09de, 0x159c: 0x09e6, 0x159d: 0x09f2,
+ 0x159e: 0x09fa, 0x159f: 0x0a16, 0x15a0: 0x167c, 0x15a1: 0x1681, 0x15a2: 0x0a22, 0x15a3: 0x0a26,
+ 0x15a4: 0x0a2a, 0x15a5: 0x0a1e, 0x15a6: 0x0a32, 0x15a7: 0x05ca, 0x15a8: 0x05ce, 0x15a9: 0x0a3a,
+ 0x15aa: 0x0a42, 0x15ab: 0x0a42, 0x15ac: 0x1686, 0x15ad: 0x0a5e, 0x15ae: 0x0a62, 0x15af: 0x0a66,
+ 0x15b0: 0x0a6e, 0x15b1: 0x168b, 0x15b2: 0x0a76, 0x15b3: 0x0a7a, 0x15b4: 0x0b52, 0x15b5: 0x0a82,
+ 0x15b6: 0x05d2, 0x15b7: 0x0a8e, 0x15b8: 0x0a9e, 0x15b9: 0x0aaa, 0x15ba: 0x0aa6, 0x15bb: 0x1695,
+ 0x15bc: 0x0ab2, 0x15bd: 0x169a, 0x15be: 0x0abe, 0x15bf: 0x0aba,
+ // Block 0x57, offset 0x15c0
+ 0x15c0: 0x0ac2, 0x15c1: 0x0ad2, 0x15c2: 0x0ad6, 0x15c3: 0x05d6, 0x15c4: 0x0ae6, 0x15c5: 0x0aee,
+ 0x15c6: 0x0af2, 0x15c7: 0x0af6, 0x15c8: 0x05da, 0x15c9: 0x169f, 0x15ca: 0x05de, 0x15cb: 0x0b12,
+ 0x15cc: 0x0b16, 0x15cd: 0x0b1a, 0x15ce: 0x0b22, 0x15cf: 0x1866, 0x15d0: 0x0b3a, 0x15d1: 0x16a9,
+ 0x15d2: 0x16a9, 0x15d3: 0x11da, 0x15d4: 0x0b4a, 0x15d5: 0x0b4a, 0x15d6: 0x05e2, 0x15d7: 0x16cc,
+ 0x15d8: 0x179e, 0x15d9: 0x0b5a, 0x15da: 0x0b62, 0x15db: 0x05e6, 0x15dc: 0x0b76, 0x15dd: 0x0b86,
+ 0x15de: 0x0b8a, 0x15df: 0x0b92, 0x15e0: 0x0ba2, 0x15e1: 0x05ee, 0x15e2: 0x05ea, 0x15e3: 0x0ba6,
+ 0x15e4: 0x16ae, 0x15e5: 0x0baa, 0x15e6: 0x0bbe, 0x15e7: 0x0bc2, 0x15e8: 0x0bc6, 0x15e9: 0x0bc2,
+ 0x15ea: 0x0bd2, 0x15eb: 0x0bd6, 0x15ec: 0x0be6, 0x15ed: 0x0bde, 0x15ee: 0x0be2, 0x15ef: 0x0bea,
+ 0x15f0: 0x0bee, 0x15f1: 0x0bf2, 0x15f2: 0x0bfe, 0x15f3: 0x0c02, 0x15f4: 0x0c1a, 0x15f5: 0x0c22,
+ 0x15f6: 0x0c32, 0x15f7: 0x0c46, 0x15f8: 0x16bd, 0x15f9: 0x0c42, 0x15fa: 0x0c36, 0x15fb: 0x0c4e,
+ 0x15fc: 0x0c56, 0x15fd: 0x0c6a, 0x15fe: 0x16c2, 0x15ff: 0x0c72,
+ // Block 0x58, offset 0x1600
+ 0x1600: 0x0c66, 0x1601: 0x0c5e, 0x1602: 0x05f2, 0x1603: 0x0c7a, 0x1604: 0x0c82, 0x1605: 0x0c8a,
+ 0x1606: 0x0c7e, 0x1607: 0x05f6, 0x1608: 0x0c9a, 0x1609: 0x0ca2, 0x160a: 0x16c7, 0x160b: 0x0cce,
+ 0x160c: 0x0d02, 0x160d: 0x0cde, 0x160e: 0x0602, 0x160f: 0x0cea, 0x1610: 0x05fe, 0x1611: 0x05fa,
+ 0x1612: 0x07c6, 0x1613: 0x07ca, 0x1614: 0x0d06, 0x1615: 0x0cee, 0x1616: 0x11ae, 0x1617: 0x0666,
+ 0x1618: 0x0d12, 0x1619: 0x0d16, 0x161a: 0x0d1a, 0x161b: 0x0d2e, 0x161c: 0x0d26, 0x161d: 0x16e0,
+ 0x161e: 0x0606, 0x161f: 0x0d42, 0x1620: 0x0d36, 0x1621: 0x0d52, 0x1622: 0x0d5a, 0x1623: 0x16ea,
+ 0x1624: 0x0d5e, 0x1625: 0x0d4a, 0x1626: 0x0d66, 0x1627: 0x060a, 0x1628: 0x0d6a, 0x1629: 0x0d6e,
+ 0x162a: 0x0d72, 0x162b: 0x0d7e, 0x162c: 0x16ef, 0x162d: 0x0d86, 0x162e: 0x060e, 0x162f: 0x0d92,
+ 0x1630: 0x16f4, 0x1631: 0x0d96, 0x1632: 0x0612, 0x1633: 0x0da2, 0x1634: 0x0dae, 0x1635: 0x0dba,
+ 0x1636: 0x0dbe, 0x1637: 0x16f9, 0x1638: 0x1690, 0x1639: 0x16fe, 0x163a: 0x0dde, 0x163b: 0x1703,
+ 0x163c: 0x0dea, 0x163d: 0x0df2, 0x163e: 0x0de2, 0x163f: 0x0dfe,
+ // Block 0x59, offset 0x1640
+ 0x1640: 0x0e0e, 0x1641: 0x0e1e, 0x1642: 0x0e12, 0x1643: 0x0e16, 0x1644: 0x0e22, 0x1645: 0x0e26,
+ 0x1646: 0x1708, 0x1647: 0x0e0a, 0x1648: 0x0e3e, 0x1649: 0x0e42, 0x164a: 0x0616, 0x164b: 0x0e56,
+ 0x164c: 0x0e52, 0x164d: 0x170d, 0x164e: 0x0e36, 0x164f: 0x0e72, 0x1650: 0x1712, 0x1651: 0x1717,
+ 0x1652: 0x0e76, 0x1653: 0x0e8a, 0x1654: 0x0e86, 0x1655: 0x0e82, 0x1656: 0x061a, 0x1657: 0x0e8e,
+ 0x1658: 0x0e9e, 0x1659: 0x0e9a, 0x165a: 0x0ea6, 0x165b: 0x1654, 0x165c: 0x0eb6, 0x165d: 0x171c,
+ 0x165e: 0x0ec2, 0x165f: 0x1726, 0x1660: 0x0ed6, 0x1661: 0x0ee2, 0x1662: 0x0ef6, 0x1663: 0x172b,
+ 0x1664: 0x0f0a, 0x1665: 0x0f0e, 0x1666: 0x1730, 0x1667: 0x1735, 0x1668: 0x0f2a, 0x1669: 0x0f3a,
+ 0x166a: 0x061e, 0x166b: 0x0f3e, 0x166c: 0x0622, 0x166d: 0x0622, 0x166e: 0x0f56, 0x166f: 0x0f5a,
+ 0x1670: 0x0f62, 0x1671: 0x0f66, 0x1672: 0x0f72, 0x1673: 0x0626, 0x1674: 0x0f8a, 0x1675: 0x173a,
+ 0x1676: 0x0fa6, 0x1677: 0x173f, 0x1678: 0x0fb2, 0x1679: 0x16a4, 0x167a: 0x0fc2, 0x167b: 0x1744,
+ 0x167c: 0x1749, 0x167d: 0x174e, 0x167e: 0x062a, 0x167f: 0x062e,
+ // Block 0x5a, offset 0x1680
+ 0x1680: 0x0ffa, 0x1681: 0x1758, 0x1682: 0x1753, 0x1683: 0x175d, 0x1684: 0x1762, 0x1685: 0x1002,
+ 0x1686: 0x1006, 0x1687: 0x1006, 0x1688: 0x100e, 0x1689: 0x0636, 0x168a: 0x1012, 0x168b: 0x063a,
+ 0x168c: 0x063e, 0x168d: 0x176c, 0x168e: 0x1026, 0x168f: 0x102e, 0x1690: 0x103a, 0x1691: 0x0642,
+ 0x1692: 0x1771, 0x1693: 0x105e, 0x1694: 0x1776, 0x1695: 0x177b, 0x1696: 0x107e, 0x1697: 0x1096,
+ 0x1698: 0x0646, 0x1699: 0x109e, 0x169a: 0x10a2, 0x169b: 0x10a6, 0x169c: 0x1780, 0x169d: 0x1785,
+ 0x169e: 0x1785, 0x169f: 0x10be, 0x16a0: 0x064a, 0x16a1: 0x178a, 0x16a2: 0x10d2, 0x16a3: 0x10d6,
+ 0x16a4: 0x064e, 0x16a5: 0x178f, 0x16a6: 0x10f2, 0x16a7: 0x0652, 0x16a8: 0x1102, 0x16a9: 0x10fa,
+ 0x16aa: 0x110a, 0x16ab: 0x1799, 0x16ac: 0x1122, 0x16ad: 0x0656, 0x16ae: 0x112e, 0x16af: 0x1136,
+ 0x16b0: 0x1146, 0x16b1: 0x065a, 0x16b2: 0x17a3, 0x16b3: 0x17a8, 0x16b4: 0x065e, 0x16b5: 0x17ad,
+ 0x16b6: 0x115e, 0x16b7: 0x17b2, 0x16b8: 0x116a, 0x16b9: 0x1176, 0x16ba: 0x117e, 0x16bb: 0x17b7,
+ 0x16bc: 0x17bc, 0x16bd: 0x1192, 0x16be: 0x17c1, 0x16bf: 0x119a,
+ // Block 0x5b, offset 0x16c0
+ 0x16c0: 0x16d1, 0x16c1: 0x0662, 0x16c2: 0x11b2, 0x16c3: 0x11b6, 0x16c4: 0x066a, 0x16c5: 0x11ba,
+ 0x16c6: 0x0a36, 0x16c7: 0x17c6, 0x16c8: 0x17cb, 0x16c9: 0x16d6, 0x16ca: 0x16db, 0x16cb: 0x11da,
+ 0x16cc: 0x11de, 0x16cd: 0x13f6, 0x16ce: 0x066e, 0x16cf: 0x120a, 0x16d0: 0x1206, 0x16d1: 0x120e,
+ 0x16d2: 0x0842, 0x16d3: 0x1212, 0x16d4: 0x1216, 0x16d5: 0x121a, 0x16d6: 0x1222, 0x16d7: 0x17d0,
+ 0x16d8: 0x121e, 0x16d9: 0x1226, 0x16da: 0x123a, 0x16db: 0x123e, 0x16dc: 0x122a, 0x16dd: 0x1242,
+ 0x16de: 0x1256, 0x16df: 0x126a, 0x16e0: 0x1236, 0x16e1: 0x124a, 0x16e2: 0x124e, 0x16e3: 0x1252,
+ 0x16e4: 0x17d5, 0x16e5: 0x17df, 0x16e6: 0x17da, 0x16e7: 0x0672, 0x16e8: 0x1272, 0x16e9: 0x1276,
+ 0x16ea: 0x127e, 0x16eb: 0x17f3, 0x16ec: 0x1282, 0x16ed: 0x17e4, 0x16ee: 0x0676, 0x16ef: 0x067a,
+ 0x16f0: 0x17e9, 0x16f1: 0x17ee, 0x16f2: 0x067e, 0x16f3: 0x12a2, 0x16f4: 0x12a6, 0x16f5: 0x12aa,
+ 0x16f6: 0x12ae, 0x16f7: 0x12ba, 0x16f8: 0x12b6, 0x16f9: 0x12c2, 0x16fa: 0x12be, 0x16fb: 0x12ce,
+ 0x16fc: 0x12c6, 0x16fd: 0x12ca, 0x16fe: 0x12d2, 0x16ff: 0x0682,
+ // Block 0x5c, offset 0x1700
+ 0x1700: 0x12da, 0x1701: 0x12de, 0x1702: 0x0686, 0x1703: 0x12ee, 0x1704: 0x12f2, 0x1705: 0x17f8,
+ 0x1706: 0x12fe, 0x1707: 0x1302, 0x1708: 0x068a, 0x1709: 0x130e, 0x170a: 0x05be, 0x170b: 0x17fd,
+ 0x170c: 0x1802, 0x170d: 0x068e, 0x170e: 0x0692, 0x170f: 0x133a, 0x1710: 0x1352, 0x1711: 0x136e,
+ 0x1712: 0x137e, 0x1713: 0x1807, 0x1714: 0x1392, 0x1715: 0x1396, 0x1716: 0x13ae, 0x1717: 0x13ba,
+ 0x1718: 0x1811, 0x1719: 0x1663, 0x171a: 0x13c6, 0x171b: 0x13c2, 0x171c: 0x13ce, 0x171d: 0x1668,
+ 0x171e: 0x13da, 0x171f: 0x13e6, 0x1720: 0x1816, 0x1721: 0x181b, 0x1722: 0x1426, 0x1723: 0x1432,
+ 0x1724: 0x143a, 0x1725: 0x1820, 0x1726: 0x143e, 0x1727: 0x146a, 0x1728: 0x1476, 0x1729: 0x147a,
+ 0x172a: 0x1472, 0x172b: 0x1486, 0x172c: 0x148a, 0x172d: 0x1825, 0x172e: 0x1496, 0x172f: 0x0696,
+ 0x1730: 0x149e, 0x1731: 0x182a, 0x1732: 0x069a, 0x1733: 0x14d6, 0x1734: 0x0ac6, 0x1735: 0x14ee,
+ 0x1736: 0x182f, 0x1737: 0x1839, 0x1738: 0x069e, 0x1739: 0x06a2, 0x173a: 0x1516, 0x173b: 0x183e,
+ 0x173c: 0x06a6, 0x173d: 0x1843, 0x173e: 0x152e, 0x173f: 0x152e,
+ // Block 0x5d, offset 0x1740
+ 0x1740: 0x1536, 0x1741: 0x1848, 0x1742: 0x154e, 0x1743: 0x06aa, 0x1744: 0x155e, 0x1745: 0x156a,
+ 0x1746: 0x1572, 0x1747: 0x157a, 0x1748: 0x06ae, 0x1749: 0x184d, 0x174a: 0x158e, 0x174b: 0x15aa,
+ 0x174c: 0x15b6, 0x174d: 0x06b2, 0x174e: 0x06b6, 0x174f: 0x15ba, 0x1750: 0x1852, 0x1751: 0x06ba,
+ 0x1752: 0x1857, 0x1753: 0x185c, 0x1754: 0x1861, 0x1755: 0x15de, 0x1756: 0x06be, 0x1757: 0x15f2,
+ 0x1758: 0x15fa, 0x1759: 0x15fe, 0x175a: 0x1606, 0x175b: 0x160e, 0x175c: 0x1616, 0x175d: 0x186b,
+}
+
+// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes
+// Block 0 is the zero block.
+var nfkcIndex = [1408]uint16{
+ // Block 0x0, offset 0x0
+ // Block 0x1, offset 0x40
+ // Block 0x2, offset 0x80
+ // Block 0x3, offset 0xc0
+ 0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04,
+ 0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09,
+ 0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62,
+ 0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67,
+ 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05,
+ 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a,
+ 0xf0: 0x13,
+ // Block 0x4, offset 0x100
+ 0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d,
+ 0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74,
+ 0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a,
+ 0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82,
+ // Block 0x5, offset 0x140
+ 0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89,
+ 0x14d: 0x8a,
+ 0x15c: 0x8b, 0x15f: 0x8c,
+ 0x162: 0x8d, 0x164: 0x8e,
+ 0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16b: 0x92, 0x16c: 0x0f, 0x16d: 0x93, 0x16e: 0x94, 0x16f: 0x95,
+ 0x170: 0x96, 0x173: 0x97, 0x174: 0x98, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12,
+ 0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a,
+ // Block 0x6, offset 0x180
+ 0x180: 0x99, 0x181: 0x9a, 0x182: 0x9b, 0x183: 0x9c, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9d, 0x187: 0x9e,
+ 0x188: 0x9f, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa0, 0x18c: 0xa1,
+ 0x191: 0x1f, 0x192: 0x20, 0x193: 0xa2,
+ 0x1a8: 0xa3, 0x1a9: 0xa4, 0x1ab: 0xa5,
+ 0x1b1: 0xa6, 0x1b3: 0xa7, 0x1b5: 0xa8, 0x1b7: 0xa9,
+ 0x1ba: 0xaa, 0x1bb: 0xab, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xac,
+ // Block 0x7, offset 0x1c0
+ 0x1c0: 0xad, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xae, 0x1c5: 0x27, 0x1c6: 0x28,
+ 0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30,
+ // Block 0x8, offset 0x200
+ 0x219: 0xaf, 0x21a: 0xb0, 0x21b: 0xb1, 0x21d: 0xb2, 0x21f: 0xb3,
+ 0x220: 0xb4, 0x223: 0xb5, 0x224: 0xb6, 0x225: 0xb7, 0x226: 0xb8, 0x227: 0xb9,
+ 0x22a: 0xba, 0x22b: 0xbb, 0x22d: 0xbc, 0x22f: 0xbd,
+ 0x230: 0xbe, 0x231: 0xbf, 0x232: 0xc0, 0x233: 0xc1, 0x234: 0xc2, 0x235: 0xc3, 0x236: 0xc4, 0x237: 0xbe,
+ 0x238: 0xbf, 0x239: 0xc0, 0x23a: 0xc1, 0x23b: 0xc2, 0x23c: 0xc3, 0x23d: 0xc4, 0x23e: 0xbe, 0x23f: 0xbf,
+ // Block 0x9, offset 0x240
+ 0x240: 0xc0, 0x241: 0xc1, 0x242: 0xc2, 0x243: 0xc3, 0x244: 0xc4, 0x245: 0xbe, 0x246: 0xbf, 0x247: 0xc0,
+ 0x248: 0xc1, 0x249: 0xc2, 0x24a: 0xc3, 0x24b: 0xc4, 0x24c: 0xbe, 0x24d: 0xbf, 0x24e: 0xc0, 0x24f: 0xc1,
+ 0x250: 0xc2, 0x251: 0xc3, 0x252: 0xc4, 0x253: 0xbe, 0x254: 0xbf, 0x255: 0xc0, 0x256: 0xc1, 0x257: 0xc2,
+ 0x258: 0xc3, 0x259: 0xc4, 0x25a: 0xbe, 0x25b: 0xbf, 0x25c: 0xc0, 0x25d: 0xc1, 0x25e: 0xc2, 0x25f: 0xc3,
+ 0x260: 0xc4, 0x261: 0xbe, 0x262: 0xbf, 0x263: 0xc0, 0x264: 0xc1, 0x265: 0xc2, 0x266: 0xc3, 0x267: 0xc4,
+ 0x268: 0xbe, 0x269: 0xbf, 0x26a: 0xc0, 0x26b: 0xc1, 0x26c: 0xc2, 0x26d: 0xc3, 0x26e: 0xc4, 0x26f: 0xbe,
+ 0x270: 0xbf, 0x271: 0xc0, 0x272: 0xc1, 0x273: 0xc2, 0x274: 0xc3, 0x275: 0xc4, 0x276: 0xbe, 0x277: 0xbf,
+ 0x278: 0xc0, 0x279: 0xc1, 0x27a: 0xc2, 0x27b: 0xc3, 0x27c: 0xc4, 0x27d: 0xbe, 0x27e: 0xbf, 0x27f: 0xc0,
+ // Block 0xa, offset 0x280
+ 0x280: 0xc1, 0x281: 0xc2, 0x282: 0xc3, 0x283: 0xc4, 0x284: 0xbe, 0x285: 0xbf, 0x286: 0xc0, 0x287: 0xc1,
+ 0x288: 0xc2, 0x289: 0xc3, 0x28a: 0xc4, 0x28b: 0xbe, 0x28c: 0xbf, 0x28d: 0xc0, 0x28e: 0xc1, 0x28f: 0xc2,
+ 0x290: 0xc3, 0x291: 0xc4, 0x292: 0xbe, 0x293: 0xbf, 0x294: 0xc0, 0x295: 0xc1, 0x296: 0xc2, 0x297: 0xc3,
+ 0x298: 0xc4, 0x299: 0xbe, 0x29a: 0xbf, 0x29b: 0xc0, 0x29c: 0xc1, 0x29d: 0xc2, 0x29e: 0xc3, 0x29f: 0xc4,
+ 0x2a0: 0xbe, 0x2a1: 0xbf, 0x2a2: 0xc0, 0x2a3: 0xc1, 0x2a4: 0xc2, 0x2a5: 0xc3, 0x2a6: 0xc4, 0x2a7: 0xbe,
+ 0x2a8: 0xbf, 0x2a9: 0xc0, 0x2aa: 0xc1, 0x2ab: 0xc2, 0x2ac: 0xc3, 0x2ad: 0xc4, 0x2ae: 0xbe, 0x2af: 0xbf,
+ 0x2b0: 0xc0, 0x2b1: 0xc1, 0x2b2: 0xc2, 0x2b3: 0xc3, 0x2b4: 0xc4, 0x2b5: 0xbe, 0x2b6: 0xbf, 0x2b7: 0xc0,
+ 0x2b8: 0xc1, 0x2b9: 0xc2, 0x2ba: 0xc3, 0x2bb: 0xc4, 0x2bc: 0xbe, 0x2bd: 0xbf, 0x2be: 0xc0, 0x2bf: 0xc1,
+ // Block 0xb, offset 0x2c0
+ 0x2c0: 0xc2, 0x2c1: 0xc3, 0x2c2: 0xc4, 0x2c3: 0xbe, 0x2c4: 0xbf, 0x2c5: 0xc0, 0x2c6: 0xc1, 0x2c7: 0xc2,
+ 0x2c8: 0xc3, 0x2c9: 0xc4, 0x2ca: 0xbe, 0x2cb: 0xbf, 0x2cc: 0xc0, 0x2cd: 0xc1, 0x2ce: 0xc2, 0x2cf: 0xc3,
+ 0x2d0: 0xc4, 0x2d1: 0xbe, 0x2d2: 0xbf, 0x2d3: 0xc0, 0x2d4: 0xc1, 0x2d5: 0xc2, 0x2d6: 0xc3, 0x2d7: 0xc4,
+ 0x2d8: 0xbe, 0x2d9: 0xbf, 0x2da: 0xc0, 0x2db: 0xc1, 0x2dc: 0xc2, 0x2dd: 0xc3, 0x2de: 0xc5,
+ // Block 0xc, offset 0x300
+ 0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34,
+ 0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c,
+ 0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44,
+ 0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc6, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b,
+ // Block 0xd, offset 0x340
+ 0x347: 0xc7,
+ 0x34b: 0xc8, 0x34d: 0xc9,
+ 0x368: 0xca, 0x36b: 0xcb,
+ 0x374: 0xcc,
+ 0x37a: 0xcd, 0x37d: 0xce,
+ // Block 0xe, offset 0x380
+ 0x381: 0xcf, 0x382: 0xd0, 0x384: 0xd1, 0x385: 0xb8, 0x387: 0xd2,
+ 0x388: 0xd3, 0x38b: 0xd4, 0x38c: 0xd5, 0x38d: 0xd6,
+ 0x391: 0xd7, 0x392: 0xd8, 0x393: 0xd9, 0x396: 0xda, 0x397: 0xdb,
+ 0x398: 0xdc, 0x39a: 0xdd, 0x39c: 0xde,
+ 0x3a0: 0xdf, 0x3a4: 0xe0, 0x3a5: 0xe1, 0x3a7: 0xe2,
+ 0x3a8: 0xe3, 0x3a9: 0xe4, 0x3aa: 0xe5,
+ 0x3b0: 0xdc, 0x3b5: 0xe6, 0x3b6: 0xe7,
+ // Block 0xf, offset 0x3c0
+ 0x3eb: 0xe8, 0x3ec: 0xe9,
+ 0x3ff: 0xea,
+ // Block 0x10, offset 0x400
+ 0x432: 0xeb,
+ // Block 0x11, offset 0x440
+ 0x445: 0xec, 0x446: 0xed, 0x447: 0xee,
+ 0x449: 0xef,
+ 0x450: 0xf0, 0x451: 0xf1, 0x452: 0xf2, 0x453: 0xf3, 0x454: 0xf4, 0x455: 0xf5, 0x456: 0xf6, 0x457: 0xf7,
+ 0x458: 0xf8, 0x459: 0xf9, 0x45a: 0x4c, 0x45b: 0xfa, 0x45c: 0xfb, 0x45d: 0xfc, 0x45e: 0xfd, 0x45f: 0x4d,
+ // Block 0x12, offset 0x480
+ 0x480: 0xfe, 0x484: 0xe9,
+ 0x48b: 0xff,
+ 0x4a3: 0x100, 0x4a5: 0x101,
+ 0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50,
+ // Block 0x13, offset 0x4c0
+ 0x4c4: 0x51, 0x4c5: 0x102, 0x4c6: 0x103,
+ 0x4c8: 0x52, 0x4c9: 0x104,
+ 0x4ef: 0x105,
+ // Block 0x14, offset 0x500
+ 0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a,
+ 0x528: 0x5b,
+ // Block 0x15, offset 0x540
+ 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d,
+ 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
+ 0x56f: 0x12,
+}
+
+// nfkcSparseOffset: 170 entries, 340 bytes
+var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xdf, 0xe3, 0xe9, 0xfa, 0x106, 0x108, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11f, 0x122, 0x124, 0x127, 0x12a, 0x12e, 0x134, 0x136, 0x13f, 0x141, 0x144, 0x146, 0x151, 0x15c, 0x16a, 0x178, 0x188, 0x196, 0x19d, 0x1a3, 0x1b2, 0x1b6, 0x1b8, 0x1bc, 0x1be, 0x1c1, 0x1c3, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1dd, 0x1e7, 0x1f1, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x201, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x212, 0x215, 0x21a, 0x21c, 0x223, 0x229, 0x22f, 0x237, 0x23d, 0x243, 0x249, 0x24d, 0x24f, 0x251, 0x253, 0x255, 0x25b, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x273, 0x27a, 0x27d, 0x280, 0x282, 0x285, 0x28d, 0x291, 0x298, 0x29b, 0x2a1, 0x2a3, 0x2a5, 0x2a8, 0x2aa, 0x2ad, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2bc, 0x2bf, 0x2c1, 0x2c3, 0x2c5, 0x2c7, 0x2c9, 0x2d6, 0x2e0, 0x2e2, 0x2e4, 0x2e8, 0x2ed, 0x2f9, 0x2fe, 0x307, 0x30d, 0x312, 0x316, 0x31b, 0x31f, 0x32f, 0x33d, 0x34b, 0x359, 0x35f, 0x361, 0x363, 0x366, 0x371, 0x373, 0x37d}
+
+// nfkcSparseValues: 895 entries, 3580 bytes
+var nfkcSparseValues = [895]valueRange{
+ // Block 0x0, offset 0x0
+ {value: 0x0002, lo: 0x0d},
+ {value: 0x0001, lo: 0xa0, hi: 0xa0},
+ {value: 0x428f, lo: 0xa8, hi: 0xa8},
+ {value: 0x0083, lo: 0xaa, hi: 0xaa},
+ {value: 0x427b, lo: 0xaf, hi: 0xaf},
+ {value: 0x0025, lo: 0xb2, hi: 0xb3},
+ {value: 0x4271, lo: 0xb4, hi: 0xb4},
+ {value: 0x01df, lo: 0xb5, hi: 0xb5},
+ {value: 0x42a8, lo: 0xb8, hi: 0xb8},
+ {value: 0x0023, lo: 0xb9, hi: 0xb9},
+ {value: 0x009f, lo: 0xba, hi: 0xba},
+ {value: 0x2222, lo: 0xbc, hi: 0xbc},
+ {value: 0x2216, lo: 0xbd, hi: 0xbd},
+ {value: 0x22b8, lo: 0xbe, hi: 0xbe},
+ // Block 0x1, offset 0xe
+ {value: 0x0091, lo: 0x03},
+ {value: 0x46f9, lo: 0xa0, hi: 0xa1},
+ {value: 0x472b, lo: 0xaf, hi: 0xb0},
+ {value: 0xa000, lo: 0xb7, hi: 0xb7},
+ // Block 0x2, offset 0x12
+ {value: 0x0003, lo: 0x08},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x0091, lo: 0xb0, hi: 0xb0},
+ {value: 0x0119, lo: 0xb1, hi: 0xb1},
+ {value: 0x0095, lo: 0xb2, hi: 0xb2},
+ {value: 0x00a5, lo: 0xb3, hi: 0xb3},
+ {value: 0x0143, lo: 0xb4, hi: 0xb6},
+ {value: 0x00af, lo: 0xb7, hi: 0xb7},
+ {value: 0x00b3, lo: 0xb8, hi: 0xb8},
+ // Block 0x3, offset 0x1b
+ {value: 0x000a, lo: 0x09},
+ {value: 0x4285, lo: 0x98, hi: 0x98},
+ {value: 0x428a, lo: 0x99, hi: 0x9a},
+ {value: 0x42ad, lo: 0x9b, hi: 0x9b},
+ {value: 0x4276, lo: 0x9c, hi: 0x9c},
+ {value: 0x4299, lo: 0x9d, hi: 0x9d},
+ {value: 0x0113, lo: 0xa0, hi: 0xa0},
+ {value: 0x0099, lo: 0xa1, hi: 0xa1},
+ {value: 0x00a7, lo: 0xa2, hi: 0xa3},
+ {value: 0x016a, lo: 0xa4, hi: 0xa4},
+ // Block 0x4, offset 0x25
+ {value: 0x0000, lo: 0x0f},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0xa000, lo: 0x8d, hi: 0x8d},
+ {value: 0x37bc, lo: 0x90, hi: 0x90},
+ {value: 0x37c8, lo: 0x91, hi: 0x91},
+ {value: 0x37b6, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x96, hi: 0x96},
+ {value: 0x382e, lo: 0x97, hi: 0x97},
+ {value: 0x37f8, lo: 0x9c, hi: 0x9c},
+ {value: 0x37e0, lo: 0x9d, hi: 0x9d},
+ {value: 0x380a, lo: 0x9e, hi: 0x9e},
+ {value: 0xa000, lo: 0xb4, hi: 0xb5},
+ {value: 0x3834, lo: 0xb6, hi: 0xb6},
+ {value: 0x383a, lo: 0xb7, hi: 0xb7},
+ // Block 0x5, offset 0x35
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x83, hi: 0x87},
+ // Block 0x6, offset 0x37
+ {value: 0x0001, lo: 0x04},
+ {value: 0x8114, lo: 0x81, hi: 0x82},
+ {value: 0x8133, lo: 0x84, hi: 0x84},
+ {value: 0x812e, lo: 0x85, hi: 0x85},
+ {value: 0x810e, lo: 0x87, hi: 0x87},
+ // Block 0x7, offset 0x3c
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x97},
+ {value: 0x811a, lo: 0x98, hi: 0x98},
+ {value: 0x811b, lo: 0x99, hi: 0x99},
+ {value: 0x811c, lo: 0x9a, hi: 0x9a},
+ {value: 0x3858, lo: 0xa2, hi: 0xa2},
+ {value: 0x385e, lo: 0xa3, hi: 0xa3},
+ {value: 0x386a, lo: 0xa4, hi: 0xa4},
+ {value: 0x3864, lo: 0xa5, hi: 0xa5},
+ {value: 0x3870, lo: 0xa6, hi: 0xa6},
+ {value: 0xa000, lo: 0xa7, hi: 0xa7},
+ // Block 0x8, offset 0x47
+ {value: 0x0000, lo: 0x0e},
+ {value: 0x3882, lo: 0x80, hi: 0x80},
+ {value: 0xa000, lo: 0x81, hi: 0x81},
+ {value: 0x3876, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x387c, lo: 0x93, hi: 0x93},
+ {value: 0xa000, lo: 0x95, hi: 0x95},
+ {value: 0x8133, lo: 0x96, hi: 0x9c},
+ {value: 0x8133, lo: 0x9f, hi: 0xa2},
+ {value: 0x812e, lo: 0xa3, hi: 0xa3},
+ {value: 0x8133, lo: 0xa4, hi: 0xa4},
+ {value: 0x8133, lo: 0xa7, hi: 0xa8},
+ {value: 0x812e, lo: 0xaa, hi: 0xaa},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ // Block 0x9, offset 0x56
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x8120, lo: 0x91, hi: 0x91},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x812e, lo: 0xb1, hi: 0xb1},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb5, hi: 0xb6},
+ {value: 0x812e, lo: 0xb7, hi: 0xb9},
+ {value: 0x8133, lo: 0xba, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbc},
+ {value: 0x8133, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbe, hi: 0xbe},
+ {value: 0x8133, lo: 0xbf, hi: 0xbf},
+ // Block 0xa, offset 0x63
+ {value: 0x0005, lo: 0x07},
+ {value: 0x8133, lo: 0x80, hi: 0x80},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x812e, lo: 0x82, hi: 0x83},
+ {value: 0x812e, lo: 0x84, hi: 0x85},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x812e, lo: 0x88, hi: 0x89},
+ {value: 0x8133, lo: 0x8a, hi: 0x8a},
+ // Block 0xb, offset 0x6b
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0xab, hi: 0xb1},
+ {value: 0x812e, lo: 0xb2, hi: 0xb2},
+ {value: 0x8133, lo: 0xb3, hi: 0xb3},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0xc, offset 0x70
+ {value: 0x0000, lo: 0x04},
+ {value: 0x8133, lo: 0x96, hi: 0x99},
+ {value: 0x8133, lo: 0x9b, hi: 0xa3},
+ {value: 0x8133, lo: 0xa5, hi: 0xa7},
+ {value: 0x8133, lo: 0xa9, hi: 0xad},
+ // Block 0xd, offset 0x75
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x99, hi: 0x9b},
+ // Block 0xe, offset 0x77
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0xa8, hi: 0xa8},
+ {value: 0x3eef, lo: 0xa9, hi: 0xa9},
+ {value: 0xa000, lo: 0xb0, hi: 0xb0},
+ {value: 0x3ef7, lo: 0xb1, hi: 0xb1},
+ {value: 0xa000, lo: 0xb3, hi: 0xb3},
+ {value: 0x3eff, lo: 0xb4, hi: 0xb4},
+ {value: 0x9903, lo: 0xbc, hi: 0xbc},
+ // Block 0xf, offset 0x7f
+ {value: 0x0008, lo: 0x06},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x91, hi: 0x91},
+ {value: 0x812e, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x93, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x94},
+ {value: 0x4533, lo: 0x98, hi: 0x9f},
+ // Block 0x10, offset 0x86
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x11, offset 0x89
+ {value: 0x0008, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cab, lo: 0x8b, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x4573, lo: 0x9c, hi: 0x9d},
+ {value: 0x4583, lo: 0x9f, hi: 0x9f},
+ {value: 0x8133, lo: 0xbe, hi: 0xbe},
+ // Block 0x12, offset 0x91
+ {value: 0x0000, lo: 0x03},
+ {value: 0x45ab, lo: 0xb3, hi: 0xb3},
+ {value: 0x45b3, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x13, offset 0x95
+ {value: 0x0008, lo: 0x03},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x458b, lo: 0x99, hi: 0x9b},
+ {value: 0x45a3, lo: 0x9e, hi: 0x9e},
+ // Block 0x14, offset 0x99
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ // Block 0x15, offset 0x9b
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ // Block 0x16, offset 0x9d
+ {value: 0x0000, lo: 0x08},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2cc3, lo: 0x88, hi: 0x88},
+ {value: 0x2cbb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ccb, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x96, hi: 0x97},
+ {value: 0x45bb, lo: 0x9c, hi: 0x9c},
+ {value: 0x45c3, lo: 0x9d, hi: 0x9d},
+ // Block 0x17, offset 0xa6
+ {value: 0x0000, lo: 0x03},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0x2cd3, lo: 0x94, hi: 0x94},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x18, offset 0xaa
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2cdb, lo: 0x8a, hi: 0x8a},
+ {value: 0x2ceb, lo: 0x8b, hi: 0x8b},
+ {value: 0x2ce3, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x19, offset 0xb1
+ {value: 0x1801, lo: 0x04},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x3f07, lo: 0x88, hi: 0x88},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x8121, lo: 0x95, hi: 0x96},
+ // Block 0x1a, offset 0xb6
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbc, hi: 0xbc},
+ {value: 0xa000, lo: 0xbf, hi: 0xbf},
+ // Block 0x1b, offset 0xb9
+ {value: 0x0000, lo: 0x09},
+ {value: 0x2cf3, lo: 0x80, hi: 0x80},
+ {value: 0x9900, lo: 0x82, hi: 0x82},
+ {value: 0xa000, lo: 0x86, hi: 0x86},
+ {value: 0x2cfb, lo: 0x87, hi: 0x87},
+ {value: 0x2d03, lo: 0x88, hi: 0x88},
+ {value: 0x2f67, lo: 0x8a, hi: 0x8a},
+ {value: 0x2def, lo: 0x8b, hi: 0x8b},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x95, hi: 0x96},
+ // Block 0x1c, offset 0xc3
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x1d, offset 0xc6
+ {value: 0x0000, lo: 0x06},
+ {value: 0xa000, lo: 0x86, hi: 0x87},
+ {value: 0x2d0b, lo: 0x8a, hi: 0x8a},
+ {value: 0x2d1b, lo: 0x8b, hi: 0x8b},
+ {value: 0x2d13, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ // Block 0x1e, offset 0xcd
+ {value: 0x6bdd, lo: 0x07},
+ {value: 0x9905, lo: 0x8a, hi: 0x8a},
+ {value: 0x9900, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x3f0f, lo: 0x9a, hi: 0x9a},
+ {value: 0x2f6f, lo: 0x9c, hi: 0x9c},
+ {value: 0x2dfa, lo: 0x9d, hi: 0x9d},
+ {value: 0x2d23, lo: 0x9e, hi: 0x9f},
+ // Block 0x1f, offset 0xd5
+ {value: 0x0000, lo: 0x03},
+ {value: 0x2627, lo: 0xb3, hi: 0xb3},
+ {value: 0x8123, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x20, offset 0xd9
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8124, lo: 0x88, hi: 0x8b},
+ // Block 0x21, offset 0xdb
+ {value: 0x0000, lo: 0x03},
+ {value: 0x263c, lo: 0xb3, hi: 0xb3},
+ {value: 0x8125, lo: 0xb8, hi: 0xb9},
+ {value: 0x8105, lo: 0xba, hi: 0xba},
+ // Block 0x22, offset 0xdf
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8126, lo: 0x88, hi: 0x8b},
+ {value: 0x262e, lo: 0x9c, hi: 0x9c},
+ {value: 0x2635, lo: 0x9d, hi: 0x9d},
+ // Block 0x23, offset 0xe3
+ {value: 0x0000, lo: 0x05},
+ {value: 0x030e, lo: 0x8c, hi: 0x8c},
+ {value: 0x812e, lo: 0x98, hi: 0x99},
+ {value: 0x812e, lo: 0xb5, hi: 0xb5},
+ {value: 0x812e, lo: 0xb7, hi: 0xb7},
+ {value: 0x812c, lo: 0xb9, hi: 0xb9},
+ // Block 0x24, offset 0xe9
+ {value: 0x0000, lo: 0x10},
+ {value: 0x264a, lo: 0x83, hi: 0x83},
+ {value: 0x2651, lo: 0x8d, hi: 0x8d},
+ {value: 0x2658, lo: 0x92, hi: 0x92},
+ {value: 0x265f, lo: 0x97, hi: 0x97},
+ {value: 0x2666, lo: 0x9c, hi: 0x9c},
+ {value: 0x2643, lo: 0xa9, hi: 0xa9},
+ {value: 0x8127, lo: 0xb1, hi: 0xb1},
+ {value: 0x8128, lo: 0xb2, hi: 0xb2},
+ {value: 0x4a9b, lo: 0xb3, hi: 0xb3},
+ {value: 0x8129, lo: 0xb4, hi: 0xb4},
+ {value: 0x4aa4, lo: 0xb5, hi: 0xb5},
+ {value: 0x45cb, lo: 0xb6, hi: 0xb6},
+ {value: 0x460b, lo: 0xb7, hi: 0xb7},
+ {value: 0x45d3, lo: 0xb8, hi: 0xb8},
+ {value: 0x4616, lo: 0xb9, hi: 0xb9},
+ {value: 0x8128, lo: 0xba, hi: 0xbd},
+ // Block 0x25, offset 0xfa
+ {value: 0x0000, lo: 0x0b},
+ {value: 0x8128, lo: 0x80, hi: 0x80},
+ {value: 0x4aad, lo: 0x81, hi: 0x81},
+ {value: 0x8133, lo: 0x82, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0x86, hi: 0x87},
+ {value: 0x2674, lo: 0x93, hi: 0x93},
+ {value: 0x267b, lo: 0x9d, hi: 0x9d},
+ {value: 0x2682, lo: 0xa2, hi: 0xa2},
+ {value: 0x2689, lo: 0xa7, hi: 0xa7},
+ {value: 0x2690, lo: 0xac, hi: 0xac},
+ {value: 0x266d, lo: 0xb9, hi: 0xb9},
+ // Block 0x26, offset 0x106
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x86, hi: 0x86},
+ // Block 0x27, offset 0x108
+ {value: 0x0000, lo: 0x05},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x2d2b, lo: 0xa6, hi: 0xa6},
+ {value: 0x9900, lo: 0xae, hi: 0xae},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x28, offset 0x10e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ // Block 0x29, offset 0x110
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0312, lo: 0xbc, hi: 0xbc},
+ // Block 0x2a, offset 0x112
+ {value: 0x0000, lo: 0x01},
+ {value: 0xa000, lo: 0x80, hi: 0x92},
+ // Block 0x2b, offset 0x114
+ {value: 0x0000, lo: 0x01},
+ {value: 0xb900, lo: 0xa1, hi: 0xb5},
+ // Block 0x2c, offset 0x116
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0xa8, hi: 0xbf},
+ // Block 0x2d, offset 0x118
+ {value: 0x0000, lo: 0x01},
+ {value: 0x9900, lo: 0x80, hi: 0x82},
+ // Block 0x2e, offset 0x11a
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x9d, hi: 0x9f},
+ // Block 0x2f, offset 0x11c
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x94, hi: 0x94},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x30, offset 0x11f
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x92, hi: 0x92},
+ {value: 0x8133, lo: 0x9d, hi: 0x9d},
+ // Block 0x31, offset 0x122
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8132, lo: 0xa9, hi: 0xa9},
+ // Block 0x32, offset 0x124
+ {value: 0x0004, lo: 0x02},
+ {value: 0x812f, lo: 0xb9, hi: 0xba},
+ {value: 0x812e, lo: 0xbb, hi: 0xbb},
+ // Block 0x33, offset 0x127
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x97, hi: 0x97},
+ {value: 0x812e, lo: 0x98, hi: 0x98},
+ // Block 0x34, offset 0x12a
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ {value: 0x8133, lo: 0xb5, hi: 0xbc},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x35, offset 0x12e
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ {value: 0x812e, lo: 0xb5, hi: 0xba},
+ {value: 0x8133, lo: 0xbb, hi: 0xbc},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ {value: 0x812e, lo: 0xbf, hi: 0xbf},
+ // Block 0x36, offset 0x134
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x80, hi: 0x80},
+ // Block 0x37, offset 0x136
+ {value: 0x0000, lo: 0x08},
+ {value: 0x2d73, lo: 0x80, hi: 0x80},
+ {value: 0x2d7b, lo: 0x81, hi: 0x81},
+ {value: 0xa000, lo: 0x82, hi: 0x82},
+ {value: 0x2d83, lo: 0x83, hi: 0x83},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xab, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xac},
+ {value: 0x8133, lo: 0xad, hi: 0xb3},
+ // Block 0x38, offset 0x13f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xaa, hi: 0xab},
+ // Block 0x39, offset 0x141
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xa6, hi: 0xa6},
+ {value: 0x8105, lo: 0xb2, hi: 0xb3},
+ // Block 0x3a, offset 0x144
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x3b, offset 0x146
+ {value: 0x0000, lo: 0x0a},
+ {value: 0x8133, lo: 0x90, hi: 0x92},
+ {value: 0x8101, lo: 0x94, hi: 0x94},
+ {value: 0x812e, lo: 0x95, hi: 0x99},
+ {value: 0x8133, lo: 0x9a, hi: 0x9b},
+ {value: 0x812e, lo: 0x9c, hi: 0x9f},
+ {value: 0x8133, lo: 0xa0, hi: 0xa0},
+ {value: 0x8101, lo: 0xa2, hi: 0xa8},
+ {value: 0x812e, lo: 0xad, hi: 0xad},
+ {value: 0x8133, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb8, hi: 0xb9},
+ // Block 0x3c, offset 0x151
+ {value: 0x0002, lo: 0x0a},
+ {value: 0x0043, lo: 0xac, hi: 0xac},
+ {value: 0x00d1, lo: 0xad, hi: 0xad},
+ {value: 0x0045, lo: 0xae, hi: 0xae},
+ {value: 0x0049, lo: 0xb0, hi: 0xb1},
+ {value: 0x00e6, lo: 0xb2, hi: 0xb2},
+ {value: 0x004f, lo: 0xb3, hi: 0xba},
+ {value: 0x005f, lo: 0xbc, hi: 0xbc},
+ {value: 0x00ef, lo: 0xbd, hi: 0xbd},
+ {value: 0x0061, lo: 0xbe, hi: 0xbe},
+ {value: 0x0065, lo: 0xbf, hi: 0xbf},
+ // Block 0x3d, offset 0x15c
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x0001, lo: 0x80, hi: 0x8a},
+ {value: 0x043e, lo: 0x91, hi: 0x91},
+ {value: 0x42b2, lo: 0x97, hi: 0x97},
+ {value: 0x001d, lo: 0xa4, hi: 0xa4},
+ {value: 0x1876, lo: 0xa5, hi: 0xa5},
+ {value: 0x1b62, lo: 0xa6, hi: 0xa6},
+ {value: 0x0001, lo: 0xaf, hi: 0xaf},
+ {value: 0x2697, lo: 0xb3, hi: 0xb3},
+ {value: 0x280b, lo: 0xb4, hi: 0xb4},
+ {value: 0x269e, lo: 0xb6, hi: 0xb6},
+ {value: 0x2815, lo: 0xb7, hi: 0xb7},
+ {value: 0x1870, lo: 0xbc, hi: 0xbc},
+ {value: 0x4280, lo: 0xbe, hi: 0xbe},
+ // Block 0x3e, offset 0x16a
+ {value: 0x0002, lo: 0x0d},
+ {value: 0x1936, lo: 0x87, hi: 0x87},
+ {value: 0x1933, lo: 0x88, hi: 0x88},
+ {value: 0x1873, lo: 0x89, hi: 0x89},
+ {value: 0x299b, lo: 0x97, hi: 0x97},
+ {value: 0x0001, lo: 0x9f, hi: 0x9f},
+ {value: 0x0021, lo: 0xb0, hi: 0xb0},
+ {value: 0x0093, lo: 0xb1, hi: 0xb1},
+ {value: 0x0029, lo: 0xb4, hi: 0xb9},
+ {value: 0x0017, lo: 0xba, hi: 0xba},
+ {value: 0x046a, lo: 0xbb, hi: 0xbb},
+ {value: 0x003b, lo: 0xbc, hi: 0xbc},
+ {value: 0x0011, lo: 0xbd, hi: 0xbe},
+ {value: 0x009d, lo: 0xbf, hi: 0xbf},
+ // Block 0x3f, offset 0x178
+ {value: 0x0002, lo: 0x0f},
+ {value: 0x0021, lo: 0x80, hi: 0x89},
+ {value: 0x0017, lo: 0x8a, hi: 0x8a},
+ {value: 0x046a, lo: 0x8b, hi: 0x8b},
+ {value: 0x003b, lo: 0x8c, hi: 0x8c},
+ {value: 0x0011, lo: 0x8d, hi: 0x8e},
+ {value: 0x0083, lo: 0x90, hi: 0x90},
+ {value: 0x008b, lo: 0x91, hi: 0x91},
+ {value: 0x009f, lo: 0x92, hi: 0x92},
+ {value: 0x00b1, lo: 0x93, hi: 0x93},
+ {value: 0x0104, lo: 0x94, hi: 0x94},
+ {value: 0x0091, lo: 0x95, hi: 0x95},
+ {value: 0x0097, lo: 0x96, hi: 0x99},
+ {value: 0x00a1, lo: 0x9a, hi: 0x9a},
+ {value: 0x00a7, lo: 0x9b, hi: 0x9c},
+ {value: 0x199f, lo: 0xa8, hi: 0xa8},
+ // Block 0x40, offset 0x188
+ {value: 0x0000, lo: 0x0d},
+ {value: 0x8133, lo: 0x90, hi: 0x91},
+ {value: 0x8101, lo: 0x92, hi: 0x93},
+ {value: 0x8133, lo: 0x94, hi: 0x97},
+ {value: 0x8101, lo: 0x98, hi: 0x9a},
+ {value: 0x8133, lo: 0x9b, hi: 0x9c},
+ {value: 0x8133, lo: 0xa1, hi: 0xa1},
+ {value: 0x8101, lo: 0xa5, hi: 0xa6},
+ {value: 0x8133, lo: 0xa7, hi: 0xa7},
+ {value: 0x812e, lo: 0xa8, hi: 0xa8},
+ {value: 0x8133, lo: 0xa9, hi: 0xa9},
+ {value: 0x8101, lo: 0xaa, hi: 0xab},
+ {value: 0x812e, lo: 0xac, hi: 0xaf},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ // Block 0x41, offset 0x196
+ {value: 0x0007, lo: 0x06},
+ {value: 0x2186, lo: 0x89, hi: 0x89},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ {value: 0x3bd0, lo: 0x9a, hi: 0x9b},
+ {value: 0x3bde, lo: 0xae, hi: 0xae},
+ // Block 0x42, offset 0x19d
+ {value: 0x000e, lo: 0x05},
+ {value: 0x3be5, lo: 0x8d, hi: 0x8e},
+ {value: 0x3bec, lo: 0x8f, hi: 0x8f},
+ {value: 0xa000, lo: 0x90, hi: 0x90},
+ {value: 0xa000, lo: 0x92, hi: 0x92},
+ {value: 0xa000, lo: 0x94, hi: 0x94},
+ // Block 0x43, offset 0x1a3
+ {value: 0x017a, lo: 0x0e},
+ {value: 0xa000, lo: 0x83, hi: 0x83},
+ {value: 0x3bfa, lo: 0x84, hi: 0x84},
+ {value: 0xa000, lo: 0x88, hi: 0x88},
+ {value: 0x3c01, lo: 0x89, hi: 0x89},
+ {value: 0xa000, lo: 0x8b, hi: 0x8b},
+ {value: 0x3c08, lo: 0x8c, hi: 0x8c},
+ {value: 0xa000, lo: 0xa3, hi: 0xa3},
+ {value: 0x3c0f, lo: 0xa4, hi: 0xa4},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x3c16, lo: 0xa6, hi: 0xa6},
+ {value: 0x26a5, lo: 0xac, hi: 0xad},
+ {value: 0x26ac, lo: 0xaf, hi: 0xaf},
+ {value: 0x2829, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xbc, hi: 0xbc},
+ // Block 0x44, offset 0x1b2
+ {value: 0x0007, lo: 0x03},
+ {value: 0x3c7f, lo: 0xa0, hi: 0xa1},
+ {value: 0x3ca9, lo: 0xa2, hi: 0xa3},
+ {value: 0x3cd3, lo: 0xaa, hi: 0xad},
+ // Block 0x45, offset 0x1b6
+ {value: 0x0004, lo: 0x01},
+ {value: 0x048e, lo: 0xa9, hi: 0xaa},
+ // Block 0x46, offset 0x1b8
+ {value: 0x0002, lo: 0x03},
+ {value: 0x0057, lo: 0x80, hi: 0x8f},
+ {value: 0x0083, lo: 0x90, hi: 0xa9},
+ {value: 0x0021, lo: 0xaa, hi: 0xaa},
+ // Block 0x47, offset 0x1bc
+ {value: 0x0000, lo: 0x01},
+ {value: 0x29a8, lo: 0x8c, hi: 0x8c},
+ // Block 0x48, offset 0x1be
+ {value: 0x0266, lo: 0x02},
+ {value: 0x1b92, lo: 0xb4, hi: 0xb4},
+ {value: 0x1930, lo: 0xb5, hi: 0xb6},
+ // Block 0x49, offset 0x1c1
+ {value: 0x0000, lo: 0x01},
+ {value: 0x44f4, lo: 0x9c, hi: 0x9c},
+ // Block 0x4a, offset 0x1c3
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0095, lo: 0xbc, hi: 0xbc},
+ {value: 0x006d, lo: 0xbd, hi: 0xbd},
+ // Block 0x4b, offset 0x1c6
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xaf, hi: 0xb1},
+ // Block 0x4c, offset 0x1c8
+ {value: 0x0000, lo: 0x02},
+ {value: 0x0482, lo: 0xaf, hi: 0xaf},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x4d, offset 0x1cb
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa0, hi: 0xbf},
+ // Block 0x4e, offset 0x1cd
+ {value: 0x0000, lo: 0x01},
+ {value: 0x0dc6, lo: 0x9f, hi: 0x9f},
+ // Block 0x4f, offset 0x1cf
+ {value: 0x0000, lo: 0x01},
+ {value: 0x1632, lo: 0xb3, hi: 0xb3},
+ // Block 0x50, offset 0x1d1
+ {value: 0x0004, lo: 0x0b},
+ {value: 0x159a, lo: 0x80, hi: 0x82},
+ {value: 0x15b2, lo: 0x83, hi: 0x83},
+ {value: 0x15ca, lo: 0x84, hi: 0x85},
+ {value: 0x15da, lo: 0x86, hi: 0x89},
+ {value: 0x15ee, lo: 0x8a, hi: 0x8c},
+ {value: 0x1602, lo: 0x8d, hi: 0x8d},
+ {value: 0x160a, lo: 0x8e, hi: 0x8e},
+ {value: 0x1612, lo: 0x8f, hi: 0x90},
+ {value: 0x161e, lo: 0x91, hi: 0x93},
+ {value: 0x162e, lo: 0x94, hi: 0x94},
+ {value: 0x1636, lo: 0x95, hi: 0x95},
+ // Block 0x51, offset 0x1dd
+ {value: 0x0004, lo: 0x09},
+ {value: 0x0001, lo: 0x80, hi: 0x80},
+ {value: 0x812d, lo: 0xaa, hi: 0xaa},
+ {value: 0x8132, lo: 0xab, hi: 0xab},
+ {value: 0x8134, lo: 0xac, hi: 0xac},
+ {value: 0x812f, lo: 0xad, hi: 0xad},
+ {value: 0x8130, lo: 0xae, hi: 0xae},
+ {value: 0x8130, lo: 0xaf, hi: 0xaf},
+ {value: 0x04b6, lo: 0xb6, hi: 0xb6},
+ {value: 0x088a, lo: 0xb8, hi: 0xba},
+ // Block 0x52, offset 0x1e7
+ {value: 0x0006, lo: 0x09},
+ {value: 0x0316, lo: 0xb1, hi: 0xb1},
+ {value: 0x031a, lo: 0xb2, hi: 0xb2},
+ {value: 0x4a52, lo: 0xb3, hi: 0xb3},
+ {value: 0x031e, lo: 0xb4, hi: 0xb4},
+ {value: 0x4a58, lo: 0xb5, hi: 0xb6},
+ {value: 0x0322, lo: 0xb7, hi: 0xb7},
+ {value: 0x0326, lo: 0xb8, hi: 0xb8},
+ {value: 0x032a, lo: 0xb9, hi: 0xb9},
+ {value: 0x4a64, lo: 0xba, hi: 0xbf},
+ // Block 0x53, offset 0x1f1
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xaf, hi: 0xaf},
+ {value: 0x8133, lo: 0xb4, hi: 0xbd},
+ // Block 0x54, offset 0x1f4
+ {value: 0x0000, lo: 0x03},
+ {value: 0x0212, lo: 0x9c, hi: 0x9c},
+ {value: 0x0215, lo: 0x9d, hi: 0x9d},
+ {value: 0x8133, lo: 0x9e, hi: 0x9f},
+ // Block 0x55, offset 0x1f8
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb1},
+ // Block 0x56, offset 0x1fa
+ {value: 0x0000, lo: 0x01},
+ {value: 0x163e, lo: 0xb0, hi: 0xb0},
+ // Block 0x57, offset 0x1fc
+ {value: 0x000c, lo: 0x01},
+ {value: 0x00d7, lo: 0xb8, hi: 0xb9},
+ // Block 0x58, offset 0x1fe
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xac, hi: 0xac},
+ // Block 0x59, offset 0x201
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x84, hi: 0x84},
+ {value: 0x8133, lo: 0xa0, hi: 0xb1},
+ // Block 0x5a, offset 0x204
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xab, hi: 0xad},
+ // Block 0x5b, offset 0x206
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x93, hi: 0x93},
+ // Block 0x5c, offset 0x208
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0xb3, hi: 0xb3},
+ // Block 0x5d, offset 0x20a
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ // Block 0x5e, offset 0x20c
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0xb0, hi: 0xb0},
+ {value: 0x8133, lo: 0xb2, hi: 0xb3},
+ {value: 0x812e, lo: 0xb4, hi: 0xb4},
+ {value: 0x8133, lo: 0xb7, hi: 0xb8},
+ {value: 0x8133, lo: 0xbe, hi: 0xbf},
+ // Block 0x5f, offset 0x212
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x81, hi: 0x81},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ // Block 0x60, offset 0x215
+ {value: 0x0008, lo: 0x04},
+ {value: 0x163a, lo: 0x9c, hi: 0x9d},
+ {value: 0x0125, lo: 0x9e, hi: 0x9e},
+ {value: 0x1646, lo: 0x9f, hi: 0x9f},
+ {value: 0x015e, lo: 0xa9, hi: 0xa9},
+ // Block 0x61, offset 0x21a
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xad, hi: 0xad},
+ // Block 0x62, offset 0x21c
+ {value: 0x0000, lo: 0x06},
+ {value: 0xe500, lo: 0x80, hi: 0x80},
+ {value: 0xc600, lo: 0x81, hi: 0x9b},
+ {value: 0xe500, lo: 0x9c, hi: 0x9c},
+ {value: 0xc600, lo: 0x9d, hi: 0xb7},
+ {value: 0xe500, lo: 0xb8, hi: 0xb8},
+ {value: 0xc600, lo: 0xb9, hi: 0xbf},
+ // Block 0x63, offset 0x223
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x93},
+ {value: 0xe500, lo: 0x94, hi: 0x94},
+ {value: 0xc600, lo: 0x95, hi: 0xaf},
+ {value: 0xe500, lo: 0xb0, hi: 0xb0},
+ {value: 0xc600, lo: 0xb1, hi: 0xbf},
+ // Block 0x64, offset 0x229
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8b},
+ {value: 0xe500, lo: 0x8c, hi: 0x8c},
+ {value: 0xc600, lo: 0x8d, hi: 0xa7},
+ {value: 0xe500, lo: 0xa8, hi: 0xa8},
+ {value: 0xc600, lo: 0xa9, hi: 0xbf},
+ // Block 0x65, offset 0x22f
+ {value: 0x0000, lo: 0x07},
+ {value: 0xc600, lo: 0x80, hi: 0x83},
+ {value: 0xe500, lo: 0x84, hi: 0x84},
+ {value: 0xc600, lo: 0x85, hi: 0x9f},
+ {value: 0xe500, lo: 0xa0, hi: 0xa0},
+ {value: 0xc600, lo: 0xa1, hi: 0xbb},
+ {value: 0xe500, lo: 0xbc, hi: 0xbc},
+ {value: 0xc600, lo: 0xbd, hi: 0xbf},
+ // Block 0x66, offset 0x237
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x97},
+ {value: 0xe500, lo: 0x98, hi: 0x98},
+ {value: 0xc600, lo: 0x99, hi: 0xb3},
+ {value: 0xe500, lo: 0xb4, hi: 0xb4},
+ {value: 0xc600, lo: 0xb5, hi: 0xbf},
+ // Block 0x67, offset 0x23d
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x8f},
+ {value: 0xe500, lo: 0x90, hi: 0x90},
+ {value: 0xc600, lo: 0x91, hi: 0xab},
+ {value: 0xe500, lo: 0xac, hi: 0xac},
+ {value: 0xc600, lo: 0xad, hi: 0xbf},
+ // Block 0x68, offset 0x243
+ {value: 0x0000, lo: 0x05},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ {value: 0xe500, lo: 0xa4, hi: 0xa4},
+ {value: 0xc600, lo: 0xa5, hi: 0xbf},
+ // Block 0x69, offset 0x249
+ {value: 0x0000, lo: 0x03},
+ {value: 0xc600, lo: 0x80, hi: 0x87},
+ {value: 0xe500, lo: 0x88, hi: 0x88},
+ {value: 0xc600, lo: 0x89, hi: 0xa3},
+ // Block 0x6a, offset 0x24d
+ {value: 0x0002, lo: 0x01},
+ {value: 0x0003, lo: 0x81, hi: 0xbf},
+ // Block 0x6b, offset 0x24f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xbd, hi: 0xbd},
+ // Block 0x6c, offset 0x251
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0xa0, hi: 0xa0},
+ // Block 0x6d, offset 0x253
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb6, hi: 0xba},
+ // Block 0x6e, offset 0x255
+ {value: 0x002d, lo: 0x05},
+ {value: 0x812e, lo: 0x8d, hi: 0x8d},
+ {value: 0x8133, lo: 0x8f, hi: 0x8f},
+ {value: 0x8133, lo: 0xb8, hi: 0xb8},
+ {value: 0x8101, lo: 0xb9, hi: 0xba},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x6f, offset 0x25b
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0xa5, hi: 0xa5},
+ {value: 0x812e, lo: 0xa6, hi: 0xa6},
+ // Block 0x70, offset 0x25e
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xa4, hi: 0xa7},
+ // Block 0x71, offset 0x260
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xab, hi: 0xac},
+ // Block 0x72, offset 0x262
+ {value: 0x0000, lo: 0x05},
+ {value: 0x812e, lo: 0x86, hi: 0x87},
+ {value: 0x8133, lo: 0x88, hi: 0x8a},
+ {value: 0x812e, lo: 0x8b, hi: 0x8b},
+ {value: 0x8133, lo: 0x8c, hi: 0x8c},
+ {value: 0x812e, lo: 0x8d, hi: 0x90},
+ // Block 0x73, offset 0x268
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x86, hi: 0x86},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x74, offset 0x26b
+ {value: 0x17fe, lo: 0x07},
+ {value: 0xa000, lo: 0x99, hi: 0x99},
+ {value: 0x424f, lo: 0x9a, hi: 0x9a},
+ {value: 0xa000, lo: 0x9b, hi: 0x9b},
+ {value: 0x4259, lo: 0x9c, hi: 0x9c},
+ {value: 0xa000, lo: 0xa5, hi: 0xa5},
+ {value: 0x4263, lo: 0xab, hi: 0xab},
+ {value: 0x8105, lo: 0xb9, hi: 0xba},
+ // Block 0x75, offset 0x273
+ {value: 0x0000, lo: 0x06},
+ {value: 0x8133, lo: 0x80, hi: 0x82},
+ {value: 0x9900, lo: 0xa7, hi: 0xa7},
+ {value: 0x2d8b, lo: 0xae, hi: 0xae},
+ {value: 0x2d95, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb1, hi: 0xb2},
+ {value: 0x8105, lo: 0xb3, hi: 0xb4},
+ // Block 0x76, offset 0x27a
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x80, hi: 0x80},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0x77, offset 0x27d
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb5, hi: 0xb5},
+ {value: 0x8103, lo: 0xb6, hi: 0xb6},
+ // Block 0x78, offset 0x280
+ {value: 0x0002, lo: 0x01},
+ {value: 0x8103, lo: 0xa9, hi: 0xaa},
+ // Block 0x79, offset 0x282
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0xbb, hi: 0xbc},
+ {value: 0x9900, lo: 0xbe, hi: 0xbe},
+ // Block 0x7a, offset 0x285
+ {value: 0x0000, lo: 0x07},
+ {value: 0xa000, lo: 0x87, hi: 0x87},
+ {value: 0x2d9f, lo: 0x8b, hi: 0x8b},
+ {value: 0x2da9, lo: 0x8c, hi: 0x8c},
+ {value: 0x8105, lo: 0x8d, hi: 0x8d},
+ {value: 0x9900, lo: 0x97, hi: 0x97},
+ {value: 0x8133, lo: 0xa6, hi: 0xac},
+ {value: 0x8133, lo: 0xb0, hi: 0xb4},
+ // Block 0x7b, offset 0x28d
+ {value: 0x0000, lo: 0x03},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x86, hi: 0x86},
+ {value: 0x8133, lo: 0x9e, hi: 0x9e},
+ // Block 0x7c, offset 0x291
+ {value: 0x6b4d, lo: 0x06},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb9, hi: 0xb9},
+ {value: 0x9900, lo: 0xba, hi: 0xba},
+ {value: 0x2dbd, lo: 0xbb, hi: 0xbb},
+ {value: 0x2db3, lo: 0xbc, hi: 0xbd},
+ {value: 0x2dc7, lo: 0xbe, hi: 0xbe},
+ // Block 0x7d, offset 0x298
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0x82, hi: 0x82},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x7e, offset 0x29b
+ {value: 0x0000, lo: 0x05},
+ {value: 0x9900, lo: 0xaf, hi: 0xaf},
+ {value: 0xa000, lo: 0xb8, hi: 0xb9},
+ {value: 0x2dd1, lo: 0xba, hi: 0xba},
+ {value: 0x2ddb, lo: 0xbb, hi: 0xbb},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x7f, offset 0x2a1
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x80, hi: 0x80},
+ // Block 0x80, offset 0x2a3
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xbf, hi: 0xbf},
+ // Block 0x81, offset 0x2a5
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb6, hi: 0xb6},
+ {value: 0x8103, lo: 0xb7, hi: 0xb7},
+ // Block 0x82, offset 0x2a8
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xab, hi: 0xab},
+ // Block 0x83, offset 0x2aa
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8105, lo: 0xb9, hi: 0xb9},
+ {value: 0x8103, lo: 0xba, hi: 0xba},
+ // Block 0x84, offset 0x2ad
+ {value: 0x0000, lo: 0x04},
+ {value: 0x9900, lo: 0xb0, hi: 0xb0},
+ {value: 0xa000, lo: 0xb5, hi: 0xb5},
+ {value: 0x2de5, lo: 0xb8, hi: 0xb8},
+ {value: 0x8105, lo: 0xbd, hi: 0xbe},
+ // Block 0x85, offset 0x2b2
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8103, lo: 0x83, hi: 0x83},
+ // Block 0x86, offset 0x2b4
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xa0, hi: 0xa0},
+ // Block 0x87, offset 0x2b6
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0xb4, hi: 0xb4},
+ // Block 0x88, offset 0x2b8
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x87, hi: 0x87},
+ // Block 0x89, offset 0x2ba
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x99, hi: 0x99},
+ // Block 0x8a, offset 0x2bc
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8103, lo: 0x82, hi: 0x82},
+ {value: 0x8105, lo: 0x84, hi: 0x85},
+ // Block 0x8b, offset 0x2bf
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8105, lo: 0x97, hi: 0x97},
+ // Block 0x8c, offset 0x2c1
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0xb0, hi: 0xb4},
+ // Block 0x8d, offset 0x2c3
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xb0, hi: 0xb6},
+ // Block 0x8e, offset 0x2c5
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8102, lo: 0xb0, hi: 0xb1},
+ // Block 0x8f, offset 0x2c7
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8101, lo: 0x9e, hi: 0x9e},
+ // Block 0x90, offset 0x2c9
+ {value: 0x0000, lo: 0x0c},
+ {value: 0x45e3, lo: 0x9e, hi: 0x9e},
+ {value: 0x45ed, lo: 0x9f, hi: 0x9f},
+ {value: 0x4621, lo: 0xa0, hi: 0xa0},
+ {value: 0x462f, lo: 0xa1, hi: 0xa1},
+ {value: 0x463d, lo: 0xa2, hi: 0xa2},
+ {value: 0x464b, lo: 0xa3, hi: 0xa3},
+ {value: 0x4659, lo: 0xa4, hi: 0xa4},
+ {value: 0x812c, lo: 0xa5, hi: 0xa6},
+ {value: 0x8101, lo: 0xa7, hi: 0xa9},
+ {value: 0x8131, lo: 0xad, hi: 0xad},
+ {value: 0x812c, lo: 0xae, hi: 0xb2},
+ {value: 0x812e, lo: 0xbb, hi: 0xbf},
+ // Block 0x91, offset 0x2d6
+ {value: 0x0000, lo: 0x09},
+ {value: 0x812e, lo: 0x80, hi: 0x82},
+ {value: 0x8133, lo: 0x85, hi: 0x89},
+ {value: 0x812e, lo: 0x8a, hi: 0x8b},
+ {value: 0x8133, lo: 0xaa, hi: 0xad},
+ {value: 0x45f7, lo: 0xbb, hi: 0xbb},
+ {value: 0x4601, lo: 0xbc, hi: 0xbc},
+ {value: 0x4667, lo: 0xbd, hi: 0xbd},
+ {value: 0x4683, lo: 0xbe, hi: 0xbe},
+ {value: 0x4675, lo: 0xbf, hi: 0xbf},
+ // Block 0x92, offset 0x2e0
+ {value: 0x0000, lo: 0x01},
+ {value: 0x4691, lo: 0x80, hi: 0x80},
+ // Block 0x93, offset 0x2e2
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0x82, hi: 0x84},
+ // Block 0x94, offset 0x2e4
+ {value: 0x0002, lo: 0x03},
+ {value: 0x0043, lo: 0x80, hi: 0x99},
+ {value: 0x0083, lo: 0x9a, hi: 0xb3},
+ {value: 0x0043, lo: 0xb4, hi: 0xbf},
+ // Block 0x95, offset 0x2e8
+ {value: 0x0002, lo: 0x04},
+ {value: 0x005b, lo: 0x80, hi: 0x8d},
+ {value: 0x0083, lo: 0x8e, hi: 0x94},
+ {value: 0x0093, lo: 0x96, hi: 0xa7},
+ {value: 0x0043, lo: 0xa8, hi: 0xbf},
+ // Block 0x96, offset 0x2ed
+ {value: 0x0002, lo: 0x0b},
+ {value: 0x0073, lo: 0x80, hi: 0x81},
+ {value: 0x0083, lo: 0x82, hi: 0x9b},
+ {value: 0x0043, lo: 0x9c, hi: 0x9c},
+ {value: 0x0047, lo: 0x9e, hi: 0x9f},
+ {value: 0x004f, lo: 0xa2, hi: 0xa2},
+ {value: 0x0055, lo: 0xa5, hi: 0xa6},
+ {value: 0x005d, lo: 0xa9, hi: 0xac},
+ {value: 0x0067, lo: 0xae, hi: 0xb5},
+ {value: 0x0083, lo: 0xb6, hi: 0xb9},
+ {value: 0x008d, lo: 0xbb, hi: 0xbb},
+ {value: 0x0091, lo: 0xbd, hi: 0xbf},
+ // Block 0x97, offset 0x2f9
+ {value: 0x0002, lo: 0x04},
+ {value: 0x0097, lo: 0x80, hi: 0x83},
+ {value: 0x00a1, lo: 0x85, hi: 0x8f},
+ {value: 0x0043, lo: 0x90, hi: 0xa9},
+ {value: 0x0083, lo: 0xaa, hi: 0xbf},
+ // Block 0x98, offset 0x2fe
+ {value: 0x0002, lo: 0x08},
+ {value: 0x00af, lo: 0x80, hi: 0x83},
+ {value: 0x0043, lo: 0x84, hi: 0x85},
+ {value: 0x0049, lo: 0x87, hi: 0x8a},
+ {value: 0x0055, lo: 0x8d, hi: 0x94},
+ {value: 0x0067, lo: 0x96, hi: 0x9c},
+ {value: 0x0083, lo: 0x9e, hi: 0xb7},
+ {value: 0x0043, lo: 0xb8, hi: 0xb9},
+ {value: 0x0049, lo: 0xbb, hi: 0xbe},
+ // Block 0x99, offset 0x307
+ {value: 0x0002, lo: 0x05},
+ {value: 0x0053, lo: 0x80, hi: 0x84},
+ {value: 0x005f, lo: 0x86, hi: 0x86},
+ {value: 0x0067, lo: 0x8a, hi: 0x90},
+ {value: 0x0083, lo: 0x92, hi: 0xab},
+ {value: 0x0043, lo: 0xac, hi: 0xbf},
+ // Block 0x9a, offset 0x30d
+ {value: 0x0002, lo: 0x04},
+ {value: 0x006b, lo: 0x80, hi: 0x85},
+ {value: 0x0083, lo: 0x86, hi: 0x9f},
+ {value: 0x0043, lo: 0xa0, hi: 0xb9},
+ {value: 0x0083, lo: 0xba, hi: 0xbf},
+ // Block 0x9b, offset 0x312
+ {value: 0x0002, lo: 0x03},
+ {value: 0x008f, lo: 0x80, hi: 0x93},
+ {value: 0x0043, lo: 0x94, hi: 0xad},
+ {value: 0x0083, lo: 0xae, hi: 0xbf},
+ // Block 0x9c, offset 0x316
+ {value: 0x0002, lo: 0x04},
+ {value: 0x00a7, lo: 0x80, hi: 0x87},
+ {value: 0x0043, lo: 0x88, hi: 0xa1},
+ {value: 0x0083, lo: 0xa2, hi: 0xbb},
+ {value: 0x0043, lo: 0xbc, hi: 0xbf},
+ // Block 0x9d, offset 0x31b
+ {value: 0x0002, lo: 0x03},
+ {value: 0x004b, lo: 0x80, hi: 0x95},
+ {value: 0x0083, lo: 0x96, hi: 0xaf},
+ {value: 0x0043, lo: 0xb0, hi: 0xbf},
+ // Block 0x9e, offset 0x31f
+ {value: 0x0003, lo: 0x0f},
+ {value: 0x01bb, lo: 0x80, hi: 0x80},
+ {value: 0x0462, lo: 0x81, hi: 0x81},
+ {value: 0x01be, lo: 0x82, hi: 0x9a},
+ {value: 0x045e, lo: 0x9b, hi: 0x9b},
+ {value: 0x01ca, lo: 0x9c, hi: 0x9c},
+ {value: 0x01d3, lo: 0x9d, hi: 0x9d},
+ {value: 0x01d9, lo: 0x9e, hi: 0x9e},
+ {value: 0x01fd, lo: 0x9f, hi: 0x9f},
+ {value: 0x01ee, lo: 0xa0, hi: 0xa0},
+ {value: 0x01eb, lo: 0xa1, hi: 0xa1},
+ {value: 0x0176, lo: 0xa2, hi: 0xb2},
+ {value: 0x018b, lo: 0xb3, hi: 0xb3},
+ {value: 0x01a9, lo: 0xb4, hi: 0xba},
+ {value: 0x0462, lo: 0xbb, hi: 0xbb},
+ {value: 0x01be, lo: 0xbc, hi: 0xbf},
+ // Block 0x9f, offset 0x32f
+ {value: 0x0003, lo: 0x0d},
+ {value: 0x01ca, lo: 0x80, hi: 0x94},
+ {value: 0x045e, lo: 0x95, hi: 0x95},
+ {value: 0x01ca, lo: 0x96, hi: 0x96},
+ {value: 0x01d3, lo: 0x97, hi: 0x97},
+ {value: 0x01d9, lo: 0x98, hi: 0x98},
+ {value: 0x01fd, lo: 0x99, hi: 0x99},
+ {value: 0x01ee, lo: 0x9a, hi: 0x9a},
+ {value: 0x01eb, lo: 0x9b, hi: 0x9b},
+ {value: 0x0176, lo: 0x9c, hi: 0xac},
+ {value: 0x018b, lo: 0xad, hi: 0xad},
+ {value: 0x01a9, lo: 0xae, hi: 0xb4},
+ {value: 0x0462, lo: 0xb5, hi: 0xb5},
+ {value: 0x01be, lo: 0xb6, hi: 0xbf},
+ // Block 0xa0, offset 0x33d
+ {value: 0x0003, lo: 0x0d},
+ {value: 0x01dc, lo: 0x80, hi: 0x8e},
+ {value: 0x045e, lo: 0x8f, hi: 0x8f},
+ {value: 0x01ca, lo: 0x90, hi: 0x90},
+ {value: 0x01d3, lo: 0x91, hi: 0x91},
+ {value: 0x01d9, lo: 0x92, hi: 0x92},
+ {value: 0x01fd, lo: 0x93, hi: 0x93},
+ {value: 0x01ee, lo: 0x94, hi: 0x94},
+ {value: 0x01eb, lo: 0x95, hi: 0x95},
+ {value: 0x0176, lo: 0x96, hi: 0xa6},
+ {value: 0x018b, lo: 0xa7, hi: 0xa7},
+ {value: 0x01a9, lo: 0xa8, hi: 0xae},
+ {value: 0x0462, lo: 0xaf, hi: 0xaf},
+ {value: 0x01be, lo: 0xb0, hi: 0xbf},
+ // Block 0xa1, offset 0x34b
+ {value: 0x0003, lo: 0x0d},
+ {value: 0x01ee, lo: 0x80, hi: 0x88},
+ {value: 0x045e, lo: 0x89, hi: 0x89},
+ {value: 0x01ca, lo: 0x8a, hi: 0x8a},
+ {value: 0x01d3, lo: 0x8b, hi: 0x8b},
+ {value: 0x01d9, lo: 0x8c, hi: 0x8c},
+ {value: 0x01fd, lo: 0x8d, hi: 0x8d},
+ {value: 0x01ee, lo: 0x8e, hi: 0x8e},
+ {value: 0x01eb, lo: 0x8f, hi: 0x8f},
+ {value: 0x0176, lo: 0x90, hi: 0xa0},
+ {value: 0x018b, lo: 0xa1, hi: 0xa1},
+ {value: 0x01a9, lo: 0xa2, hi: 0xa8},
+ {value: 0x0462, lo: 0xa9, hi: 0xa9},
+ {value: 0x01be, lo: 0xaa, hi: 0xbf},
+ // Block 0xa2, offset 0x359
+ {value: 0x0000, lo: 0x05},
+ {value: 0x8133, lo: 0x80, hi: 0x86},
+ {value: 0x8133, lo: 0x88, hi: 0x98},
+ {value: 0x8133, lo: 0x9b, hi: 0xa1},
+ {value: 0x8133, lo: 0xa3, hi: 0xa4},
+ {value: 0x8133, lo: 0xa6, hi: 0xaa},
+ // Block 0xa3, offset 0x35f
+ {value: 0x0000, lo: 0x01},
+ {value: 0x8133, lo: 0xac, hi: 0xaf},
+ // Block 0xa4, offset 0x361
+ {value: 0x0000, lo: 0x01},
+ {value: 0x812e, lo: 0x90, hi: 0x96},
+ // Block 0xa5, offset 0x363
+ {value: 0x0000, lo: 0x02},
+ {value: 0x8133, lo: 0x84, hi: 0x89},
+ {value: 0x8103, lo: 0x8a, hi: 0x8a},
+ // Block 0xa6, offset 0x366
+ {value: 0x0002, lo: 0x0a},
+ {value: 0x0063, lo: 0x80, hi: 0x89},
+ {value: 0x1954, lo: 0x8a, hi: 0x8a},
+ {value: 0x1987, lo: 0x8b, hi: 0x8b},
+ {value: 0x19a2, lo: 0x8c, hi: 0x8c},
+ {value: 0x19a8, lo: 0x8d, hi: 0x8d},
+ {value: 0x1bc6, lo: 0x8e, hi: 0x8e},
+ {value: 0x19b4, lo: 0x8f, hi: 0x8f},
+ {value: 0x197e, lo: 0xaa, hi: 0xaa},
+ {value: 0x1981, lo: 0xab, hi: 0xab},
+ {value: 0x1984, lo: 0xac, hi: 0xac},
+ // Block 0xa7, offset 0x371
+ {value: 0x0000, lo: 0x01},
+ {value: 0x1942, lo: 0x90, hi: 0x90},
+ // Block 0xa8, offset 0x373
+ {value: 0x0028, lo: 0x09},
+ {value: 0x286f, lo: 0x80, hi: 0x80},
+ {value: 0x2833, lo: 0x81, hi: 0x81},
+ {value: 0x283d, lo: 0x82, hi: 0x82},
+ {value: 0x2851, lo: 0x83, hi: 0x84},
+ {value: 0x285b, lo: 0x85, hi: 0x86},
+ {value: 0x2847, lo: 0x87, hi: 0x87},
+ {value: 0x2865, lo: 0x88, hi: 0x88},
+ {value: 0x0b72, lo: 0x90, hi: 0x90},
+ {value: 0x08ea, lo: 0x91, hi: 0x91},
+ // Block 0xa9, offset 0x37d
+ {value: 0x0002, lo: 0x01},
+ {value: 0x0021, lo: 0xb0, hi: 0xb9},
+}
+
+// recompMap: 7528 bytes (entries only)
+var recompMap map[uint32]rune
+var recompMapOnce sync.Once
+
+const recompMapPacked = "" +
+ "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0
+ "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1
+ "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2
+ "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3
+ "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4
+ "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5
+ "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7
+ "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8
+ "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9
+ "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA
+ "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB
+ "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC
+ "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD
+ "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE
+ "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF
+ "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1
+ "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2
+ "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3
+ "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4
+ "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5
+ "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6
+ "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9
+ "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA
+ "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB
+ "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC
+ "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD
+ "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0
+ "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1
+ "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2
+ "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3
+ "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4
+ "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5
+ "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7
+ "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8
+ "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9
+ "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA
+ "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB
+ "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC
+ "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED
+ "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE
+ "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF
+ "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1
+ "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2
+ "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3
+ "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4
+ "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5
+ "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6
+ "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9
+ "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA
+ "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB
+ "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC
+ "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD
+ "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF
+ "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100
+ "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101
+ "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102
+ "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103
+ "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104
+ "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105
+ "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106
+ "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107
+ "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108
+ "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109
+ "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A
+ "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B
+ "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C
+ "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D
+ "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E
+ "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F
+ "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112
+ "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113
+ "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114
+ "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115
+ "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116
+ "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117
+ "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118
+ "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119
+ "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A
+ "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B
+ "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C
+ "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D
+ "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E
+ "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F
+ "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120
+ "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121
+ "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122
+ "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123
+ "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124
+ "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125
+ "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128
+ "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129
+ "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A
+ "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B
+ "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C
+ "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D
+ "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E
+ "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F
+ "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130
+ "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134
+ "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135
+ "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136
+ "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137
+ "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139
+ "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A
+ "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B
+ "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C
+ "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D
+ "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E
+ "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143
+ "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144
+ "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145
+ "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146
+ "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147
+ "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148
+ "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C
+ "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D
+ "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E
+ "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F
+ "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150
+ "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151
+ "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154
+ "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155
+ "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156
+ "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157
+ "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158
+ "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159
+ "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A
+ "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B
+ "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C
+ "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D
+ "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E
+ "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F
+ "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160
+ "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161
+ "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162
+ "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163
+ "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164
+ "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165
+ "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168
+ "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169
+ "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A
+ "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B
+ "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C
+ "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D
+ "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E
+ "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F
+ "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170
+ "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171
+ "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172
+ "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173
+ "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174
+ "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175
+ "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176
+ "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177
+ "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178
+ "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179
+ "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A
+ "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B
+ "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C
+ "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D
+ "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E
+ "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0
+ "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1
+ "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF
+ "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0
+ "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD
+ "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE
+ "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF
+ "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0
+ "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1
+ "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2
+ "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3
+ "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4
+ "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5
+ "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6
+ "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7
+ "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8
+ "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9
+ "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA
+ "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB
+ "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC
+ "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE
+ "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF
+ "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0
+ "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1
+ "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2
+ "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3
+ "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6
+ "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7
+ "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8
+ "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9
+ "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA
+ "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB
+ "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC
+ "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED
+ "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE
+ "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF
+ "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0
+ "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4
+ "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5
+ "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8
+ "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9
+ "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA
+ "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB
+ "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC
+ "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD
+ "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE
+ "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF
+ "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200
+ "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201
+ "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202
+ "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203
+ "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204
+ "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205
+ "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206
+ "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207
+ "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208
+ "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209
+ "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A
+ "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B
+ "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C
+ "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D
+ "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E
+ "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F
+ "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210
+ "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211
+ "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212
+ "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213
+ "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214
+ "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215
+ "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216
+ "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217
+ "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218
+ "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219
+ "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A
+ "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B
+ "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E
+ "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F
+ "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226
+ "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227
+ "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228
+ "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229
+ "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A
+ "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B
+ "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C
+ "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D
+ "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E
+ "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F
+ "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230
+ "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231
+ "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232
+ "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233
+ "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385
+ "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386
+ "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388
+ "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389
+ "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A
+ "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C
+ "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E
+ "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F
+ "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390
+ "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA
+ "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB
+ "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC
+ "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD
+ "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE
+ "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF
+ "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0
+ "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA
+ "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB
+ "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC
+ "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD
+ "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE
+ "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3
+ "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4
+ "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400
+ "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401
+ "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403
+ "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407
+ "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C
+ "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D
+ "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E
+ "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419
+ "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439
+ "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450
+ "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451
+ "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453
+ "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457
+ "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C
+ "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D
+ "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E
+ "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476
+ "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477
+ "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1
+ "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2
+ "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0
+ "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1
+ "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2
+ "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3
+ "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6
+ "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7
+ "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA
+ "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB
+ "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC
+ "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD
+ "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE
+ "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF
+ "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2
+ "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3
+ "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4
+ "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5
+ "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6
+ "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7
+ "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA
+ "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB
+ "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC
+ "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED
+ "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE
+ "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF
+ "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0
+ "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1
+ "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2
+ "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3
+ "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4
+ "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5
+ "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8
+ "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9
+ "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622
+ "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623
+ "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624
+ "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625
+ "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626
+ "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0
+ "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2
+ "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3
+ "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929
+ "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931
+ "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934
+ "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB
+ "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC
+ "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48
+ "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B
+ "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C
+ "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94
+ "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA
+ "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB
+ "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC
+ "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48
+ "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0
+ "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7
+ "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8
+ "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA
+ "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB
+ "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A
+ "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B
+ "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C
+ "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA
+ "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC
+ "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD
+ "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE
+ "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026
+ "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06
+ "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08
+ "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A
+ "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C
+ "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E
+ "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12
+ "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B
+ "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D
+ "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40
+ "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41
+ "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43
+ "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00
+ "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01
+ "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02
+ "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03
+ "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04
+ "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05
+ "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06
+ "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07
+ "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08
+ "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09
+ "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A
+ "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B
+ "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C
+ "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D
+ "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E
+ "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F
+ "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10
+ "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11
+ "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12
+ "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13
+ "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14
+ "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15
+ "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16
+ "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17
+ "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18
+ "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19
+ "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A
+ "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B
+ "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C
+ "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D
+ "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E
+ "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F
+ "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20
+ "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21
+ "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22
+ "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23
+ "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24
+ "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25
+ "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26
+ "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27
+ "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28
+ "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29
+ "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A
+ "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B
+ "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C
+ "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D
+ "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E
+ "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F
+ "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30
+ "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31
+ "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32
+ "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33
+ "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34
+ "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35
+ "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36
+ "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37
+ "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38
+ "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39
+ "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A
+ "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B
+ "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C
+ "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D
+ "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E
+ "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F
+ "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40
+ "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41
+ "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42
+ "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43
+ "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44
+ "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45
+ "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46
+ "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47
+ "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48
+ "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49
+ "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A
+ "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B
+ "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C
+ "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D
+ "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E
+ "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F
+ "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50
+ "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51
+ "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52
+ "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53
+ "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54
+ "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55
+ "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56
+ "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57
+ "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58
+ "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59
+ "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A
+ "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B
+ "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C
+ "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D
+ "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E
+ "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F
+ "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60
+ "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61
+ "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62
+ "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63
+ "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64
+ "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65
+ "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66
+ "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67
+ "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68
+ "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69
+ "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A
+ "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B
+ "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C
+ "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D
+ "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E
+ "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F
+ "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70
+ "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71
+ "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72
+ "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73
+ "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74
+ "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75
+ "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76
+ "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77
+ "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78
+ "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79
+ "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A
+ "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B
+ "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C
+ "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D
+ "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E
+ "\x00v\x03#\x00\x00\x1e\u007f" + // 0x00760323: 0x00001E7F
+ "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80
+ "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81
+ "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82
+ "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83
+ "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84
+ "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85
+ "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86
+ "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87
+ "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88
+ "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89
+ "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A
+ "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B
+ "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C
+ "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D
+ "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E
+ "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F
+ "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90
+ "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91
+ "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92
+ "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93
+ "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94
+ "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95
+ "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96
+ "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97
+ "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98
+ "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99
+ "\x01\u007f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B
+ "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0
+ "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1
+ "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2
+ "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3
+ "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4
+ "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5
+ "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6
+ "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7
+ "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8
+ "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9
+ "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA
+ "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB
+ "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC
+ "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD
+ "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE
+ "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF
+ "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0
+ "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1
+ "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2
+ "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3
+ "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4
+ "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5
+ "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6
+ "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7
+ "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8
+ "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9
+ "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA
+ "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB
+ "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC
+ "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD
+ "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE
+ "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF
+ "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0
+ "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1
+ "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2
+ "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3
+ "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4
+ "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5
+ "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6
+ "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7
+ "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8
+ "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9
+ "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA
+ "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB
+ "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC
+ "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD
+ "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE
+ "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF
+ "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0
+ "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1
+ "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2
+ "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3
+ "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4
+ "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5
+ "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6
+ "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7
+ "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8
+ "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9
+ "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA
+ "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB
+ "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC
+ "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD
+ "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE
+ "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF
+ "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0
+ "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1
+ "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2
+ "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3
+ "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4
+ "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5
+ "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6
+ "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7
+ "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8
+ "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9
+ "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA
+ "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB
+ "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC
+ "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED
+ "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE
+ "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF
+ "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0
+ "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1
+ "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2
+ "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3
+ "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4
+ "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5
+ "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6
+ "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7
+ "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8
+ "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9
+ "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00
+ "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01
+ "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02
+ "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03
+ "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04
+ "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05
+ "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06
+ "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07
+ "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08
+ "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09
+ "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A
+ "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B
+ "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C
+ "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D
+ "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E
+ "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F
+ "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10
+ "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11
+ "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12
+ "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13
+ "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14
+ "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15
+ "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18
+ "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19
+ "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A
+ "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B
+ "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C
+ "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D
+ "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20
+ "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21
+ "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22
+ "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23
+ "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24
+ "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25
+ "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26
+ "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27
+ "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28
+ "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29
+ "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A
+ "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B
+ "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C
+ "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D
+ "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E
+ "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F
+ "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30
+ "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31
+ "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32
+ "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33
+ "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34
+ "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35
+ "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36
+ "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37
+ "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38
+ "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39
+ "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A
+ "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B
+ "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C
+ "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D
+ "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E
+ "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F
+ "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40
+ "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41
+ "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42
+ "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43
+ "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44
+ "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45
+ "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48
+ "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49
+ "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A
+ "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B
+ "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C
+ "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D
+ "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50
+ "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51
+ "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52
+ "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53
+ "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54
+ "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55
+ "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56
+ "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57
+ "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59
+ "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B
+ "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D
+ "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F
+ "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60
+ "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61
+ "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62
+ "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63
+ "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64
+ "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65
+ "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66
+ "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67
+ "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68
+ "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69
+ "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A
+ "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B
+ "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C
+ "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D
+ "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E
+ "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F
+ "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70
+ "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72
+ "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74
+ "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76
+ "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78
+ "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A
+ "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C
+ "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80
+ "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81
+ "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82
+ "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83
+ "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84
+ "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85
+ "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86
+ "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87
+ "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88
+ "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89
+ "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A
+ "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B
+ "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C
+ "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D
+ "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E
+ "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F
+ "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90
+ "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91
+ "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92
+ "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93
+ "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94
+ "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95
+ "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96
+ "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97
+ "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98
+ "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99
+ "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A
+ "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B
+ "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C
+ "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D
+ "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E
+ "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F
+ "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0
+ "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1
+ "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2
+ "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3
+ "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4
+ "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5
+ "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6
+ "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7
+ "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8
+ "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9
+ "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA
+ "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB
+ "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC
+ "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD
+ "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE
+ "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF
+ "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0
+ "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1
+ "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2
+ "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3
+ "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4
+ "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6
+ "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7
+ "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8
+ "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9
+ "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA
+ "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC
+ "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1
+ "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2
+ "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3
+ "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4
+ "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6
+ "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7
+ "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8
+ "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA
+ "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC
+ "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD
+ "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE
+ "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF
+ "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0
+ "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1
+ "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2
+ "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6
+ "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7
+ "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8
+ "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9
+ "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA
+ "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD
+ "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE
+ "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF
+ "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0
+ "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1
+ "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2
+ "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4
+ "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5
+ "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6
+ "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7
+ "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8
+ "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9
+ "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA
+ "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC
+ "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED
+ "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2
+ "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3
+ "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4
+ "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6
+ "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7
+ "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8
+ "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA
+ "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC
+ "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A
+ "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B
+ "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE
+ "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD
+ "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE
+ "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF
+ "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204
+ "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209
+ "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C
+ "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224
+ "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226
+ "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241
+ "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244
+ "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247
+ "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249
+ "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260
+ "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262
+ "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D
+ "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E
+ "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F
+ "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270
+ "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271
+ "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274
+ "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275
+ "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278
+ "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279
+ "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280
+ "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281
+ "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284
+ "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285
+ "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288
+ "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289
+ "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC
+ "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD
+ "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE
+ "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF
+ "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0
+ "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1
+ "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2
+ "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3
+ "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA
+ "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB
+ "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC
+ "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED
+ "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C
+ "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E
+ "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050
+ "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052
+ "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054
+ "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056
+ "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058
+ "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A
+ "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C
+ "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E
+ "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060
+ "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062
+ "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065
+ "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067
+ "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069
+ "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070
+ "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071
+ "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073
+ "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074
+ "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076
+ "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077
+ "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079
+ "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A
+ "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C
+ "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D
+ "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094
+ "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E
+ "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC
+ "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE
+ "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0
+ "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2
+ "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4
+ "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6
+ "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8
+ "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA
+ "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC
+ "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE
+ "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0
+ "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2
+ "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5
+ "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7
+ "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9
+ "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0
+ "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1
+ "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3
+ "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4
+ "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6
+ "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7
+ "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9
+ "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA
+ "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC
+ "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD
+ "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4
+ "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7
+ "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8
+ "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9
+ "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA
+ "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE
+ "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A
+ "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C
+ "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB
+ "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E
+ "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F
+ "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B
+ "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C
+ "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB
+ "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC
+ "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE
+ "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA
+ "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB
+ "\x195\x190\x00\x01\x198" + // 0x19351930: 0x00011938
+ ""
+ // Total size of tables: 55KB (56160 bytes)
diff --git a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go
index 94290692913..0175eae50aa 100644
--- a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go
+++ b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go
@@ -1,5 +1,6 @@
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
+//go:build !go1.10
// +build !go1.10
package norm
diff --git a/vendor/golang.org/x/tools/go/ast/astutil/util.go b/vendor/golang.org/x/tools/go/ast/astutil/util.go
index 7630629824a..919d5305ab4 100644
--- a/vendor/golang.org/x/tools/go/ast/astutil/util.go
+++ b/vendor/golang.org/x/tools/go/ast/astutil/util.go
@@ -1,3 +1,7 @@
+// 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 astutil
import "go/ast"
diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
index 8dcd8bbb71a..e8cba6b2375 100644
--- a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
+++ b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go
@@ -491,7 +491,7 @@ func (p *parser) parseMapType(parent *types.Package) types.Type {
//
// For unqualified and anonymous names, the returned package is the parent
// package unless parent == nil, in which case the returned package is the
-// package being imported. (The parent package is not nil if the the name
+// package being imported. (The parent package is not nil if the name
// is an unqualified struct field or interface method name belonging to a
// type declared in another package.)
//
diff --git a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
index dc6177c122d..f4d73b23391 100644
--- a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
+++ b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go
@@ -6,12 +6,9 @@
package packagesdriver
import (
- "bytes"
"context"
- "encoding/json"
"fmt"
"go/types"
- "os/exec"
"strings"
"golang.org/x/tools/internal/gocommand"
@@ -19,82 +16,17 @@ import (
var debug = false
-func GetSizes(ctx context.Context, buildFlags, env []string, gocmdRunner *gocommand.Runner, dir string) (types.Sizes, error) {
- // TODO(matloob): Clean this up. This code is mostly a copy of packages.findExternalDriver.
- const toolPrefix = "GOPACKAGESDRIVER="
- tool := ""
- for _, env := range env {
- if val := strings.TrimPrefix(env, toolPrefix); val != env {
- tool = val
- }
- }
-
- if tool == "" {
- var err error
- tool, err = exec.LookPath("gopackagesdriver")
- if err != nil {
- // We did not find the driver, so use "go list".
- tool = "off"
- }
- }
-
- if tool == "off" {
- return GetSizesGolist(ctx, buildFlags, env, gocmdRunner, dir)
- }
-
- req, err := json.Marshal(struct {
- Command string `json:"command"`
- Env []string `json:"env"`
- BuildFlags []string `json:"build_flags"`
- }{
- Command: "sizes",
- Env: env,
- BuildFlags: buildFlags,
- })
- if err != nil {
- return nil, fmt.Errorf("failed to encode message to driver tool: %v", err)
- }
-
- buf := new(bytes.Buffer)
- cmd := exec.CommandContext(ctx, tool)
- cmd.Dir = dir
- cmd.Env = env
- cmd.Stdin = bytes.NewReader(req)
- cmd.Stdout = buf
- cmd.Stderr = new(bytes.Buffer)
- if err := cmd.Run(); err != nil {
- return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr)
- }
- var response struct {
- // Sizes, if not nil, is the types.Sizes to use when type checking.
- Sizes *types.StdSizes
- }
- if err := json.Unmarshal(buf.Bytes(), &response); err != nil {
- return nil, err
- }
- return response.Sizes, nil
-}
-
-func GetSizesGolist(ctx context.Context, buildFlags, env []string, gocmdRunner *gocommand.Runner, dir string) (types.Sizes, error) {
- inv := gocommand.Invocation{
- Verb: "list",
- Args: []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"},
- Env: env,
- BuildFlags: buildFlags,
- WorkingDir: dir,
- }
+func GetSizesGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (types.Sizes, error) {
+ inv.Verb = "list"
+ inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"}
stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv)
var goarch, compiler string
if rawErr != nil {
if strings.Contains(rawErr.Error(), "cannot find main module") {
// User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc.
// TODO(matloob): Is this a problem in practice?
- inv := gocommand.Invocation{
- Verb: "env",
- Args: []string{"GOARCH"},
- Env: env,
- WorkingDir: dir,
- }
+ inv.Verb = "env"
+ inv.Args = []string{"GOARCH"}
envout, enverr := gocmdRunner.Run(ctx, inv)
if enverr != nil {
return nil, enverr
diff --git a/vendor/golang.org/x/tools/go/packages/external.go b/vendor/golang.org/x/tools/go/packages/external.go
index 8c8473fd0bd..7242a0a7d2b 100644
--- a/vendor/golang.org/x/tools/go/packages/external.go
+++ b/vendor/golang.org/x/tools/go/packages/external.go
@@ -12,8 +12,8 @@ import (
"bytes"
"encoding/json"
"fmt"
+ exec "golang.org/x/sys/execabs"
"os"
- "os/exec"
"strings"
)
@@ -89,7 +89,7 @@ func findExternalDriver(cfg *Config) driver {
return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr)
}
if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTDRIVERERRORS") != "" {
- fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd, words...), stderr)
+ fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd), stderr)
}
var response driverResponse
diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go
index bc04503c10a..ec417ba830e 100644
--- a/vendor/golang.org/x/tools/go/packages/golist.go
+++ b/vendor/golang.org/x/tools/go/packages/golist.go
@@ -10,9 +10,10 @@ import (
"encoding/json"
"fmt"
"go/types"
+ exec "golang.org/x/sys/execabs"
+ "io/ioutil"
"log"
"os"
- "os/exec"
"path"
"path/filepath"
"reflect"
@@ -91,7 +92,7 @@ type golistState struct {
goVersionOnce sync.Once
goVersionError error
- goVersion string // third field of 'go version'
+ goVersion int // The X in Go 1.X.
// vendorDirs caches the (non)existence of vendor directories.
vendorDirs map[string]bool
@@ -139,6 +140,12 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
response := newDeduper()
+ state := &golistState{
+ cfg: cfg,
+ ctx: ctx,
+ vendorDirs: map[string]bool{},
+ }
+
// Fill in response.Sizes asynchronously if necessary.
var sizeserr error
var sizeswg sync.WaitGroup
@@ -146,19 +153,13 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) {
sizeswg.Add(1)
go func() {
var sizes types.Sizes
- sizes, sizeserr = packagesdriver.GetSizesGolist(ctx, cfg.BuildFlags, cfg.Env, cfg.gocmdRunner, cfg.Dir)
+ sizes, sizeserr = packagesdriver.GetSizesGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner)
// types.SizesFor always returns nil or a *types.StdSizes.
response.dr.Sizes, _ = sizes.(*types.StdSizes)
sizeswg.Done()
}()
}
- state := &golistState{
- cfg: cfg,
- ctx: ctx,
- vendorDirs: map[string]bool{},
- }
-
// Determine files requested in contains patterns
var containFiles []string
restPatterns := make([]string, 0, len(patterns))
@@ -208,56 +209,58 @@ extractQueries:
}
}
- modifiedPkgs, needPkgs, err := state.processGolistOverlay(response)
- if err != nil {
- return nil, err
- }
+ // Only use go/packages' overlay processing if we're using a Go version
+ // below 1.16. Otherwise, go list handles it.
+ if goVersion, err := state.getGoVersion(); err == nil && goVersion < 16 {
+ modifiedPkgs, needPkgs, err := state.processGolistOverlay(response)
+ if err != nil {
+ return nil, err
+ }
- var containsCandidates []string
- if len(containFiles) > 0 {
- containsCandidates = append(containsCandidates, modifiedPkgs...)
- containsCandidates = append(containsCandidates, needPkgs...)
- }
- if err := state.addNeededOverlayPackages(response, needPkgs); err != nil {
- return nil, err
- }
- // Check candidate packages for containFiles.
- if len(containFiles) > 0 {
- for _, id := range containsCandidates {
- pkg, ok := response.seenPackages[id]
- if !ok {
- response.addPackage(&Package{
- ID: id,
- Errors: []Error{
- {
+ var containsCandidates []string
+ if len(containFiles) > 0 {
+ containsCandidates = append(containsCandidates, modifiedPkgs...)
+ containsCandidates = append(containsCandidates, needPkgs...)
+ }
+ if err := state.addNeededOverlayPackages(response, needPkgs); err != nil {
+ return nil, err
+ }
+ // Check candidate packages for containFiles.
+ if len(containFiles) > 0 {
+ for _, id := range containsCandidates {
+ pkg, ok := response.seenPackages[id]
+ if !ok {
+ response.addPackage(&Package{
+ ID: id,
+ Errors: []Error{{
Kind: ListError,
Msg: fmt.Sprintf("package %s expected but not seen", id),
- },
- },
- })
- continue
- }
- for _, f := range containFiles {
- for _, g := range pkg.GoFiles {
- if sameFile(f, g) {
- response.addRoot(id)
+ }},
+ })
+ continue
+ }
+ for _, f := range containFiles {
+ for _, g := range pkg.GoFiles {
+ if sameFile(f, g) {
+ response.addRoot(id)
+ }
}
}
}
}
- }
- // Add root for any package that matches a pattern. This applies only to
- // packages that are modified by overlays, since they are not added as
- // roots automatically.
- for _, pattern := range restPatterns {
- match := matchPattern(pattern)
- for _, pkgID := range modifiedPkgs {
- pkg, ok := response.seenPackages[pkgID]
- if !ok {
- continue
- }
- if match(pkg.PkgPath) {
- response.addRoot(pkg.ID)
+ // Add root for any package that matches a pattern. This applies only to
+ // packages that are modified by overlays, since they are not added as
+ // roots automatically.
+ for _, pattern := range restPatterns {
+ match := matchPattern(pattern)
+ for _, pkgID := range modifiedPkgs {
+ pkg, ok := response.seenPackages[pkgID]
+ if !ok {
+ continue
+ }
+ if match(pkg.PkgPath) {
+ response.addRoot(pkg.ID)
+ }
}
}
}
@@ -381,32 +384,34 @@ func (state *golistState) adhocPackage(pattern, query string) (*driverResponse,
// Fields must match go list;
// see $GOROOT/src/cmd/go/internal/load/pkg.go.
type jsonPackage struct {
- ImportPath string
- Dir string
- Name string
- Export string
- GoFiles []string
- CompiledGoFiles []string
- CFiles []string
- CgoFiles []string
- CXXFiles []string
- MFiles []string
- HFiles []string
- FFiles []string
- SFiles []string
- SwigFiles []string
- SwigCXXFiles []string
- SysoFiles []string
- Imports []string
- ImportMap map[string]string
- Deps []string
- Module *Module
- TestGoFiles []string
- TestImports []string
- XTestGoFiles []string
- XTestImports []string
- ForTest string // q in a "p [q.test]" package, else ""
- DepOnly bool
+ ImportPath string
+ Dir string
+ Name string
+ Export string
+ GoFiles []string
+ CompiledGoFiles []string
+ IgnoredGoFiles []string
+ IgnoredOtherFiles []string
+ CFiles []string
+ CgoFiles []string
+ CXXFiles []string
+ MFiles []string
+ HFiles []string
+ FFiles []string
+ SFiles []string
+ SwigFiles []string
+ SwigCXXFiles []string
+ SysoFiles []string
+ Imports []string
+ ImportMap map[string]string
+ Deps []string
+ Module *Module
+ TestGoFiles []string
+ TestImports []string
+ XTestGoFiles []string
+ XTestImports []string
+ ForTest string // q in a "p [q.test]" package, else ""
+ DepOnly bool
Error *jsonPackageError
}
@@ -558,6 +563,7 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse
GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles),
CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles),
OtherFiles: absJoin(p.Dir, otherFiles(p)...),
+ IgnoredFiles: absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles),
forTest: p.ForTest,
Module: p.Module,
}
@@ -728,7 +734,7 @@ func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool {
// On Go 1.14 and earlier, only add filenames from errors if the import stack is empty.
// The import stack behaves differently for these versions than newer Go versions.
- if strings.HasPrefix(goV, "go1.13") || strings.HasPrefix(goV, "go1.14") {
+ if goV < 15 {
return len(p.Error.ImportStack) == 0
}
@@ -739,31 +745,9 @@ func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool {
return len(p.Error.ImportStack) == 0 || p.Error.ImportStack[len(p.Error.ImportStack)-1] == p.ImportPath
}
-func (state *golistState) getGoVersion() (string, error) {
+func (state *golistState) getGoVersion() (int, error) {
state.goVersionOnce.Do(func() {
- var b *bytes.Buffer
- // Invoke go version. Don't use invokeGo because it will supply build flags, and
- // go version doesn't expect build flags.
- inv := gocommand.Invocation{
- Verb: "version",
- Env: state.cfg.Env,
- Logf: state.cfg.Logf,
- }
- gocmdRunner := state.cfg.gocmdRunner
- if gocmdRunner == nil {
- gocmdRunner = &gocommand.Runner{}
- }
- b, _, _, state.goVersionError = gocmdRunner.RunRaw(state.cfg.Context, inv)
- if state.goVersionError != nil {
- return
- }
-
- sp := strings.Split(b.String(), " ")
- if len(sp) < 3 {
- state.goVersionError = fmt.Errorf("go version output: expected 'go version ', got '%s'", b.String())
- return
- }
- state.goVersion = sp[2]
+ state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.cfg.gocmdRunner)
})
return state.goVersion, state.goVersionError
}
@@ -836,18 +820,47 @@ func golistargs(cfg *Config, words []string) []string {
return fullargs
}
-// invokeGo returns the stdout of a go command invocation.
-func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
+// cfgInvocation returns an Invocation that reflects cfg's settings.
+func (state *golistState) cfgInvocation() gocommand.Invocation {
cfg := state.cfg
-
- inv := gocommand.Invocation{
- Verb: verb,
- Args: args,
+ return gocommand.Invocation{
BuildFlags: cfg.BuildFlags,
+ ModFile: cfg.modFile,
+ ModFlag: cfg.modFlag,
+ CleanEnv: cfg.Env != nil,
Env: cfg.Env,
Logf: cfg.Logf,
WorkingDir: cfg.Dir,
}
+}
+
+// invokeGo returns the stdout of a go command invocation.
+func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, error) {
+ cfg := state.cfg
+
+ inv := state.cfgInvocation()
+
+ // For Go versions 1.16 and above, `go list` accepts overlays directly via
+ // the -overlay flag. Set it, if it's available.
+ //
+ // The check for "list" is not necessarily required, but we should avoid
+ // getting the go version if possible.
+ if verb == "list" {
+ goVersion, err := state.getGoVersion()
+ if err != nil {
+ return nil, err
+ }
+ if goVersion >= 16 {
+ filename, cleanup, err := state.writeOverlays()
+ if err != nil {
+ return nil, err
+ }
+ defer cleanup()
+ inv.Overlay = filename
+ }
+ }
+ inv.Verb = verb
+ inv.Args = args
gocmdRunner := cfg.gocmdRunner
if gocmdRunner == nil {
gocmdRunner = &gocommand.Runner{}
@@ -889,8 +902,13 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer,
return unicode.IsOneOf([]*unicode.RangeTable{unicode.L, unicode.M, unicode.N, unicode.P, unicode.S}, r) &&
!strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^`{|}\uFFFD", r)
}
+ // golang/go#36770: Handle case where cmd/go prints module download messages before the error.
+ msg := stderr.String()
+ for strings.HasPrefix(msg, "go: downloading") {
+ msg = msg[strings.IndexRune(msg, '\n')+1:]
+ }
if len(stderr.String()) > 0 && strings.HasPrefix(stderr.String(), "# ") {
- msg := stderr.String()[len("# "):]
+ msg := msg[len("# "):]
if strings.HasPrefix(strings.TrimLeftFunc(msg, isPkgPathRune), "\n") {
return stdout, nil
}
@@ -987,6 +1005,67 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer,
return stdout, nil
}
+// OverlayJSON is the format overlay files are expected to be in.
+// The Replace map maps from overlaid paths to replacement paths:
+// the Go command will forward all reads trying to open
+// each overlaid path to its replacement path, or consider the overlaid
+// path not to exist if the replacement path is empty.
+//
+// From golang/go#39958.
+type OverlayJSON struct {
+ Replace map[string]string `json:"replace,omitempty"`
+}
+
+// writeOverlays writes out files for go list's -overlay flag, as described
+// above.
+func (state *golistState) writeOverlays() (filename string, cleanup func(), err error) {
+ // Do nothing if there are no overlays in the config.
+ if len(state.cfg.Overlay) == 0 {
+ return "", func() {}, nil
+ }
+ dir, err := ioutil.TempDir("", "gopackages-*")
+ if err != nil {
+ return "", nil, err
+ }
+ // The caller must clean up this directory, unless this function returns an
+ // error.
+ cleanup = func() {
+ os.RemoveAll(dir)
+ }
+ defer func() {
+ if err != nil {
+ cleanup()
+ }
+ }()
+ overlays := map[string]string{}
+ for k, v := range state.cfg.Overlay {
+ // Create a unique filename for the overlaid files, to avoid
+ // creating nested directories.
+ noSeparator := strings.Join(strings.Split(filepath.ToSlash(k), "/"), "")
+ f, err := ioutil.TempFile(dir, fmt.Sprintf("*-%s", noSeparator))
+ if err != nil {
+ return "", func() {}, err
+ }
+ if _, err := f.Write(v); err != nil {
+ return "", func() {}, err
+ }
+ if err := f.Close(); err != nil {
+ return "", func() {}, err
+ }
+ overlays[k] = f.Name()
+ }
+ b, err := json.Marshal(OverlayJSON{Replace: overlays})
+ if err != nil {
+ return "", func() {}, err
+ }
+ // Write out the overlay file that contains the filepath mappings.
+ filename = filepath.Join(dir, "overlay.json")
+ if err := ioutil.WriteFile(filename, b, 0665); err != nil {
+ return "", func() {}, err
+ }
+ return filename, cleanup, nil
+}
+
func containsGoFile(s []string) bool {
for _, f := range s {
if strings.HasSuffix(f, ".go") {
@@ -996,17 +1075,22 @@ func containsGoFile(s []string) bool {
return false
}
-func cmdDebugStr(cmd *exec.Cmd, args ...string) string {
+func cmdDebugStr(cmd *exec.Cmd) string {
env := make(map[string]string)
for _, kv := range cmd.Env {
- split := strings.Split(kv, "=")
+ split := strings.SplitN(kv, "=", 2)
k, v := split[0], split[1]
env[k] = v
}
- var quotedArgs []string
- for _, arg := range args {
- quotedArgs = append(quotedArgs, strconv.Quote(arg))
- }
- return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v PWD=%v go %s", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["PWD"], strings.Join(quotedArgs, " "))
+ var args []string
+ for _, arg := range cmd.Args {
+ quoted := strconv.Quote(arg)
+ if quoted[1:len(quoted)-1] != arg || strings.Contains(arg, " ") {
+ args = append(args, quoted)
+ } else {
+ args = append(args, arg)
+ }
+ }
+ return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], strings.Join(args, " "))
}
diff --git a/vendor/golang.org/x/tools/go/packages/golist_overlay.go b/vendor/golang.org/x/tools/go/packages/golist_overlay.go
index 874f9013451..9576b472f9c 100644
--- a/vendor/golang.org/x/tools/go/packages/golist_overlay.go
+++ b/vendor/golang.org/x/tools/go/packages/golist_overlay.go
@@ -1,3 +1,7 @@
+// 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 packages
import (
@@ -5,7 +9,6 @@ import (
"fmt"
"go/parser"
"go/token"
- "log"
"os"
"path/filepath"
"regexp"
@@ -31,9 +34,12 @@ func (state *golistState) processGolistOverlay(response *responseDeduper) (modif
// This is an approximation of import path to id. This can be
// wrong for tests, vendored packages, and a number of other cases.
havePkgs[pkg.PkgPath] = pkg.ID
- x := commonDir(pkg.GoFiles)
- if x != "" {
- pkgOfDir[x] = append(pkgOfDir[x], pkg)
+ dir, err := commonDir(pkg.GoFiles)
+ if err != nil {
+ return nil, nil, err
+ }
+ if dir != "" {
+ pkgOfDir[dir] = append(pkgOfDir[dir], pkg)
}
}
@@ -253,7 +259,7 @@ func (state *golistState) processGolistOverlay(response *responseDeduper) (modif
return modifiedPkgs, needPkgs, err
}
-// resolveImport finds the the ID of a package given its import path.
+// resolveImport finds the ID of a package given its import path.
// In particular, it will find the right vendored copy when in GOPATH mode.
func (state *golistState) resolveImport(sourceDir, importPath string) (string, error) {
env, err := state.getEnv()
@@ -437,20 +443,21 @@ func extractPackageName(filename string, contents []byte) (string, bool) {
return f.Name.Name, true
}
-func commonDir(a []string) string {
+// commonDir returns the directory that all files are in, "" if files is empty,
+// or an error if they aren't in the same directory.
+func commonDir(files []string) (string, error) {
seen := make(map[string]bool)
- x := append([]string{}, a...)
- for _, f := range x {
+ for _, f := range files {
seen[filepath.Dir(f)] = true
}
if len(seen) > 1 {
- log.Fatalf("commonDir saw %v for %v", seen, x)
+ return "", fmt.Errorf("files (%v) are in more than one directory: %v", files, seen)
}
for k := range seen {
- // len(seen) == 1
- return k
+ // seen has only one element; return it.
+ return k, nil
}
- return "" // no files
+ return "", nil // no files
}
// It is possible that the files in the disk directory dir have a different package
diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go
index 04053f1e7d4..38475e8712a 100644
--- a/vendor/golang.org/x/tools/go/packages/packages.go
+++ b/vendor/golang.org/x/tools/go/packages/packages.go
@@ -144,6 +144,12 @@ type Config struct {
// the build system's query tool.
BuildFlags []string
+ // modFile will be used for -modfile in go command invocations.
+ modFile string
+
+ // modFlag will be used for -modfile in go command invocations.
+ modFlag string
+
// Fset provides source position information for syntax trees and types.
// If Fset is nil, Load will use a new fileset, but preserve Fset's value.
Fset *token.FileSet
@@ -289,6 +295,11 @@ type Package struct {
// including assembly, C, C++, Fortran, Objective-C, SWIG, and so on.
OtherFiles []string
+ // IgnoredFiles lists source files that are not part of the package
+ // using the current build configuration but that might be part of
+ // the package using other build configurations.
+ IgnoredFiles []string
+
// ExportFile is the absolute path to a file containing type
// information for the package as provided by the build system.
ExportFile string
@@ -361,6 +372,12 @@ func init() {
packagesinternal.SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {
config.(*Config).gocmdRunner = runner
}
+ packagesinternal.SetModFile = func(config interface{}, value string) {
+ config.(*Config).modFile = value
+ }
+ packagesinternal.SetModFlag = func(config interface{}, value string) {
+ config.(*Config).modFlag = value
+ }
packagesinternal.TypecheckCgo = int(typecheckCgo)
}
@@ -404,6 +421,7 @@ type flatPackage struct {
GoFiles []string `json:",omitempty"`
CompiledGoFiles []string `json:",omitempty"`
OtherFiles []string `json:",omitempty"`
+ IgnoredFiles []string `json:",omitempty"`
ExportFile string `json:",omitempty"`
Imports map[string]string `json:",omitempty"`
}
@@ -426,6 +444,7 @@ func (p *Package) MarshalJSON() ([]byte, error) {
GoFiles: p.GoFiles,
CompiledGoFiles: p.CompiledGoFiles,
OtherFiles: p.OtherFiles,
+ IgnoredFiles: p.IgnoredFiles,
ExportFile: p.ExportFile,
}
if len(p.Imports) > 0 {
@@ -712,7 +731,8 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) {
result[i] = lpkg.Package
}
for i := range ld.pkgs {
- // Clear all unrequested fields, for extra de-Hyrum-ization.
+ // Clear all unrequested fields,
+ // to catch programs that use more than they request.
if ld.requestedMode&NeedName == 0 {
ld.pkgs[i].Name = ""
ld.pkgs[i].PkgPath = ""
@@ -720,6 +740,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) {
if ld.requestedMode&NeedFiles == 0 {
ld.pkgs[i].GoFiles = nil
ld.pkgs[i].OtherFiles = nil
+ ld.pkgs[i].IgnoredFiles = nil
}
if ld.requestedMode&NeedCompiledGoFiles == 0 {
ld.pkgs[i].CompiledGoFiles = nil
diff --git a/vendor/golang.org/x/tools/go/packages/visit.go b/vendor/golang.org/x/tools/go/packages/visit.go
index b13cb081fcb..a1dcc40b727 100644
--- a/vendor/golang.org/x/tools/go/packages/visit.go
+++ b/vendor/golang.org/x/tools/go/packages/visit.go
@@ -1,3 +1,7 @@
+// 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 packages
import (
diff --git a/vendor/golang.org/x/tools/imports/forward.go b/vendor/golang.org/x/tools/imports/forward.go
index a4e40adba0d..8be18a66b3c 100644
--- a/vendor/golang.org/x/tools/imports/forward.go
+++ b/vendor/golang.org/x/tools/imports/forward.go
@@ -1,3 +1,7 @@
+// 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 imports implements a Go pretty-printer (like package "go/format")
// that also adds or removes import statements as necessary.
package imports // import "golang.org/x/tools/imports"
diff --git a/vendor/golang.org/x/tools/internal/event/core/event.go b/vendor/golang.org/x/tools/internal/event/core/event.go
index e37b4949150..a6cf0e64a4b 100644
--- a/vendor/golang.org/x/tools/internal/event/core/event.go
+++ b/vendor/golang.org/x/tools/internal/event/core/event.go
@@ -12,7 +12,7 @@ import (
"golang.org/x/tools/internal/event/label"
)
-// Event holds the information about an event of note that ocurred.
+// Event holds the information about an event of note that occurred.
type Event struct {
at time.Time
diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go
index f516e17623d..8659a0c5da6 100644
--- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go
+++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go
@@ -9,10 +9,11 @@ import (
"bytes"
"context"
"fmt"
+ exec "golang.org/x/sys/execabs"
"io"
"os"
- "os/exec"
"regexp"
+ "strconv"
"strings"
"sync"
"time"
@@ -130,6 +131,12 @@ type Invocation struct {
Verb string
Args []string
BuildFlags []string
+ ModFlag string
+ ModFile string
+ Overlay string
+ // If CleanEnv is set, the invocation will run only with the environment
+ // in Env, not starting with os.Environ.
+ CleanEnv bool
Env []string
WorkingDir string
Logf func(format string, args ...interface{})
@@ -158,17 +165,41 @@ func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error {
}
goArgs := []string{i.Verb}
+
+ appendModFile := func() {
+ if i.ModFile != "" {
+ goArgs = append(goArgs, "-modfile="+i.ModFile)
+ }
+ }
+ appendModFlag := func() {
+ if i.ModFlag != "" {
+ goArgs = append(goArgs, "-mod="+i.ModFlag)
+ }
+ }
+ appendOverlayFlag := func() {
+ if i.Overlay != "" {
+ goArgs = append(goArgs, "-overlay="+i.Overlay)
+ }
+ }
+
switch i.Verb {
+ case "env", "version":
+ goArgs = append(goArgs, i.Args...)
case "mod":
- // mod needs the sub-verb before build flags.
+ // mod needs the sub-verb before flags.
goArgs = append(goArgs, i.Args[0])
- goArgs = append(goArgs, i.BuildFlags...)
+ appendModFile()
goArgs = append(goArgs, i.Args[1:]...)
- case "env":
- // env doesn't take build flags.
+ case "get":
+ goArgs = append(goArgs, i.BuildFlags...)
+ appendModFile()
goArgs = append(goArgs, i.Args...)
- default:
+
+ default: // notably list and build.
goArgs = append(goArgs, i.BuildFlags...)
+ appendModFile()
+ appendModFlag()
+ appendOverlayFlag()
goArgs = append(goArgs, i.Args...)
}
cmd := exec.Command("go", goArgs...)
@@ -180,7 +211,10 @@ func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error {
// The Go stdlib has a special feature where if the cwd and the PWD are the
// same node then it trusts the PWD, so by setting it in the env for the child
// process we fix up all the paths returned by the go command.
- cmd.Env = append(os.Environ(), i.Env...)
+ if !i.CleanEnv {
+ cmd.Env = os.Environ()
+ }
+ cmd.Env = append(cmd.Env, i.Env...)
if i.WorkingDir != "" {
cmd.Env = append(cmd.Env, "PWD="+i.WorkingDir)
cmd.Dir = i.WorkingDir
@@ -221,10 +255,19 @@ func runCmdContext(ctx context.Context, cmd *exec.Cmd) error {
func cmdDebugStr(cmd *exec.Cmd) string {
env := make(map[string]string)
for _, kv := range cmd.Env {
- split := strings.Split(kv, "=")
+ split := strings.SplitN(kv, "=", 2)
k, v := split[0], split[1]
env[k] = v
}
- return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], cmd.Args)
+ var args []string
+ for _, arg := range cmd.Args {
+ quoted := strconv.Quote(arg)
+ if quoted[1:len(quoted)-1] != arg || strings.Contains(arg, " ") {
+ args = append(args, quoted)
+ } else {
+ args = append(args, arg)
+ }
+ }
+ return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], strings.Join(args, " "))
}
diff --git a/vendor/golang.org/x/tools/internal/gocommand/version.go b/vendor/golang.org/x/tools/internal/gocommand/version.go
new file mode 100644
index 00000000000..0cebac6e668
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/gocommand/version.go
@@ -0,0 +1,51 @@
+// 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 gocommand
+
+import (
+ "context"
+ "fmt"
+ "strings"
+)
+
+// GoVersion checks the go version by running "go list" with modules off.
+// It returns the X in Go 1.X.
+func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) {
+ inv.Verb = "list"
+ inv.Args = []string{"-e", "-f", `{{context.ReleaseTags}}`}
+ inv.Env = append(append([]string{}, inv.Env...), "GO111MODULE=off")
+ // Unset any unneeded flags, and remove them from BuildFlags, if they're
+ // present.
+ inv.ModFile = ""
+ inv.ModFlag = ""
+ var buildFlags []string
+ for _, flag := range inv.BuildFlags {
+ // Flags can be prefixed by one or two dashes.
+ f := strings.TrimPrefix(strings.TrimPrefix(flag, "-"), "-")
+ if strings.HasPrefix(f, "mod=") || strings.HasPrefix(f, "modfile=") {
+ continue
+ }
+ buildFlags = append(buildFlags, flag)
+ }
+ inv.BuildFlags = buildFlags
+ stdoutBytes, err := r.Run(ctx, inv)
+ if err != nil {
+ return 0, err
+ }
+ stdout := stdoutBytes.String()
+ if len(stdout) < 3 {
+ return 0, fmt.Errorf("bad ReleaseTags output: %q", stdout)
+ }
+ // Split up "[go1.1 go1.15]"
+ tags := strings.Fields(stdout[1 : len(stdout)-2])
+ for i := len(tags) - 1; i >= 0; i-- {
+ var version int
+ if _, err := fmt.Sscanf(tags[i], "go1.%d", &version); err != nil {
+ continue
+ }
+ return version, nil
+ }
+ return 0, fmt.Errorf("no parseable ReleaseTags in %v", tags)
+}
diff --git a/vendor/golang.org/x/tools/internal/imports/fix.go b/vendor/golang.org/x/tools/internal/imports/fix.go
index 613afc4d664..d859617b774 100644
--- a/vendor/golang.org/x/tools/internal/imports/fix.go
+++ b/vendor/golang.org/x/tools/internal/imports/fix.go
@@ -83,7 +83,7 @@ type ImportFix struct {
IdentName string
// FixType is the type of fix this is (AddImport, DeleteImport, SetImportName).
FixType ImportFixType
- Relevance int // see pkg
+ Relevance float64 // see pkg
}
// An ImportInfo represents a single import statement.
@@ -592,9 +592,9 @@ func getFixes(fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv
return fixes, nil
}
-// Highest relevance, used for the standard library. Chosen arbitrarily to
-// match pre-existing gopls code.
-const MaxRelevance = 7
+// MaxRelevance is the highest relevance, used for the standard library.
+// Chosen arbitrarily to match pre-existing gopls code.
+const MaxRelevance = 7.0
// getCandidatePkgs works with the passed callback to find all acceptable packages.
// It deduplicates by import path, and uses a cached stdlib rather than reading
@@ -607,6 +607,10 @@ func getCandidatePkgs(ctx context.Context, wrappedCallback *scanCallback, filena
if err != nil {
return err
}
+
+ var mu sync.Mutex // to guard asynchronous access to dupCheck
+ dupCheck := map[string]struct{}{}
+
// Start off with the standard library.
for importPath, exports := range stdlib {
p := &pkg{
@@ -615,14 +619,12 @@ func getCandidatePkgs(ctx context.Context, wrappedCallback *scanCallback, filena
packageName: path.Base(importPath),
relevance: MaxRelevance,
}
+ dupCheck[importPath] = struct{}{}
if notSelf(p) && wrappedCallback.dirFound(p) && wrappedCallback.packageNameLoaded(p) {
wrappedCallback.exportsLoaded(p, exports)
}
}
- var mu sync.Mutex
- dupCheck := map[string]struct{}{}
-
scanFilter := &scanCallback{
rootFound: func(root gopathwalk.Root) bool {
// Exclude goroot results -- getting them is relatively expensive, not cached,
@@ -658,8 +660,8 @@ func getCandidatePkgs(ctx context.Context, wrappedCallback *scanCallback, filena
return resolver.scan(ctx, scanFilter)
}
-func ScoreImportPaths(ctx context.Context, env *ProcessEnv, paths []string) (map[string]int, error) {
- result := make(map[string]int)
+func ScoreImportPaths(ctx context.Context, env *ProcessEnv, paths []string) (map[string]float64, error) {
+ result := make(map[string]float64)
resolver, err := env.GetResolver()
if err != nil {
return nil, err
@@ -802,6 +804,8 @@ type ProcessEnv struct {
GocmdRunner *gocommand.Runner
BuildFlags []string
+ ModFlag string
+ ModFile string
// Env overrides the OS environment, and can be used to specify
// GOPROXY, GO111MODULE, etc. PATH cannot be set here, because
@@ -827,7 +831,11 @@ func (e *ProcessEnv) goEnv() (map[string]string, error) {
}
func (e *ProcessEnv) matchFile(dir, name string) (bool, error) {
- return build.Default.MatchFile(dir, name)
+ bctx, err := e.buildContext()
+ if err != nil {
+ return false, err
+ }
+ return bctx.MatchFile(dir, name)
}
// CopyConfig copies the env's configuration into a new env.
@@ -920,15 +928,21 @@ func (e *ProcessEnv) buildContext() (*build.Context, error) {
// Populate it only if present.
rc := reflect.ValueOf(&ctx).Elem()
dir := rc.FieldByName("Dir")
- if !dir.IsValid() {
- // Working drafts of Go 1.14 named the field "WorkingDir" instead.
- // TODO(bcmills): Remove this case after the Go 1.14 beta has been released.
- dir = rc.FieldByName("WorkingDir")
- }
if dir.IsValid() && dir.Kind() == reflect.String {
dir.SetString(e.WorkingDir)
}
+ // Since Go 1.11, go/build.Context.Import may invoke 'go list' depending on
+ // the value in GO111MODULE in the process's environment. We always want to
+ // run in GOPATH mode when calling Import, so we need to prevent this from
+ // happening. In Go 1.16, GO111MODULE defaults to "on", so this problem comes
+ // up more frequently.
+ //
+ // HACK: setting any of the Context I/O hooks prevents Import from invoking
+ // 'go list', regardless of GO111MODULE. This is undocumented, but it's
+ // unlikely to change before GOPATH support is removed.
+ ctx.ReadDir = ioutil.ReadDir
+
return &ctx, nil
}
@@ -985,7 +999,7 @@ type Resolver interface {
// loadExports may be called concurrently.
loadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []string, error)
// scoreImportPath returns the relevance for an import path.
- scoreImportPath(ctx context.Context, path string) int
+ scoreImportPath(ctx context.Context, path string) float64
ClearForNewScan()
}
@@ -1250,10 +1264,10 @@ func packageDirToName(dir string) (packageName string, err error) {
}
type pkg struct {
- dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http")
- importPathShort string // vendorless import path ("net/http", "a/b")
- packageName string // package name loaded from source if requested
- relevance int // a weakly-defined score of how relevant a package is. 0 is most relevant.
+ dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http")
+ importPathShort string // vendorless import path ("net/http", "a/b")
+ packageName string // package name loaded from source if requested
+ relevance float64 // a weakly-defined score of how relevant a package is. 0 is most relevant.
}
type pkgDistance struct {
@@ -1379,7 +1393,7 @@ func (r *gopathResolver) scan(ctx context.Context, callback *scanCallback) error
return nil
}
-func (r *gopathResolver) scoreImportPath(ctx context.Context, path string) int {
+func (r *gopathResolver) scoreImportPath(ctx context.Context, path string) float64 {
if _, ok := stdlib[path]; ok {
return MaxRelevance
}
diff --git a/vendor/golang.org/x/tools/internal/imports/mod.go b/vendor/golang.org/x/tools/internal/imports/mod.go
index 94880d61604..65e0b94b173 100644
--- a/vendor/golang.org/x/tools/internal/imports/mod.go
+++ b/vendor/golang.org/x/tools/internal/imports/mod.go
@@ -1,3 +1,7 @@
+// 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 imports
import (
@@ -59,6 +63,8 @@ func (r *ModuleResolver) init() error {
}
inv := gocommand.Invocation{
BuildFlags: r.env.BuildFlags,
+ ModFlag: r.env.ModFlag,
+ ModFile: r.env.ModFile,
Env: r.env.env(),
Logf: r.env.Logf,
WorkingDir: r.env.WorkingDir,
@@ -80,13 +86,22 @@ func (r *ModuleResolver) init() error {
r.modsByDir = []*gocommand.ModuleJSON{mainMod, r.dummyVendorMod}
} else {
// Vendor mode is off, so run go list -m ... to find everything.
- r.initAllMods()
+ err := r.initAllMods()
+ // We expect an error when running outside of a module with
+ // GO111MODULE=on. Other errors are fatal.
+ if err != nil && !strings.Contains(err.Error(), "working directory is not part of a module") {
+ return err
+ }
}
if gmc := r.env.Env["GOMODCACHE"]; gmc != "" {
r.moduleCacheDir = gmc
} else {
- r.moduleCacheDir = filepath.Join(filepath.SplitList(goenv["GOPATH"])[0], "/pkg/mod")
+ gopaths := filepath.SplitList(goenv["GOPATH"])
+ if len(gopaths) == 0 {
+ return fmt.Errorf("empty GOPATH")
+ }
+ r.moduleCacheDir = filepath.Join(gopaths[0], "/pkg/mod")
}
sort.Slice(r.modsByModPath, func(i, j int) bool {
@@ -151,7 +166,7 @@ func (r *ModuleResolver) init() error {
}
func (r *ModuleResolver) initAllMods() error {
- stdout, err := r.env.invokeGo(context.TODO(), "list", "-m", "-json", "...")
+ stdout, err := r.env.invokeGo(context.TODO(), "list", "-m", "-e", "-json", "...")
if err != nil {
return err
}
@@ -345,10 +360,11 @@ func (r *ModuleResolver) modInfo(dir string) (modDir string, modName string) {
}
if r.dirInModuleCache(dir) {
- matches := modCacheRegexp.FindStringSubmatch(dir)
- index := strings.Index(dir, matches[1]+"@"+matches[2])
- modDir := filepath.Join(dir[:index], matches[1]+"@"+matches[2])
- return modDir, readModName(filepath.Join(modDir, "go.mod"))
+ if matches := modCacheRegexp.FindStringSubmatch(dir); len(matches) == 3 {
+ index := strings.Index(dir, matches[1]+"@"+matches[2])
+ modDir := filepath.Join(dir[:index], matches[1]+"@"+matches[2])
+ return modDir, readModName(filepath.Join(modDir, "go.mod"))
+ }
}
for {
if info, ok := r.cacheLoad(dir); ok {
@@ -487,7 +503,7 @@ func (r *ModuleResolver) scan(ctx context.Context, callback *scanCallback) error
return nil
}
-func (r *ModuleResolver) scoreImportPath(ctx context.Context, path string) int {
+func (r *ModuleResolver) scoreImportPath(ctx context.Context, path string) float64 {
if _, ok := stdlib[path]; ok {
return MaxRelevance
}
@@ -495,17 +511,31 @@ func (r *ModuleResolver) scoreImportPath(ctx context.Context, path string) int {
return modRelevance(mod)
}
-func modRelevance(mod *gocommand.ModuleJSON) int {
+func modRelevance(mod *gocommand.ModuleJSON) float64 {
+ var relevance float64
switch {
case mod == nil: // out of scope
return MaxRelevance - 4
case mod.Indirect:
- return MaxRelevance - 3
+ relevance = MaxRelevance - 3
case !mod.Main:
- return MaxRelevance - 2
+ relevance = MaxRelevance - 2
default:
- return MaxRelevance - 1 // main module ties with stdlib
+ relevance = MaxRelevance - 1 // main module ties with stdlib
}
+
+ _, versionString, ok := module.SplitPathVersion(mod.Path)
+ if ok {
+ index := strings.Index(versionString, "v")
+ if index == -1 {
+ return relevance
+ }
+ if versionNumber, err := strconv.ParseFloat(versionString[index+1:], 64); err == nil {
+ relevance += versionNumber / 1000
+ }
+ }
+
+ return relevance
}
// canonicalize gets the result of canonicalizing the packages using the results
diff --git a/vendor/golang.org/x/tools/internal/imports/mod_cache.go b/vendor/golang.org/x/tools/internal/imports/mod_cache.go
index 5b4f03accdd..18dada495ca 100644
--- a/vendor/golang.org/x/tools/internal/imports/mod_cache.go
+++ b/vendor/golang.org/x/tools/internal/imports/mod_cache.go
@@ -1,3 +1,7 @@
+// 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 imports
import (
diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
index 2c4527f2436..d4ec6f9715e 100644
--- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
+++ b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go
@@ -1,3 +1,7 @@
+// 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 packagesinternal exposes internal-only fields from go/packages.
package packagesinternal
@@ -12,3 +16,6 @@ var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil }
var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {}
var TypecheckCgo int
+
+var SetModFlag = func(config interface{}, value string) {}
+var SetModFile = func(config interface{}, value string) {}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
new file mode 100644
index 00000000000..65473eb226d
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go
@@ -0,0 +1,1358 @@
+// 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 typesinternal
+
+//go:generate stringer -type=ErrorCode
+
+type ErrorCode int
+
+// This file defines the error codes that can be produced during type-checking.
+// Collectively, these codes provide an identifier that may be used to
+// implement special handling for certain types of errors.
+//
+// Error codes should be fine-grained enough that the exact nature of the error
+// can be easily determined, but coarse enough that they are not an
+// implementation detail of the type checking algorithm. As a rule-of-thumb,
+// errors should be considered equivalent if there is a theoretical refactoring
+// of the type checker in which they are emitted in exactly one place. For
+// example, the type checker emits different error messages for "too many
+// arguments" and "too few arguments", but one can imagine an alternative type
+// checker where this check instead just emits a single "wrong number of
+// arguments", so these errors should have the same code.
+//
+// Error code names should be as brief as possible while retaining accuracy and
+// distinctiveness. In most cases names should start with an adjective
+// describing the nature of the error (e.g. "invalid", "unused", "misplaced"),
+// and end with a noun identifying the relevant language object. For example,
+// "DuplicateDecl" or "InvalidSliceExpr". For brevity, naming follows the
+// convention that "bad" implies a problem with syntax, and "invalid" implies a
+// problem with types.
+
+const (
+ _ ErrorCode = iota
+
+ // Test is reserved for errors that only apply while in self-test mode.
+ Test
+
+ /* package names */
+
+ // BlankPkgName occurs when a package name is the blank identifier "_".
+ //
+ // Per the spec:
+ // "The PackageName must not be the blank identifier."
+ BlankPkgName
+
+ // MismatchedPkgName occurs when a file's package name doesn't match the
+ // package name already established by other files.
+ MismatchedPkgName
+
+ // InvalidPkgUse occurs when a package identifier is used outside of a
+ // selector expression.
+ //
+ // Example:
+ // import "fmt"
+ //
+ // var _ = fmt
+ InvalidPkgUse
+
+ /* imports */
+
+ // BadImportPath occurs when an import path is not valid.
+ BadImportPath
+
+ // BrokenImport occurs when importing a package fails.
+ //
+ // Example:
+ // import "amissingpackage"
+ BrokenImport
+
+ // ImportCRenamed occurs when the special import "C" is renamed. "C" is a
+ // pseudo-package, and must not be renamed.
+ //
+ // Example:
+ // import _ "C"
+ ImportCRenamed
+
+ // UnusedImport occurs when an import is unused.
+ //
+ // Example:
+ // import "fmt"
+ //
+ // func main() {}
+ UnusedImport
+
+ /* initialization */
+
+ // InvalidInitCycle occurs when an invalid cycle is detected within the
+ // initialization graph.
+ //
+ // Example:
+ // var x int = f()
+ //
+ // func f() int { return x }
+ InvalidInitCycle
+
+ /* decls */
+
+ // DuplicateDecl occurs when an identifier is declared multiple times.
+ //
+ // Example:
+ // var x = 1
+ // var x = 2
+ DuplicateDecl
+
+ // InvalidDeclCycle occurs when a declaration cycle is not valid.
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type T struct {
+ // a [n]int
+ // }
+ //
+ // var n = unsafe.Sizeof(T{})
+ InvalidDeclCycle
+
+ // InvalidTypeCycle occurs when a cycle in type definitions results in a
+ // type that is not well-defined.
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type T [unsafe.Sizeof(T{})]int
+ InvalidTypeCycle
+
+ /* decls > const */
+
+ // InvalidConstInit occurs when a const declaration has a non-constant
+ // initializer.
+ //
+ // Example:
+ // var x int
+ // const _ = x
+ InvalidConstInit
+
+ // InvalidConstVal occurs when a const value cannot be converted to its
+ // target type.
+ //
+ // TODO(findleyr): this error code and example are not very clear. Consider
+ // removing it.
+ //
+ // Example:
+ // const _ = 1 << "hello"
+ InvalidConstVal
+
+ // InvalidConstType occurs when the underlying type in a const declaration
+ // is not a valid constant type.
+ //
+ // Example:
+ // const c *int = 4
+ InvalidConstType
+
+ /* decls > var (+ other variable assignment codes) */
+
+ // UntypedNil occurs when the predeclared (untyped) value nil is used to
+ // initialize a variable declared without an explicit type.
+ //
+ // Example:
+ // var x = nil
+ UntypedNil
+
+ // WrongAssignCount occurs when the number of values on the right-hand side
+ // of an assignment or or initialization expression does not match the number
+ // of variables on the left-hand side.
+ //
+ // Example:
+ // var x = 1, 2
+ WrongAssignCount
+
+ // UnassignableOperand occurs when the left-hand side of an assignment is
+ // not assignable.
+ //
+ // Example:
+ // func f() {
+ // const c = 1
+ // c = 2
+ // }
+ UnassignableOperand
+
+ // NoNewVar occurs when a short variable declaration (':=') does not declare
+ // new variables.
+ //
+ // Example:
+ // func f() {
+ // x := 1
+ // x := 2
+ // }
+ NoNewVar
+
+ // MultiValAssignOp occurs when an assignment operation (+=, *=, etc) does
+ // not have single-valued left-hand or right-hand side.
+ //
+ // Per the spec:
+ // "In assignment operations, both the left- and right-hand expression lists
+ // must contain exactly one single-valued expression"
+ //
+ // Example:
+ // func f() int {
+ // x, y := 1, 2
+ // x, y += 1
+ // return x + y
+ // }
+ MultiValAssignOp
+
+ // InvalidIfaceAssign occurs when a value of type T is used as an
+ // interface, but T does not implement a method of the expected interface.
+ //
+ // Example:
+ // type I interface {
+ // f()
+ // }
+ //
+ // type T int
+ //
+ // var x I = T(1)
+ InvalidIfaceAssign
+
+ // InvalidChanAssign occurs when a chan assignment is invalid.
+ //
+ // Per the spec, a value x is assignable to a channel type T if:
+ // "x is a bidirectional channel value, T is a channel type, x's type V and
+ // T have identical element types, and at least one of V or T is not a
+ // defined type."
+ //
+ // Example:
+ // type T1 chan int
+ // type T2 chan int
+ //
+ // var x T1
+ // // Invalid assignment because both types are named
+ // var _ T2 = x
+ InvalidChanAssign
+
+ // IncompatibleAssign occurs when the type of the right-hand side expression
+ // in an assignment cannot be assigned to the type of the variable being
+ // assigned.
+ //
+ // Example:
+ // var x []int
+ // var _ int = x
+ IncompatibleAssign
+
+ // UnaddressableFieldAssign occurs when trying to assign to a struct field
+ // in a map value.
+ //
+ // Example:
+ // func f() {
+ // m := make(map[string]struct{i int})
+ // m["foo"].i = 42
+ // }
+ UnaddressableFieldAssign
+
+ /* decls > type (+ other type expression codes) */
+
+ // NotAType occurs when the identifier used as the underlying type in a type
+ // declaration or the right-hand side of a type alias does not denote a type.
+ //
+ // Example:
+ // var S = 2
+ //
+ // type T S
+ NotAType
+
+ // InvalidArrayLen occurs when an array length is not a constant value.
+ //
+ // Example:
+ // var n = 3
+ // var _ = [n]int{}
+ InvalidArrayLen
+
+ // BlankIfaceMethod occurs when a method name is '_'.
+ //
+ // Per the spec:
+ // "The name of each explicitly specified method must be unique and not
+ // blank."
+ //
+ // Example:
+ // type T interface {
+ // _(int)
+ // }
+ BlankIfaceMethod
+
+ // IncomparableMapKey occurs when a map key type does not support the == and
+ // != operators.
+ //
+ // Per the spec:
+ // "The comparison operators == and != must be fully defined for operands of
+ // the key type; thus the key type must not be a function, map, or slice."
+ //
+ // Example:
+ // var x map[T]int
+ //
+ // type T []int
+ IncomparableMapKey
+
+ // InvalidIfaceEmbed occurs when a non-interface type is embedded in an
+ // interface.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func (T) m()
+ //
+ // type I interface {
+ // T
+ // }
+ InvalidIfaceEmbed
+
+ // InvalidPtrEmbed occurs when an embedded field is of the pointer form *T,
+ // and T itself is itself a pointer, an unsafe.Pointer, or an interface.
+ //
+ // Per the spec:
+ // "An embedded field must be specified as a type name T or as a pointer to
+ // a non-interface type name *T, and T itself may not be a pointer type."
+ //
+ // Example:
+ // type T *int
+ //
+ // type S struct {
+ // *T
+ // }
+ InvalidPtrEmbed
+
+ /* decls > func and method */
+
+ // BadRecv occurs when a method declaration does not have exactly one
+ // receiver parameter.
+ //
+ // Example:
+ // func () _() {}
+ BadRecv
+
+ // InvalidRecv occurs when a receiver type expression is not of the form T
+ // or *T, or T is a pointer type.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func (**T) m() {}
+ InvalidRecv
+
+ // DuplicateFieldAndMethod occurs when an identifier appears as both a field
+ // and method name.
+ //
+ // Example:
+ // type T struct {
+ // m int
+ // }
+ //
+ // func (T) m() {}
+ DuplicateFieldAndMethod
+
+ // DuplicateMethod occurs when two methods on the same receiver type have
+ // the same name.
+ //
+ // Example:
+ // type T struct {}
+ // func (T) m() {}
+ // func (T) m(i int) int { return i }
+ DuplicateMethod
+
+ /* decls > special */
+
+ // InvalidBlank occurs when a blank identifier is used as a value or type.
+ //
+ // Per the spec:
+ // "The blank identifier may appear as an operand only on the left-hand side
+ // of an assignment."
+ //
+ // Example:
+ // var x = _
+ InvalidBlank
+
+ // InvalidIota occurs when the predeclared identifier iota is used outside
+ // of a constant declaration.
+ //
+ // Example:
+ // var x = iota
+ InvalidIota
+
+ // MissingInitBody occurs when an init function is missing its body.
+ //
+ // Example:
+ // func init()
+ MissingInitBody
+
+ // InvalidInitSig occurs when an init function declares parameters or
+ // results.
+ //
+ // Example:
+ // func init() int { return 1 }
+ InvalidInitSig
+
+ // InvalidInitDecl occurs when init is declared as anything other than a
+ // function.
+ //
+ // Example:
+ // var init = 1
+ InvalidInitDecl
+
+ // InvalidMainDecl occurs when main is declared as anything other than a
+ // function, in a main package.
+ InvalidMainDecl
+
+ /* exprs */
+
+ // TooManyValues occurs when a function returns too many values for the
+ // expression context in which it is used.
+ //
+ // Example:
+ // func ReturnTwo() (int, int) {
+ // return 1, 2
+ // }
+ //
+ // var x = ReturnTwo()
+ TooManyValues
+
+ // NotAnExpr occurs when a type expression is used where a value expression
+ // is expected.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func f() {
+ // T
+ // }
+ NotAnExpr
+
+ /* exprs > const */
+
+ // TruncatedFloat occurs when a float constant is truncated to an integer
+ // value.
+ //
+ // Example:
+ // var _ int = 98.6
+ TruncatedFloat
+
+ // NumericOverflow occurs when a numeric constant overflows its target type.
+ //
+ // Example:
+ // var x int8 = 1000
+ NumericOverflow
+
+ /* exprs > operation */
+
+ // UndefinedOp occurs when an operator is not defined for the type(s) used
+ // in an operation.
+ //
+ // Example:
+ // var c = "a" - "b"
+ UndefinedOp
+
+ // MismatchedTypes occurs when operand types are incompatible in a binary
+ // operation.
+ //
+ // Example:
+ // var a = "hello"
+ // var b = 1
+ // var c = a - b
+ MismatchedTypes
+
+ // DivByZero occurs when a division operation is provable at compile
+ // time to be a division by zero.
+ //
+ // Example:
+ // const divisor = 0
+ // var x int = 1/divisor
+ DivByZero
+
+ // NonNumericIncDec occurs when an increment or decrement operator is
+ // applied to a non-numeric value.
+ //
+ // Example:
+ // func f() {
+ // var c = "c"
+ // c++
+ // }
+ NonNumericIncDec
+
+ /* exprs > ptr */
+
+ // UnaddressableOperand occurs when the & operator is applied to an
+ // unaddressable expression.
+ //
+ // Example:
+ // var x = &1
+ UnaddressableOperand
+
+ // InvalidIndirection occurs when a non-pointer value is indirected via the
+ // '*' operator.
+ //
+ // Example:
+ // var x int
+ // var y = *x
+ InvalidIndirection
+
+ /* exprs > [] */
+
+ // NonIndexableOperand occurs when an index operation is applied to a value
+ // that cannot be indexed.
+ //
+ // Example:
+ // var x = 1
+ // var y = x[1]
+ NonIndexableOperand
+
+ // InvalidIndex occurs when an index argument is not of integer type,
+ // negative, or out-of-bounds.
+ //
+ // Example:
+ // var s = [...]int{1,2,3}
+ // var x = s[5]
+ //
+ // Example:
+ // var s = []int{1,2,3}
+ // var _ = s[-1]
+ //
+ // Example:
+ // var s = []int{1,2,3}
+ // var i string
+ // var _ = s[i]
+ InvalidIndex
+
+ // SwappedSliceIndices occurs when constant indices in a slice expression
+ // are decreasing in value.
+ //
+ // Example:
+ // var _ = []int{1,2,3}[2:1]
+ SwappedSliceIndices
+
+ /* operators > slice */
+
+ // NonSliceableOperand occurs when a slice operation is applied to a value
+ // whose type is not sliceable, or is unaddressable.
+ //
+ // Example:
+ // var x = [...]int{1, 2, 3}[:1]
+ //
+ // Example:
+ // var x = 1
+ // var y = 1[:1]
+ NonSliceableOperand
+
+ // InvalidSliceExpr occurs when a three-index slice expression (a[x:y:z]) is
+ // applied to a string.
+ //
+ // Example:
+ // var s = "hello"
+ // var x = s[1:2:3]
+ InvalidSliceExpr
+
+ /* exprs > shift */
+
+ // InvalidShiftCount occurs when the right-hand side of a shift operation is
+ // either non-integer, negative, or too large.
+ //
+ // Example:
+ // var (
+ // x string
+ // y int = 1 << x
+ // )
+ InvalidShiftCount
+
+ // InvalidShiftOperand occurs when the shifted operand is not an integer.
+ //
+ // Example:
+ // var s = "hello"
+ // var x = s << 2
+ InvalidShiftOperand
+
+ /* exprs > chan */
+
+ // InvalidReceive occurs when there is a channel receive from a value that
+ // is either not a channel, or is a send-only channel.
+ //
+ // Example:
+ // func f() {
+ // var x = 1
+ // <-x
+ // }
+ InvalidReceive
+
+ // InvalidSend occurs when there is a channel send to a value that is not a
+ // channel, or is a receive-only channel.
+ //
+ // Example:
+ // func f() {
+ // var x = 1
+ // x <- "hello!"
+ // }
+ InvalidSend
+
+ /* exprs > literal */
+
+ // DuplicateLitKey occurs when an index is duplicated in a slice, array, or
+ // map literal.
+ //
+ // Example:
+ // var _ = []int{0:1, 0:2}
+ //
+ // Example:
+ // var _ = map[string]int{"a": 1, "a": 2}
+ DuplicateLitKey
+
+ // MissingLitKey occurs when a map literal is missing a key expression.
+ //
+ // Example:
+ // var _ = map[string]int{1}
+ MissingLitKey
+
+ // InvalidLitIndex occurs when the key in a key-value element of a slice or
+ // array literal is not an integer constant.
+ //
+ // Example:
+ // var i = 0
+ // var x = []string{i: "world"}
+ InvalidLitIndex
+
+ // OversizeArrayLit occurs when an array literal exceeds its length.
+ //
+ // Example:
+ // var _ = [2]int{1,2,3}
+ OversizeArrayLit
+
+ // MixedStructLit occurs when a struct literal contains a mix of positional
+ // and named elements.
+ //
+ // Example:
+ // var _ = struct{i, j int}{i: 1, 2}
+ MixedStructLit
+
+ // InvalidStructLit occurs when a positional struct literal has an incorrect
+ // number of values.
+ //
+ // Example:
+ // var _ = struct{i, j int}{1,2,3}
+ InvalidStructLit
+
+ // MissingLitField occurs when a struct literal refers to a field that does
+ // not exist on the struct type.
+ //
+ // Example:
+ // var _ = struct{i int}{j: 2}
+ MissingLitField
+
+ // DuplicateLitField occurs when a struct literal contains duplicated
+ // fields.
+ //
+ // Example:
+ // var _ = struct{i int}{i: 1, i: 2}
+ DuplicateLitField
+
+ // UnexportedLitField occurs when a positional struct literal implicitly
+ // assigns an unexported field of an imported type.
+ UnexportedLitField
+
+ // InvalidLitField occurs when a field name is not a valid identifier.
+ //
+ // Example:
+ // var _ = struct{i int}{1: 1}
+ InvalidLitField
+
+ // UntypedLit occurs when a composite literal omits a required type
+ // identifier.
+ //
+ // Example:
+ // type outer struct{
+ // inner struct { i int }
+ // }
+ //
+ // var _ = outer{inner: {1}}
+ UntypedLit
+
+ // InvalidLit occurs when a composite literal expression does not match its
+ // type.
+ //
+ // Example:
+ // type P *struct{
+ // x int
+ // }
+ // var _ = P {}
+ InvalidLit
+
+ /* exprs > selector */
+
+ // AmbiguousSelector occurs when a selector is ambiguous.
+ //
+ // Example:
+ // type E1 struct { i int }
+ // type E2 struct { i int }
+ // type T struct { E1; E2 }
+ //
+ // var x T
+ // var _ = x.i
+ AmbiguousSelector
+
+ // UndeclaredImportedName occurs when a package-qualified identifier is
+ // undeclared by the imported package.
+ //
+ // Example:
+ // import "go/types"
+ //
+ // var _ = types.NotAnActualIdentifier
+ UndeclaredImportedName
+
+ // UnexportedName occurs when a selector refers to an unexported identifier
+ // of an imported package.
+ //
+ // Example:
+ // import "reflect"
+ //
+ // type _ reflect.flag
+ UnexportedName
+
+ // UndeclaredName occurs when an identifier is not declared in the current
+ // scope.
+ //
+ // Example:
+ // var x T
+ UndeclaredName
+
+ // MissingFieldOrMethod occurs when a selector references a field or method
+ // that does not exist.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // var x = T{}.f
+ MissingFieldOrMethod
+
+ /* exprs > ... */
+
+ // BadDotDotDotSyntax occurs when a "..." occurs in a context where it is
+ // not valid.
+ //
+ // Example:
+ // var _ = map[int][...]int{0: {}}
+ BadDotDotDotSyntax
+
+ // NonVariadicDotDotDot occurs when a "..." is used on the final argument to
+ // a non-variadic function.
+ //
+ // Example:
+ // func printArgs(s []string) {
+ // for _, a := range s {
+ // println(a)
+ // }
+ // }
+ //
+ // func f() {
+ // s := []string{"a", "b", "c"}
+ // printArgs(s...)
+ // }
+ NonVariadicDotDotDot
+
+ // MisplacedDotDotDot occurs when a "..." is used somewhere other than the
+ // final argument to a function call.
+ //
+ // Example:
+ // func printArgs(args ...int) {
+ // for _, a := range args {
+ // println(a)
+ // }
+ // }
+ //
+ // func f() {
+ // a := []int{1,2,3}
+ // printArgs(0, a...)
+ // }
+ MisplacedDotDotDot
+
+ // InvalidDotDotDotOperand occurs when a "..." operator is applied to a
+ // single-valued operand.
+ //
+ // Example:
+ // func printArgs(args ...int) {
+ // for _, a := range args {
+ // println(a)
+ // }
+ // }
+ //
+ // func f() {
+ // a := 1
+ // printArgs(a...)
+ // }
+ //
+ // Example:
+ // func args() (int, int) {
+ // return 1, 2
+ // }
+ //
+ // func printArgs(args ...int) {
+ // for _, a := range args {
+ // println(a)
+ // }
+ // }
+ //
+ // func g() {
+ // printArgs(args()...)
+ // }
+ InvalidDotDotDotOperand
+
+ // InvalidDotDotDot occurs when a "..." is used in a non-variadic built-in
+ // function.
+ //
+ // Example:
+ // var s = []int{1, 2, 3}
+ // var l = len(s...)
+ InvalidDotDotDot
+
+ /* exprs > built-in */
+
+ // UncalledBuiltin occurs when a built-in function is used as a
+ // function-valued expression, instead of being called.
+ //
+ // Per the spec:
+ // "The built-in functions do not have standard Go types, so they can only
+ // appear in call expressions; they cannot be used as function values."
+ //
+ // Example:
+ // var _ = copy
+ UncalledBuiltin
+
+ // InvalidAppend occurs when append is called with a first argument that is
+ // not a slice.
+ //
+ // Example:
+ // var _ = append(1, 2)
+ InvalidAppend
+
+ // InvalidCap occurs when an argument to the cap built-in function is not of
+ // supported type.
+ //
+ // See https://golang.org/ref/spec#Lengthand_capacity for information on
+ // which underlying types are supported as arguments to cap and len.
+ //
+ // Example:
+ // var s = 2
+ // var x = cap(s)
+ InvalidCap
+
+ // InvalidClose occurs when close(...) is called with an argument that is
+ // not of channel type, or that is a receive-only channel.
+ //
+ // Example:
+ // func f() {
+ // var x int
+ // close(x)
+ // }
+ InvalidClose
+
+ // InvalidCopy occurs when the arguments are not of slice type or do not
+ // have compatible type.
+ //
+ // See https://golang.org/ref/spec#Appendingand_copying_slices for more
+ // information on the type requirements for the copy built-in.
+ //
+ // Example:
+ // func f() {
+ // var x []int
+ // y := []int64{1,2,3}
+ // copy(x, y)
+ // }
+ InvalidCopy
+
+ // InvalidComplex occurs when the complex built-in function is called with
+ // arguments with incompatible types.
+ //
+ // Example:
+ // var _ = complex(float32(1), float64(2))
+ InvalidComplex
+
+ // InvalidDelete occurs when the delete built-in function is called with a
+ // first argument that is not a map.
+ //
+ // Example:
+ // func f() {
+ // m := "hello"
+ // delete(m, "e")
+ // }
+ InvalidDelete
+
+ // InvalidImag occurs when the imag built-in function is called with an
+ // argument that does not have complex type.
+ //
+ // Example:
+ // var _ = imag(int(1))
+ InvalidImag
+
+ // InvalidLen occurs when an argument to the len built-in function is not of
+ // supported type.
+ //
+ // See https://golang.org/ref/spec#Lengthand_capacity for information on
+ // which underlying types are supported as arguments to cap and len.
+ //
+ // Example:
+ // var s = 2
+ // var x = len(s)
+ InvalidLen
+
+ // SwappedMakeArgs occurs when make is called with three arguments, and its
+ // length argument is larger than its capacity argument.
+ //
+ // Example:
+ // var x = make([]int, 3, 2)
+ SwappedMakeArgs
+
+ // InvalidMake occurs when make is called with an unsupported type argument.
+ //
+ // See https://golang.org/ref/spec#Makingslices_maps_and_channels for
+ // information on the types that may be created using make.
+ //
+ // Example:
+ // var x = make(int)
+ InvalidMake
+
+ // InvalidReal occurs when the real built-in function is called with an
+ // argument that does not have complex type.
+ //
+ // Example:
+ // var _ = real(int(1))
+ InvalidReal
+
+ /* exprs > assertion */
+
+ // InvalidAssert occurs when a type assertion is applied to a
+ // value that is not of interface type.
+ //
+ // Example:
+ // var x = 1
+ // var _ = x.(float64)
+ InvalidAssert
+
+ // ImpossibleAssert occurs for a type assertion x.(T) when the value x of
+ // interface cannot have dynamic type T, due to a missing or mismatching
+ // method on T.
+ //
+ // Example:
+ // type T int
+ //
+ // func (t *T) m() int { return int(*t) }
+ //
+ // type I interface { m() int }
+ //
+ // var x I
+ // var _ = x.(T)
+ ImpossibleAssert
+
+ /* exprs > conversion */
+
+ // InvalidConversion occurs when the argument type cannot be converted to the
+ // target.
+ //
+ // See https://golang.org/ref/spec#Conversions for the rules of
+ // convertibility.
+ //
+ // Example:
+ // var x float64
+ // var _ = string(x)
+ InvalidConversion
+
+ // InvalidUntypedConversion occurs when an there is no valid implicit
+ // conversion from an untyped value satisfying the type constraints of the
+ // context in which it is used.
+ //
+ // Example:
+ // var _ = 1 + ""
+ InvalidUntypedConversion
+
+ /* offsetof */
+
+ // BadOffsetofSyntax occurs when unsafe.Offsetof is called with an argument
+ // that is not a selector expression.
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // var x int
+ // var _ = unsafe.Offsetof(x)
+ BadOffsetofSyntax
+
+ // InvalidOffsetof occurs when unsafe.Offsetof is called with a method
+ // selector, rather than a field selector, or when the field is embedded via
+ // a pointer.
+ //
+ // Per the spec:
+ //
+ // "If f is an embedded field, it must be reachable without pointer
+ // indirections through fields of the struct. "
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type T struct { f int }
+ // type S struct { *T }
+ // var s S
+ // var _ = unsafe.Offsetof(s.f)
+ //
+ // Example:
+ // import "unsafe"
+ //
+ // type S struct{}
+ //
+ // func (S) m() {}
+ //
+ // var s S
+ // var _ = unsafe.Offsetof(s.m)
+ InvalidOffsetof
+
+ /* control flow > scope */
+
+ // UnusedExpr occurs when a side-effect free expression is used as a
+ // statement. Such a statement has no effect.
+ //
+ // Example:
+ // func f(i int) {
+ // i*i
+ // }
+ UnusedExpr
+
+ // UnusedVar occurs when a variable is declared but unused.
+ //
+ // Example:
+ // func f() {
+ // x := 1
+ // }
+ UnusedVar
+
+ // MissingReturn occurs when a function with results is missing a return
+ // statement.
+ //
+ // Example:
+ // func f() int {}
+ MissingReturn
+
+ // WrongResultCount occurs when a return statement returns an incorrect
+ // number of values.
+ //
+ // Example:
+ // func ReturnOne() int {
+ // return 1, 2
+ // }
+ WrongResultCount
+
+ // OutOfScopeResult occurs when the name of a value implicitly returned by
+ // an empty return statement is shadowed in a nested scope.
+ //
+ // Example:
+ // func factor(n int) (i int) {
+ // for i := 2; i < n; i++ {
+ // if n%i == 0 {
+ // return
+ // }
+ // }
+ // return 0
+ // }
+ OutOfScopeResult
+
+ /* control flow > if */
+
+ // InvalidCond occurs when an if condition is not a boolean expression.
+ //
+ // Example:
+ // func checkReturn(i int) {
+ // if i {
+ // panic("non-zero return")
+ // }
+ // }
+ InvalidCond
+
+ /* control flow > for */
+
+ // InvalidPostDecl occurs when there is a declaration in a for-loop post
+ // statement.
+ //
+ // Example:
+ // func f() {
+ // for i := 0; i < 10; j := 0 {}
+ // }
+ InvalidPostDecl
+
+ // InvalidChanRange occurs when a send-only channel used in a range
+ // expression.
+ //
+ // Example:
+ // func sum(c chan<- int) {
+ // s := 0
+ // for i := range c {
+ // s += i
+ // }
+ // }
+ InvalidChanRange
+
+ // InvalidIterVar occurs when two iteration variables are used while ranging
+ // over a channel.
+ //
+ // Example:
+ // func f(c chan int) {
+ // for k, v := range c {
+ // println(k, v)
+ // }
+ // }
+ InvalidIterVar
+
+ // InvalidRangeExpr occurs when the type of a range expression is not array,
+ // slice, string, map, or channel.
+ //
+ // Example:
+ // func f(i int) {
+ // for j := range i {
+ // println(j)
+ // }
+ // }
+ InvalidRangeExpr
+
+ /* control flow > switch */
+
+ // MisplacedBreak occurs when a break statement is not within a for, switch,
+ // or select statement of the innermost function definition.
+ //
+ // Example:
+ // func f() {
+ // break
+ // }
+ MisplacedBreak
+
+ // MisplacedContinue occurs when a continue statement is not within a for
+ // loop of the innermost function definition.
+ //
+ // Example:
+ // func sumeven(n int) int {
+ // proceed := func() {
+ // continue
+ // }
+ // sum := 0
+ // for i := 1; i <= n; i++ {
+ // if i % 2 != 0 {
+ // proceed()
+ // }
+ // sum += i
+ // }
+ // return sum
+ // }
+ MisplacedContinue
+
+ // MisplacedFallthrough occurs when a fallthrough statement is not within an
+ // expression switch.
+ //
+ // Example:
+ // func typename(i interface{}) string {
+ // switch i.(type) {
+ // case int64:
+ // fallthrough
+ // case int:
+ // return "int"
+ // }
+ // return "unsupported"
+ // }
+ MisplacedFallthrough
+
+ // DuplicateCase occurs when a type or expression switch has duplicate
+ // cases.
+ //
+ // Example:
+ // func printInt(i int) {
+ // switch i {
+ // case 1:
+ // println("one")
+ // case 1:
+ // println("One")
+ // }
+ // }
+ DuplicateCase
+
+ // DuplicateDefault occurs when a type or expression switch has multiple
+ // default clauses.
+ //
+ // Example:
+ // func printInt(i int) {
+ // switch i {
+ // case 1:
+ // println("one")
+ // default:
+ // println("One")
+ // default:
+ // println("1")
+ // }
+ // }
+ DuplicateDefault
+
+ // BadTypeKeyword occurs when a .(type) expression is used anywhere other
+ // than a type switch.
+ //
+ // Example:
+ // type I interface {
+ // m()
+ // }
+ // var t I
+ // var _ = t.(type)
+ BadTypeKeyword
+
+ // InvalidTypeSwitch occurs when .(type) is used on an expression that is
+ // not of interface type.
+ //
+ // Example:
+ // func f(i int) {
+ // switch x := i.(type) {}
+ // }
+ InvalidTypeSwitch
+
+ /* control flow > select */
+
+ // InvalidSelectCase occurs when a select case is not a channel send or
+ // receive.
+ //
+ // Example:
+ // func checkChan(c <-chan int) bool {
+ // select {
+ // case c:
+ // return true
+ // default:
+ // return false
+ // }
+ // }
+ InvalidSelectCase
+
+ /* control flow > labels and jumps */
+
+ // UndeclaredLabel occurs when an undeclared label is jumped to.
+ //
+ // Example:
+ // func f() {
+ // goto L
+ // }
+ UndeclaredLabel
+
+ // DuplicateLabel occurs when a label is declared more than once.
+ //
+ // Example:
+ // func f() int {
+ // L:
+ // L:
+ // return 1
+ // }
+ DuplicateLabel
+
+ // MisplacedLabel occurs when a break or continue label is not on a for,
+ // switch, or select statement.
+ //
+ // Example:
+ // func f() {
+ // L:
+ // a := []int{1,2,3}
+ // for _, e := range a {
+ // if e > 10 {
+ // break L
+ // }
+ // println(a)
+ // }
+ // }
+ MisplacedLabel
+
+ // UnusedLabel occurs when a label is declared but not used.
+ //
+ // Example:
+ // func f() {
+ // L:
+ // }
+ UnusedLabel
+
+ // JumpOverDecl occurs when a label jumps over a variable declaration.
+ //
+ // Example:
+ // func f() int {
+ // goto L
+ // x := 2
+ // L:
+ // x++
+ // return x
+ // }
+ JumpOverDecl
+
+ // JumpIntoBlock occurs when a forward jump goes to a label inside a nested
+ // block.
+ //
+ // Example:
+ // func f(x int) {
+ // goto L
+ // if x > 0 {
+ // L:
+ // print("inside block")
+ // }
+ // }
+ JumpIntoBlock
+
+ /* control flow > calls */
+
+ // InvalidMethodExpr occurs when a pointer method is called but the argument
+ // is not addressable.
+ //
+ // Example:
+ // type T struct {}
+ //
+ // func (*T) m() int { return 1 }
+ //
+ // var _ = T.m(T{})
+ InvalidMethodExpr
+
+ // WrongArgCount occurs when too few or too many arguments are passed by a
+ // function call.
+ //
+ // Example:
+ // func f(i int) {}
+ // var x = f()
+ WrongArgCount
+
+ // InvalidCall occurs when an expression is called that is not of function
+ // type.
+ //
+ // Example:
+ // var x = "x"
+ // var y = x()
+ InvalidCall
+
+ /* control flow > suspended */
+
+ // UnusedResults occurs when a restricted expression-only built-in function
+ // is suspended via go or defer. Such a suspension discards the results of
+ // these side-effect free built-in functions, and therefore is ineffectual.
+ //
+ // Example:
+ // func f(a []int) int {
+ // defer len(a)
+ // return i
+ // }
+ UnusedResults
+
+ // InvalidDefer occurs when a deferred expression is not a function call,
+ // for example if the expression is a type conversion.
+ //
+ // Example:
+ // func f(i int) int {
+ // defer int32(i)
+ // return i
+ // }
+ InvalidDefer
+
+ // InvalidGo occurs when a go expression is not a function call, for example
+ // if the expression is a type conversion.
+ //
+ // Example:
+ // func f(i int) int {
+ // go int32(i)
+ // return i
+ // }
+ InvalidGo
+)
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go
new file mode 100644
index 00000000000..97f3ec891fa
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go
@@ -0,0 +1,152 @@
+// Code generated by "stringer -type=ErrorCode"; DO NOT EDIT.
+
+package typesinternal
+
+import "strconv"
+
+func _() {
+ // An "invalid array index" compiler error signifies that the constant values have changed.
+ // Re-run the stringer command to generate them again.
+ var x [1]struct{}
+ _ = x[Test-1]
+ _ = x[BlankPkgName-2]
+ _ = x[MismatchedPkgName-3]
+ _ = x[InvalidPkgUse-4]
+ _ = x[BadImportPath-5]
+ _ = x[BrokenImport-6]
+ _ = x[ImportCRenamed-7]
+ _ = x[UnusedImport-8]
+ _ = x[InvalidInitCycle-9]
+ _ = x[DuplicateDecl-10]
+ _ = x[InvalidDeclCycle-11]
+ _ = x[InvalidTypeCycle-12]
+ _ = x[InvalidConstInit-13]
+ _ = x[InvalidConstVal-14]
+ _ = x[InvalidConstType-15]
+ _ = x[UntypedNil-16]
+ _ = x[WrongAssignCount-17]
+ _ = x[UnassignableOperand-18]
+ _ = x[NoNewVar-19]
+ _ = x[MultiValAssignOp-20]
+ _ = x[InvalidIfaceAssign-21]
+ _ = x[InvalidChanAssign-22]
+ _ = x[IncompatibleAssign-23]
+ _ = x[UnaddressableFieldAssign-24]
+ _ = x[NotAType-25]
+ _ = x[InvalidArrayLen-26]
+ _ = x[BlankIfaceMethod-27]
+ _ = x[IncomparableMapKey-28]
+ _ = x[InvalidIfaceEmbed-29]
+ _ = x[InvalidPtrEmbed-30]
+ _ = x[BadRecv-31]
+ _ = x[InvalidRecv-32]
+ _ = x[DuplicateFieldAndMethod-33]
+ _ = x[DuplicateMethod-34]
+ _ = x[InvalidBlank-35]
+ _ = x[InvalidIota-36]
+ _ = x[MissingInitBody-37]
+ _ = x[InvalidInitSig-38]
+ _ = x[InvalidInitDecl-39]
+ _ = x[InvalidMainDecl-40]
+ _ = x[TooManyValues-41]
+ _ = x[NotAnExpr-42]
+ _ = x[TruncatedFloat-43]
+ _ = x[NumericOverflow-44]
+ _ = x[UndefinedOp-45]
+ _ = x[MismatchedTypes-46]
+ _ = x[DivByZero-47]
+ _ = x[NonNumericIncDec-48]
+ _ = x[UnaddressableOperand-49]
+ _ = x[InvalidIndirection-50]
+ _ = x[NonIndexableOperand-51]
+ _ = x[InvalidIndex-52]
+ _ = x[SwappedSliceIndices-53]
+ _ = x[NonSliceableOperand-54]
+ _ = x[InvalidSliceExpr-55]
+ _ = x[InvalidShiftCount-56]
+ _ = x[InvalidShiftOperand-57]
+ _ = x[InvalidReceive-58]
+ _ = x[InvalidSend-59]
+ _ = x[DuplicateLitKey-60]
+ _ = x[MissingLitKey-61]
+ _ = x[InvalidLitIndex-62]
+ _ = x[OversizeArrayLit-63]
+ _ = x[MixedStructLit-64]
+ _ = x[InvalidStructLit-65]
+ _ = x[MissingLitField-66]
+ _ = x[DuplicateLitField-67]
+ _ = x[UnexportedLitField-68]
+ _ = x[InvalidLitField-69]
+ _ = x[UntypedLit-70]
+ _ = x[InvalidLit-71]
+ _ = x[AmbiguousSelector-72]
+ _ = x[UndeclaredImportedName-73]
+ _ = x[UnexportedName-74]
+ _ = x[UndeclaredName-75]
+ _ = x[MissingFieldOrMethod-76]
+ _ = x[BadDotDotDotSyntax-77]
+ _ = x[NonVariadicDotDotDot-78]
+ _ = x[MisplacedDotDotDot-79]
+ _ = x[InvalidDotDotDotOperand-80]
+ _ = x[InvalidDotDotDot-81]
+ _ = x[UncalledBuiltin-82]
+ _ = x[InvalidAppend-83]
+ _ = x[InvalidCap-84]
+ _ = x[InvalidClose-85]
+ _ = x[InvalidCopy-86]
+ _ = x[InvalidComplex-87]
+ _ = x[InvalidDelete-88]
+ _ = x[InvalidImag-89]
+ _ = x[InvalidLen-90]
+ _ = x[SwappedMakeArgs-91]
+ _ = x[InvalidMake-92]
+ _ = x[InvalidReal-93]
+ _ = x[InvalidAssert-94]
+ _ = x[ImpossibleAssert-95]
+ _ = x[InvalidConversion-96]
+ _ = x[InvalidUntypedConversion-97]
+ _ = x[BadOffsetofSyntax-98]
+ _ = x[InvalidOffsetof-99]
+ _ = x[UnusedExpr-100]
+ _ = x[UnusedVar-101]
+ _ = x[MissingReturn-102]
+ _ = x[WrongResultCount-103]
+ _ = x[OutOfScopeResult-104]
+ _ = x[InvalidCond-105]
+ _ = x[InvalidPostDecl-106]
+ _ = x[InvalidChanRange-107]
+ _ = x[InvalidIterVar-108]
+ _ = x[InvalidRangeExpr-109]
+ _ = x[MisplacedBreak-110]
+ _ = x[MisplacedContinue-111]
+ _ = x[MisplacedFallthrough-112]
+ _ = x[DuplicateCase-113]
+ _ = x[DuplicateDefault-114]
+ _ = x[BadTypeKeyword-115]
+ _ = x[InvalidTypeSwitch-116]
+ _ = x[InvalidSelectCase-117]
+ _ = x[UndeclaredLabel-118]
+ _ = x[DuplicateLabel-119]
+ _ = x[MisplacedLabel-120]
+ _ = x[UnusedLabel-121]
+ _ = x[JumpOverDecl-122]
+ _ = x[JumpIntoBlock-123]
+ _ = x[InvalidMethodExpr-124]
+ _ = x[WrongArgCount-125]
+ _ = x[InvalidCall-126]
+ _ = x[UnusedResults-127]
+ _ = x[InvalidDefer-128]
+ _ = x[InvalidGo-129]
+}
+
+const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGo"
+
+var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1747, 1761, 1775, 1786, 1798, 1811, 1828, 1841, 1852, 1865, 1877, 1886}
+
+func (i ErrorCode) String() string {
+ i -= 1
+ if i < 0 || i >= ErrorCode(len(_ErrorCode_index)-1) {
+ return "ErrorCode(" + strconv.FormatInt(int64(i+1), 10) + ")"
+ }
+ return _ErrorCode_name[_ErrorCode_index[i]:_ErrorCode_index[i+1]]
+}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types.go b/vendor/golang.org/x/tools/internal/typesinternal/types.go
index a5bb408e2f1..c3e1a397dbf 100644
--- a/vendor/golang.org/x/tools/internal/typesinternal/types.go
+++ b/vendor/golang.org/x/tools/internal/typesinternal/types.go
@@ -2,9 +2,12 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// Package typesinternal provides access to internal go/types APIs that are not
+// yet exported.
package typesinternal
import (
+ "go/token"
"go/types"
"reflect"
"unsafe"
@@ -26,3 +29,17 @@ func SetUsesCgo(conf *types.Config) bool {
return true
}
+
+func ReadGo116ErrorData(terr types.Error) (ErrorCode, token.Pos, token.Pos, bool) {
+ var data [3]int
+ // By coincidence all of these fields are ints, which simplifies things.
+ v := reflect.ValueOf(terr)
+ for i, name := range []string{"go116code", "go116start", "go116end"} {
+ f := v.FieldByName(name)
+ if !f.IsValid() {
+ return 0, 0, 0, false
+ }
+ data[i] = int(f.Int())
+ }
+ return ErrorCode(data[0]), token.Pos(data[1]), token.Pos(data[2]), true
+}
diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml
index 055480b9ef8..7348c50c0c3 100644
--- a/vendor/gopkg.in/yaml.v2/.travis.yml
+++ b/vendor/gopkg.in/yaml.v2/.travis.yml
@@ -11,6 +11,7 @@ go:
- "1.11.x"
- "1.12.x"
- "1.13.x"
+ - "1.14.x"
- "tip"
go_import_path: gopkg.in/yaml.v2
diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go
index d2c2308f1f4..acf71402cf3 100644
--- a/vendor/gopkg.in/yaml.v2/apic.go
+++ b/vendor/gopkg.in/yaml.v2/apic.go
@@ -79,6 +79,8 @@ func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {
parser.encoding = encoding
}
+var disableLineWrapping = false
+
// Create a new emitter object.
func yaml_emitter_initialize(emitter *yaml_emitter_t) {
*emitter = yaml_emitter_t{
@@ -86,7 +88,9 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) {
raw_buffer: make([]byte, 0, output_raw_buffer_size),
states: make([]yaml_emitter_state_t, 0, initial_stack_size),
events: make([]yaml_event_t, 0, initial_queue_size),
- best_width: -1,
+ }
+ if disableLineWrapping {
+ emitter.best_width = -1
}
}
diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go
index 89650e293ac..30813884c06 100644
--- a/vendor/gopkg.in/yaml.v2/yaml.go
+++ b/vendor/gopkg.in/yaml.v2/yaml.go
@@ -175,7 +175,7 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) {
// Zero valued structs will be omitted if all their public
// fields are zero, unless they implement an IsZero
// method (see the IsZeroer interface type), in which
-// case the field will be included if that method returns true.
+// case the field will be excluded if IsZero returns true.
//
// flow Marshal using a flow style (useful for structs,
// sequences and maps).
@@ -464,3 +464,15 @@ func isZero(v reflect.Value) bool {
}
return false
}
+
+// FutureLineWrap globally disables line wrapping when encoding long strings.
+// This is a temporary and thus deprecated method introduced to faciliate
+// migration towards v3, which offers more control of line lengths on
+// individual encodings, and has a default matching the behavior introduced
+// by this function.
+//
+// The default formatting of v2 was erroneously changed in v2.3.0 and reverted
+// in v2.4.0, at which point this function was introduced to help migration.
+func FutureLineWrap() {
+ disableLineWrapping = true
+}
diff --git a/vendor/gopkg.in/yaml.v3/.travis.yml b/vendor/gopkg.in/yaml.v3/.travis.yml
new file mode 100644
index 00000000000..04d4dae09c7
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/.travis.yml
@@ -0,0 +1,16 @@
+language: go
+
+go:
+ - "1.4.x"
+ - "1.5.x"
+ - "1.6.x"
+ - "1.7.x"
+ - "1.8.x"
+ - "1.9.x"
+ - "1.10.x"
+ - "1.11.x"
+ - "1.12.x"
+ - "1.13.x"
+ - "tip"
+
+go_import_path: gopkg.in/yaml.v3
diff --git a/vendor/gopkg.in/yaml.v3/LICENSE b/vendor/gopkg.in/yaml.v3/LICENSE
new file mode 100644
index 00000000000..2683e4bb1f2
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/LICENSE
@@ -0,0 +1,50 @@
+
+This project is covered by two different licenses: MIT and Apache.
+
+#### MIT License ####
+
+The following files were ported to Go from C files of libyaml, and thus
+are still covered by their original MIT license, with the additional
+copyright staring in 2011 when the project was ported over:
+
+ apic.go emitterc.go parserc.go readerc.go scannerc.go
+ writerc.go yamlh.go yamlprivateh.go
+
+Copyright (c) 2006-2010 Kirill Simonov
+Copyright (c) 2006-2011 Kirill Simonov
+
+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.
+
+### Apache License ###
+
+All the remaining project files are covered by the Apache license:
+
+Copyright (c) 2011-2019 Canonical Ltd
+
+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/gopkg.in/yaml.v3/NOTICE b/vendor/gopkg.in/yaml.v3/NOTICE
new file mode 100644
index 00000000000..866d74a7ad7
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/NOTICE
@@ -0,0 +1,13 @@
+Copyright 2011-2016 Canonical Ltd.
+
+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/gopkg.in/yaml.v3/README.md b/vendor/gopkg.in/yaml.v3/README.md
new file mode 100644
index 00000000000..08eb1babddf
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/README.md
@@ -0,0 +1,150 @@
+# YAML support for the Go language
+
+Introduction
+------------
+
+The yaml package enables Go programs to comfortably encode and decode YAML
+values. It was developed within [Canonical](https://www.canonical.com) as
+part of the [juju](https://juju.ubuntu.com) project, and is based on a
+pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)
+C library to parse and generate YAML data quickly and reliably.
+
+Compatibility
+-------------
+
+The yaml package supports most of YAML 1.2, but preserves some behavior
+from 1.1 for backwards compatibility.
+
+Specifically, as of v3 of the yaml package:
+
+ - YAML 1.1 bools (_yes/no, on/off_) are supported as long as they are being
+ decoded into a typed bool value. Otherwise they behave as a string. Booleans
+ in YAML 1.2 are _true/false_ only.
+ - Octals encode and decode as _0777_ per YAML 1.1, rather than _0o777_
+ as specified in YAML 1.2, because most parsers still use the old format.
+ Octals in the _0o777_ format are supported though, so new files work.
+ - Does not support base-60 floats. These are gone from YAML 1.2, and were
+ actually never supported by this package as it's clearly a poor choice.
+
+and offers backwards
+compatibility with YAML 1.1 in some cases.
+1.2, including support for
+anchors, tags, map merging, etc. Multi-document unmarshalling is not yet
+implemented, and base-60 floats from YAML 1.1 are purposefully not
+supported since they're a poor design and are gone in YAML 1.2.
+
+Installation and usage
+----------------------
+
+The import path for the package is *gopkg.in/yaml.v3*.
+
+To install it, run:
+
+ go get gopkg.in/yaml.v3
+
+API documentation
+-----------------
+
+If opened in a browser, the import path itself leads to the API documentation:
+
+ - [https://gopkg.in/yaml.v3](https://gopkg.in/yaml.v3)
+
+API stability
+-------------
+
+The package API for yaml v3 will remain stable as described in [gopkg.in](https://gopkg.in).
+
+
+License
+-------
+
+The yaml package is licensed under the MIT and Apache License 2.0 licenses.
+Please see the LICENSE file for details.
+
+
+Example
+-------
+
+```Go
+package main
+
+import (
+ "fmt"
+ "log"
+
+ "gopkg.in/yaml.v3"
+)
+
+var data = `
+a: Easy!
+b:
+ c: 2
+ d: [3, 4]
+`
+
+// Note: struct fields must be public in order for unmarshal to
+// correctly populate the data.
+type T struct {
+ A string
+ B struct {
+ RenamedC int `yaml:"c"`
+ D []int `yaml:",flow"`
+ }
+}
+
+func main() {
+ t := T{}
+
+ err := yaml.Unmarshal([]byte(data), &t)
+ if err != nil {
+ log.Fatalf("error: %v", err)
+ }
+ fmt.Printf("--- t:\n%v\n\n", t)
+
+ d, err := yaml.Marshal(&t)
+ if err != nil {
+ log.Fatalf("error: %v", err)
+ }
+ fmt.Printf("--- t dump:\n%s\n\n", string(d))
+
+ m := make(map[interface{}]interface{})
+
+ err = yaml.Unmarshal([]byte(data), &m)
+ if err != nil {
+ log.Fatalf("error: %v", err)
+ }
+ fmt.Printf("--- m:\n%v\n\n", m)
+
+ d, err = yaml.Marshal(&m)
+ if err != nil {
+ log.Fatalf("error: %v", err)
+ }
+ fmt.Printf("--- m dump:\n%s\n\n", string(d))
+}
+```
+
+This example will generate the following output:
+
+```
+--- t:
+{Easy! {2 [3 4]}}
+
+--- t dump:
+a: Easy!
+b:
+ c: 2
+ d: [3, 4]
+
+
+--- m:
+map[a:Easy! b:map[c:2 d:[3 4]]]
+
+--- m dump:
+a: Easy!
+b:
+ c: 2
+ d:
+ - 3
+ - 4
+```
+
diff --git a/vendor/gopkg.in/yaml.v3/apic.go b/vendor/gopkg.in/yaml.v3/apic.go
new file mode 100644
index 00000000000..65846e67497
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/apic.go
@@ -0,0 +1,746 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+import (
+ "io"
+)
+
+func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {
+ //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens))
+
+ // Check if we can move the queue at the beginning of the buffer.
+ if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {
+ if parser.tokens_head != len(parser.tokens) {
+ copy(parser.tokens, parser.tokens[parser.tokens_head:])
+ }
+ parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]
+ parser.tokens_head = 0
+ }
+ parser.tokens = append(parser.tokens, *token)
+ if pos < 0 {
+ return
+ }
+ copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])
+ parser.tokens[parser.tokens_head+pos] = *token
+}
+
+// Create a new parser object.
+func yaml_parser_initialize(parser *yaml_parser_t) bool {
+ *parser = yaml_parser_t{
+ raw_buffer: make([]byte, 0, input_raw_buffer_size),
+ buffer: make([]byte, 0, input_buffer_size),
+ }
+ return true
+}
+
+// Destroy a parser object.
+func yaml_parser_delete(parser *yaml_parser_t) {
+ *parser = yaml_parser_t{}
+}
+
+// String read handler.
+func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {
+ if parser.input_pos == len(parser.input) {
+ return 0, io.EOF
+ }
+ n = copy(buffer, parser.input[parser.input_pos:])
+ parser.input_pos += n
+ return n, nil
+}
+
+// Reader read handler.
+func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {
+ return parser.input_reader.Read(buffer)
+}
+
+// Set a string input.
+func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {
+ if parser.read_handler != nil {
+ panic("must set the input source only once")
+ }
+ parser.read_handler = yaml_string_read_handler
+ parser.input = input
+ parser.input_pos = 0
+}
+
+// Set a file input.
+func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) {
+ if parser.read_handler != nil {
+ panic("must set the input source only once")
+ }
+ parser.read_handler = yaml_reader_read_handler
+ parser.input_reader = r
+}
+
+// Set the source encoding.
+func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {
+ if parser.encoding != yaml_ANY_ENCODING {
+ panic("must set the encoding only once")
+ }
+ parser.encoding = encoding
+}
+
+// Create a new emitter object.
+func yaml_emitter_initialize(emitter *yaml_emitter_t) {
+ *emitter = yaml_emitter_t{
+ buffer: make([]byte, output_buffer_size),
+ raw_buffer: make([]byte, 0, output_raw_buffer_size),
+ states: make([]yaml_emitter_state_t, 0, initial_stack_size),
+ events: make([]yaml_event_t, 0, initial_queue_size),
+ }
+}
+
+// Destroy an emitter object.
+func yaml_emitter_delete(emitter *yaml_emitter_t) {
+ *emitter = yaml_emitter_t{}
+}
+
+// String write handler.
+func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {
+ *emitter.output_buffer = append(*emitter.output_buffer, buffer...)
+ return nil
+}
+
+// yaml_writer_write_handler uses emitter.output_writer to write the
+// emitted text.
+func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error {
+ _, err := emitter.output_writer.Write(buffer)
+ return err
+}
+
+// Set a string output.
+func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {
+ if emitter.write_handler != nil {
+ panic("must set the output target only once")
+ }
+ emitter.write_handler = yaml_string_write_handler
+ emitter.output_buffer = output_buffer
+}
+
+// Set a file output.
+func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {
+ if emitter.write_handler != nil {
+ panic("must set the output target only once")
+ }
+ emitter.write_handler = yaml_writer_write_handler
+ emitter.output_writer = w
+}
+
+// Set the output encoding.
+func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {
+ if emitter.encoding != yaml_ANY_ENCODING {
+ panic("must set the output encoding only once")
+ }
+ emitter.encoding = encoding
+}
+
+// Set the canonical output style.
+func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {
+ emitter.canonical = canonical
+}
+
+// Set the indentation increment.
+func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {
+ if indent < 2 || indent > 9 {
+ indent = 2
+ }
+ emitter.best_indent = indent
+}
+
+// Set the preferred line width.
+func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {
+ if width < 0 {
+ width = -1
+ }
+ emitter.best_width = width
+}
+
+// Set if unescaped non-ASCII characters are allowed.
+func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {
+ emitter.unicode = unicode
+}
+
+// Set the preferred line break character.
+func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {
+ emitter.line_break = line_break
+}
+
+///*
+// * Destroy a token object.
+// */
+//
+//YAML_DECLARE(void)
+//yaml_token_delete(yaml_token_t *token)
+//{
+// assert(token); // Non-NULL token object expected.
+//
+// switch (token.type)
+// {
+// case YAML_TAG_DIRECTIVE_TOKEN:
+// yaml_free(token.data.tag_directive.handle);
+// yaml_free(token.data.tag_directive.prefix);
+// break;
+//
+// case YAML_ALIAS_TOKEN:
+// yaml_free(token.data.alias.value);
+// break;
+//
+// case YAML_ANCHOR_TOKEN:
+// yaml_free(token.data.anchor.value);
+// break;
+//
+// case YAML_TAG_TOKEN:
+// yaml_free(token.data.tag.handle);
+// yaml_free(token.data.tag.suffix);
+// break;
+//
+// case YAML_SCALAR_TOKEN:
+// yaml_free(token.data.scalar.value);
+// break;
+//
+// default:
+// break;
+// }
+//
+// memset(token, 0, sizeof(yaml_token_t));
+//}
+//
+///*
+// * Check if a string is a valid UTF-8 sequence.
+// *
+// * Check 'reader.c' for more details on UTF-8 encoding.
+// */
+//
+//static int
+//yaml_check_utf8(yaml_char_t *start, size_t length)
+//{
+// yaml_char_t *end = start+length;
+// yaml_char_t *pointer = start;
+//
+// while (pointer < end) {
+// unsigned char octet;
+// unsigned int width;
+// unsigned int value;
+// size_t k;
+//
+// octet = pointer[0];
+// width = (octet & 0x80) == 0x00 ? 1 :
+// (octet & 0xE0) == 0xC0 ? 2 :
+// (octet & 0xF0) == 0xE0 ? 3 :
+// (octet & 0xF8) == 0xF0 ? 4 : 0;
+// value = (octet & 0x80) == 0x00 ? octet & 0x7F :
+// (octet & 0xE0) == 0xC0 ? octet & 0x1F :
+// (octet & 0xF0) == 0xE0 ? octet & 0x0F :
+// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
+// if (!width) return 0;
+// if (pointer+width > end) return 0;
+// for (k = 1; k < width; k ++) {
+// octet = pointer[k];
+// if ((octet & 0xC0) != 0x80) return 0;
+// value = (value << 6) + (octet & 0x3F);
+// }
+// if (!((width == 1) ||
+// (width == 2 && value >= 0x80) ||
+// (width == 3 && value >= 0x800) ||
+// (width == 4 && value >= 0x10000))) return 0;
+//
+// pointer += width;
+// }
+//
+// return 1;
+//}
+//
+
+// Create STREAM-START.
+func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) {
+ *event = yaml_event_t{
+ typ: yaml_STREAM_START_EVENT,
+ encoding: encoding,
+ }
+}
+
+// Create STREAM-END.
+func yaml_stream_end_event_initialize(event *yaml_event_t) {
+ *event = yaml_event_t{
+ typ: yaml_STREAM_END_EVENT,
+ }
+}
+
+// Create DOCUMENT-START.
+func yaml_document_start_event_initialize(
+ event *yaml_event_t,
+ version_directive *yaml_version_directive_t,
+ tag_directives []yaml_tag_directive_t,
+ implicit bool,
+) {
+ *event = yaml_event_t{
+ typ: yaml_DOCUMENT_START_EVENT,
+ version_directive: version_directive,
+ tag_directives: tag_directives,
+ implicit: implicit,
+ }
+}
+
+// Create DOCUMENT-END.
+func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) {
+ *event = yaml_event_t{
+ typ: yaml_DOCUMENT_END_EVENT,
+ implicit: implicit,
+ }
+}
+
+// Create ALIAS.
+func yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool {
+ *event = yaml_event_t{
+ typ: yaml_ALIAS_EVENT,
+ anchor: anchor,
+ }
+ return true
+}
+
+// Create SCALAR.
+func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {
+ *event = yaml_event_t{
+ typ: yaml_SCALAR_EVENT,
+ anchor: anchor,
+ tag: tag,
+ value: value,
+ implicit: plain_implicit,
+ quoted_implicit: quoted_implicit,
+ style: yaml_style_t(style),
+ }
+ return true
+}
+
+// Create SEQUENCE-START.
+func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_START_EVENT,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(style),
+ }
+ return true
+}
+
+// Create SEQUENCE-END.
+func yaml_sequence_end_event_initialize(event *yaml_event_t) bool {
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_END_EVENT,
+ }
+ return true
+}
+
+// Create MAPPING-START.
+func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) {
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_START_EVENT,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(style),
+ }
+}
+
+// Create MAPPING-END.
+func yaml_mapping_end_event_initialize(event *yaml_event_t) {
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_END_EVENT,
+ }
+}
+
+// Destroy an event object.
+func yaml_event_delete(event *yaml_event_t) {
+ *event = yaml_event_t{}
+}
+
+///*
+// * Create a document object.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_initialize(document *yaml_document_t,
+// version_directive *yaml_version_directive_t,
+// tag_directives_start *yaml_tag_directive_t,
+// tag_directives_end *yaml_tag_directive_t,
+// start_implicit int, end_implicit int)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+// struct {
+// start *yaml_node_t
+// end *yaml_node_t
+// top *yaml_node_t
+// } nodes = { NULL, NULL, NULL }
+// version_directive_copy *yaml_version_directive_t = NULL
+// struct {
+// start *yaml_tag_directive_t
+// end *yaml_tag_directive_t
+// top *yaml_tag_directive_t
+// } tag_directives_copy = { NULL, NULL, NULL }
+// value yaml_tag_directive_t = { NULL, NULL }
+// mark yaml_mark_t = { 0, 0, 0 }
+//
+// assert(document) // Non-NULL document object is expected.
+// assert((tag_directives_start && tag_directives_end) ||
+// (tag_directives_start == tag_directives_end))
+// // Valid tag directives are expected.
+//
+// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error
+//
+// if (version_directive) {
+// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))
+// if (!version_directive_copy) goto error
+// version_directive_copy.major = version_directive.major
+// version_directive_copy.minor = version_directive.minor
+// }
+//
+// if (tag_directives_start != tag_directives_end) {
+// tag_directive *yaml_tag_directive_t
+// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
+// goto error
+// for (tag_directive = tag_directives_start
+// tag_directive != tag_directives_end; tag_directive ++) {
+// assert(tag_directive.handle)
+// assert(tag_directive.prefix)
+// if (!yaml_check_utf8(tag_directive.handle,
+// strlen((char *)tag_directive.handle)))
+// goto error
+// if (!yaml_check_utf8(tag_directive.prefix,
+// strlen((char *)tag_directive.prefix)))
+// goto error
+// value.handle = yaml_strdup(tag_directive.handle)
+// value.prefix = yaml_strdup(tag_directive.prefix)
+// if (!value.handle || !value.prefix) goto error
+// if (!PUSH(&context, tag_directives_copy, value))
+// goto error
+// value.handle = NULL
+// value.prefix = NULL
+// }
+// }
+//
+// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,
+// tag_directives_copy.start, tag_directives_copy.top,
+// start_implicit, end_implicit, mark, mark)
+//
+// return 1
+//
+//error:
+// STACK_DEL(&context, nodes)
+// yaml_free(version_directive_copy)
+// while (!STACK_EMPTY(&context, tag_directives_copy)) {
+// value yaml_tag_directive_t = POP(&context, tag_directives_copy)
+// yaml_free(value.handle)
+// yaml_free(value.prefix)
+// }
+// STACK_DEL(&context, tag_directives_copy)
+// yaml_free(value.handle)
+// yaml_free(value.prefix)
+//
+// return 0
+//}
+//
+///*
+// * Destroy a document object.
+// */
+//
+//YAML_DECLARE(void)
+//yaml_document_delete(document *yaml_document_t)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+// tag_directive *yaml_tag_directive_t
+//
+// context.error = YAML_NO_ERROR // Eliminate a compiler warning.
+//
+// assert(document) // Non-NULL document object is expected.
+//
+// while (!STACK_EMPTY(&context, document.nodes)) {
+// node yaml_node_t = POP(&context, document.nodes)
+// yaml_free(node.tag)
+// switch (node.type) {
+// case YAML_SCALAR_NODE:
+// yaml_free(node.data.scalar.value)
+// break
+// case YAML_SEQUENCE_NODE:
+// STACK_DEL(&context, node.data.sequence.items)
+// break
+// case YAML_MAPPING_NODE:
+// STACK_DEL(&context, node.data.mapping.pairs)
+// break
+// default:
+// assert(0) // Should not happen.
+// }
+// }
+// STACK_DEL(&context, document.nodes)
+//
+// yaml_free(document.version_directive)
+// for (tag_directive = document.tag_directives.start
+// tag_directive != document.tag_directives.end
+// tag_directive++) {
+// yaml_free(tag_directive.handle)
+// yaml_free(tag_directive.prefix)
+// }
+// yaml_free(document.tag_directives.start)
+//
+// memset(document, 0, sizeof(yaml_document_t))
+//}
+//
+///**
+// * Get a document node.
+// */
+//
+//YAML_DECLARE(yaml_node_t *)
+//yaml_document_get_node(document *yaml_document_t, index int)
+//{
+// assert(document) // Non-NULL document object is expected.
+//
+// if (index > 0 && document.nodes.start + index <= document.nodes.top) {
+// return document.nodes.start + index - 1
+// }
+// return NULL
+//}
+//
+///**
+// * Get the root object.
+// */
+//
+//YAML_DECLARE(yaml_node_t *)
+//yaml_document_get_root_node(document *yaml_document_t)
+//{
+// assert(document) // Non-NULL document object is expected.
+//
+// if (document.nodes.top != document.nodes.start) {
+// return document.nodes.start
+// }
+// return NULL
+//}
+//
+///*
+// * Add a scalar node to a document.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_add_scalar(document *yaml_document_t,
+// tag *yaml_char_t, value *yaml_char_t, length int,
+// style yaml_scalar_style_t)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+// mark yaml_mark_t = { 0, 0, 0 }
+// tag_copy *yaml_char_t = NULL
+// value_copy *yaml_char_t = NULL
+// node yaml_node_t
+//
+// assert(document) // Non-NULL document object is expected.
+// assert(value) // Non-NULL value is expected.
+//
+// if (!tag) {
+// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG
+// }
+//
+// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
+// tag_copy = yaml_strdup(tag)
+// if (!tag_copy) goto error
+//
+// if (length < 0) {
+// length = strlen((char *)value)
+// }
+//
+// if (!yaml_check_utf8(value, length)) goto error
+// value_copy = yaml_malloc(length+1)
+// if (!value_copy) goto error
+// memcpy(value_copy, value, length)
+// value_copy[length] = '\0'
+//
+// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)
+// if (!PUSH(&context, document.nodes, node)) goto error
+//
+// return document.nodes.top - document.nodes.start
+//
+//error:
+// yaml_free(tag_copy)
+// yaml_free(value_copy)
+//
+// return 0
+//}
+//
+///*
+// * Add a sequence node to a document.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_add_sequence(document *yaml_document_t,
+// tag *yaml_char_t, style yaml_sequence_style_t)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+// mark yaml_mark_t = { 0, 0, 0 }
+// tag_copy *yaml_char_t = NULL
+// struct {
+// start *yaml_node_item_t
+// end *yaml_node_item_t
+// top *yaml_node_item_t
+// } items = { NULL, NULL, NULL }
+// node yaml_node_t
+//
+// assert(document) // Non-NULL document object is expected.
+//
+// if (!tag) {
+// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG
+// }
+//
+// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
+// tag_copy = yaml_strdup(tag)
+// if (!tag_copy) goto error
+//
+// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error
+//
+// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,
+// style, mark, mark)
+// if (!PUSH(&context, document.nodes, node)) goto error
+//
+// return document.nodes.top - document.nodes.start
+//
+//error:
+// STACK_DEL(&context, items)
+// yaml_free(tag_copy)
+//
+// return 0
+//}
+//
+///*
+// * Add a mapping node to a document.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_add_mapping(document *yaml_document_t,
+// tag *yaml_char_t, style yaml_mapping_style_t)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+// mark yaml_mark_t = { 0, 0, 0 }
+// tag_copy *yaml_char_t = NULL
+// struct {
+// start *yaml_node_pair_t
+// end *yaml_node_pair_t
+// top *yaml_node_pair_t
+// } pairs = { NULL, NULL, NULL }
+// node yaml_node_t
+//
+// assert(document) // Non-NULL document object is expected.
+//
+// if (!tag) {
+// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG
+// }
+//
+// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
+// tag_copy = yaml_strdup(tag)
+// if (!tag_copy) goto error
+//
+// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error
+//
+// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,
+// style, mark, mark)
+// if (!PUSH(&context, document.nodes, node)) goto error
+//
+// return document.nodes.top - document.nodes.start
+//
+//error:
+// STACK_DEL(&context, pairs)
+// yaml_free(tag_copy)
+//
+// return 0
+//}
+//
+///*
+// * Append an item to a sequence node.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_append_sequence_item(document *yaml_document_t,
+// sequence int, item int)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+//
+// assert(document) // Non-NULL document is required.
+// assert(sequence > 0
+// && document.nodes.start + sequence <= document.nodes.top)
+// // Valid sequence id is required.
+// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)
+// // A sequence node is required.
+// assert(item > 0 && document.nodes.start + item <= document.nodes.top)
+// // Valid item id is required.
+//
+// if (!PUSH(&context,
+// document.nodes.start[sequence-1].data.sequence.items, item))
+// return 0
+//
+// return 1
+//}
+//
+///*
+// * Append a pair of a key and a value to a mapping node.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_append_mapping_pair(document *yaml_document_t,
+// mapping int, key int, value int)
+//{
+// struct {
+// error yaml_error_type_t
+// } context
+//
+// pair yaml_node_pair_t
+//
+// assert(document) // Non-NULL document is required.
+// assert(mapping > 0
+// && document.nodes.start + mapping <= document.nodes.top)
+// // Valid mapping id is required.
+// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)
+// // A mapping node is required.
+// assert(key > 0 && document.nodes.start + key <= document.nodes.top)
+// // Valid key id is required.
+// assert(value > 0 && document.nodes.start + value <= document.nodes.top)
+// // Valid value id is required.
+//
+// pair.key = key
+// pair.value = value
+//
+// if (!PUSH(&context,
+// document.nodes.start[mapping-1].data.mapping.pairs, pair))
+// return 0
+//
+// return 1
+//}
+//
+//
diff --git a/vendor/gopkg.in/yaml.v3/decode.go b/vendor/gopkg.in/yaml.v3/decode.go
new file mode 100644
index 00000000000..be63169b719
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/decode.go
@@ -0,0 +1,931 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+//
+// 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.
+
+package yaml
+
+import (
+ "encoding"
+ "encoding/base64"
+ "fmt"
+ "io"
+ "math"
+ "reflect"
+ "strconv"
+ "time"
+)
+
+// ----------------------------------------------------------------------------
+// Parser, produces a node tree out of a libyaml event stream.
+
+type parser struct {
+ parser yaml_parser_t
+ event yaml_event_t
+ doc *Node
+ anchors map[string]*Node
+ doneInit bool
+}
+
+func newParser(b []byte) *parser {
+ p := parser{}
+ if !yaml_parser_initialize(&p.parser) {
+ panic("failed to initialize YAML emitter")
+ }
+ if len(b) == 0 {
+ b = []byte{'\n'}
+ }
+ yaml_parser_set_input_string(&p.parser, b)
+ return &p
+}
+
+func newParserFromReader(r io.Reader) *parser {
+ p := parser{}
+ if !yaml_parser_initialize(&p.parser) {
+ panic("failed to initialize YAML emitter")
+ }
+ yaml_parser_set_input_reader(&p.parser, r)
+ return &p
+}
+
+func (p *parser) init() {
+ if p.doneInit {
+ return
+ }
+ p.anchors = make(map[string]*Node)
+ p.expect(yaml_STREAM_START_EVENT)
+ p.doneInit = true
+}
+
+func (p *parser) destroy() {
+ if p.event.typ != yaml_NO_EVENT {
+ yaml_event_delete(&p.event)
+ }
+ yaml_parser_delete(&p.parser)
+}
+
+// expect consumes an event from the event stream and
+// checks that it's of the expected type.
+func (p *parser) expect(e yaml_event_type_t) {
+ if p.event.typ == yaml_NO_EVENT {
+ if !yaml_parser_parse(&p.parser, &p.event) {
+ p.fail()
+ }
+ }
+ if p.event.typ == yaml_STREAM_END_EVENT {
+ failf("attempted to go past the end of stream; corrupted value?")
+ }
+ if p.event.typ != e {
+ p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ)
+ p.fail()
+ }
+ yaml_event_delete(&p.event)
+ p.event.typ = yaml_NO_EVENT
+}
+
+// peek peeks at the next event in the event stream,
+// puts the results into p.event and returns the event type.
+func (p *parser) peek() yaml_event_type_t {
+ if p.event.typ != yaml_NO_EVENT {
+ return p.event.typ
+ }
+ if !yaml_parser_parse(&p.parser, &p.event) {
+ p.fail()
+ }
+ return p.event.typ
+}
+
+func (p *parser) fail() {
+ var where string
+ var line int
+ if p.parser.problem_mark.line != 0 {
+ line = p.parser.problem_mark.line
+ // Scanner errors don't iterate line before returning error
+ if p.parser.error == yaml_SCANNER_ERROR {
+ line++
+ }
+ } else if p.parser.context_mark.line != 0 {
+ line = p.parser.context_mark.line
+ }
+ if line != 0 {
+ where = "line " + strconv.Itoa(line) + ": "
+ }
+ var msg string
+ if len(p.parser.problem) > 0 {
+ msg = p.parser.problem
+ } else {
+ msg = "unknown problem parsing YAML content"
+ }
+ failf("%s%s", where, msg)
+}
+
+func (p *parser) anchor(n *Node, anchor []byte) {
+ if anchor != nil {
+ n.Anchor = string(anchor)
+ p.anchors[n.Anchor] = n
+ }
+}
+
+func (p *parser) parse() *Node {
+ p.init()
+ switch p.peek() {
+ case yaml_SCALAR_EVENT:
+ return p.scalar()
+ case yaml_ALIAS_EVENT:
+ return p.alias()
+ case yaml_MAPPING_START_EVENT:
+ return p.mapping()
+ case yaml_SEQUENCE_START_EVENT:
+ return p.sequence()
+ case yaml_DOCUMENT_START_EVENT:
+ return p.document()
+ case yaml_STREAM_END_EVENT:
+ // Happens when attempting to decode an empty buffer.
+ return nil
+ case yaml_TAIL_COMMENT_EVENT:
+ panic("internal error: unexpected tail comment event (please report)")
+ default:
+ panic("internal error: attempted to parse unknown event (please report): " + p.event.typ.String())
+ }
+}
+
+func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node {
+ var style Style
+ if tag != "" && tag != "!" {
+ tag = shortTag(tag)
+ style = TaggedStyle
+ } else if defaultTag != "" {
+ tag = defaultTag
+ } else if kind == ScalarNode {
+ tag, _ = resolve("", value)
+ }
+ return &Node{
+ Kind: kind,
+ Tag: tag,
+ Value: value,
+ Style: style,
+ Line: p.event.start_mark.line + 1,
+ Column: p.event.start_mark.column + 1,
+ HeadComment: string(p.event.head_comment),
+ LineComment: string(p.event.line_comment),
+ FootComment: string(p.event.foot_comment),
+ }
+}
+
+func (p *parser) parseChild(parent *Node) *Node {
+ child := p.parse()
+ parent.Content = append(parent.Content, child)
+ return child
+}
+
+func (p *parser) document() *Node {
+ n := p.node(DocumentNode, "", "", "")
+ p.doc = n
+ p.expect(yaml_DOCUMENT_START_EVENT)
+ p.parseChild(n)
+ if p.peek() == yaml_DOCUMENT_END_EVENT {
+ n.FootComment = string(p.event.foot_comment)
+ }
+ p.expect(yaml_DOCUMENT_END_EVENT)
+ return n
+}
+
+func (p *parser) alias() *Node {
+ n := p.node(AliasNode, "", "", string(p.event.anchor))
+ n.Alias = p.anchors[n.Value]
+ if n.Alias == nil {
+ failf("unknown anchor '%s' referenced", n.Value)
+ }
+ p.expect(yaml_ALIAS_EVENT)
+ return n
+}
+
+func (p *parser) scalar() *Node {
+ var parsedStyle = p.event.scalar_style()
+ var nodeStyle Style
+ switch {
+ case parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0:
+ nodeStyle = DoubleQuotedStyle
+ case parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0:
+ nodeStyle = SingleQuotedStyle
+ case parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0:
+ nodeStyle = LiteralStyle
+ case parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0:
+ nodeStyle = FoldedStyle
+ }
+ var nodeValue = string(p.event.value)
+ var nodeTag = string(p.event.tag)
+ var defaultTag string
+ if nodeStyle == 0 {
+ if nodeValue == "<<" {
+ defaultTag = mergeTag
+ }
+ } else {
+ defaultTag = strTag
+ }
+ n := p.node(ScalarNode, defaultTag, nodeTag, nodeValue)
+ n.Style |= nodeStyle
+ p.anchor(n, p.event.anchor)
+ p.expect(yaml_SCALAR_EVENT)
+ return n
+}
+
+func (p *parser) sequence() *Node {
+ n := p.node(SequenceNode, seqTag, string(p.event.tag), "")
+ if p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 {
+ n.Style |= FlowStyle
+ }
+ p.anchor(n, p.event.anchor)
+ p.expect(yaml_SEQUENCE_START_EVENT)
+ for p.peek() != yaml_SEQUENCE_END_EVENT {
+ p.parseChild(n)
+ }
+ n.LineComment = string(p.event.line_comment)
+ n.FootComment = string(p.event.foot_comment)
+ p.expect(yaml_SEQUENCE_END_EVENT)
+ return n
+}
+
+func (p *parser) mapping() *Node {
+ n := p.node(MappingNode, mapTag, string(p.event.tag), "")
+ block := true
+ if p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 {
+ block = false
+ n.Style |= FlowStyle
+ }
+ p.anchor(n, p.event.anchor)
+ p.expect(yaml_MAPPING_START_EVENT)
+ for p.peek() != yaml_MAPPING_END_EVENT {
+ k := p.parseChild(n)
+ if block && k.FootComment != "" {
+ // Must be a foot comment for the prior value when being dedented.
+ if len(n.Content) > 2 {
+ n.Content[len(n.Content)-3].FootComment = k.FootComment
+ k.FootComment = ""
+ }
+ }
+ v := p.parseChild(n)
+ if k.FootComment == "" && v.FootComment != "" {
+ k.FootComment = v.FootComment
+ v.FootComment = ""
+ }
+ if p.peek() == yaml_TAIL_COMMENT_EVENT {
+ if k.FootComment == "" {
+ k.FootComment = string(p.event.foot_comment)
+ }
+ p.expect(yaml_TAIL_COMMENT_EVENT)
+ }
+ }
+ n.LineComment = string(p.event.line_comment)
+ n.FootComment = string(p.event.foot_comment)
+ if n.Style&FlowStyle == 0 && n.FootComment != "" && len(n.Content) > 1 {
+ n.Content[len(n.Content)-2].FootComment = n.FootComment
+ n.FootComment = ""
+ }
+ p.expect(yaml_MAPPING_END_EVENT)
+ return n
+}
+
+// ----------------------------------------------------------------------------
+// Decoder, unmarshals a node into a provided value.
+
+type decoder struct {
+ doc *Node
+ aliases map[*Node]bool
+ terrors []string
+
+ stringMapType reflect.Type
+ generalMapType reflect.Type
+
+ knownFields bool
+ uniqueKeys bool
+ decodeCount int
+ aliasCount int
+ aliasDepth int
+}
+
+var (
+ nodeType = reflect.TypeOf(Node{})
+ durationType = reflect.TypeOf(time.Duration(0))
+ stringMapType = reflect.TypeOf(map[string]interface{}{})
+ generalMapType = reflect.TypeOf(map[interface{}]interface{}{})
+ ifaceType = generalMapType.Elem()
+ timeType = reflect.TypeOf(time.Time{})
+ ptrTimeType = reflect.TypeOf(&time.Time{})
+)
+
+func newDecoder() *decoder {
+ d := &decoder{
+ stringMapType: stringMapType,
+ generalMapType: generalMapType,
+ uniqueKeys: true,
+ }
+ d.aliases = make(map[*Node]bool)
+ return d
+}
+
+func (d *decoder) terror(n *Node, tag string, out reflect.Value) {
+ if n.Tag != "" {
+ tag = n.Tag
+ }
+ value := n.Value
+ if tag != seqTag && tag != mapTag {
+ if len(value) > 10 {
+ value = " `" + value[:7] + "...`"
+ } else {
+ value = " `" + value + "`"
+ }
+ }
+ d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.Line, shortTag(tag), value, out.Type()))
+}
+
+func (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) {
+ err := u.UnmarshalYAML(n)
+ if e, ok := err.(*TypeError); ok {
+ d.terrors = append(d.terrors, e.Errors...)
+ return false
+ }
+ if err != nil {
+ fail(err)
+ }
+ return true
+}
+
+func (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) {
+ terrlen := len(d.terrors)
+ err := u.UnmarshalYAML(func(v interface{}) (err error) {
+ defer handleErr(&err)
+ d.unmarshal(n, reflect.ValueOf(v))
+ if len(d.terrors) > terrlen {
+ issues := d.terrors[terrlen:]
+ d.terrors = d.terrors[:terrlen]
+ return &TypeError{issues}
+ }
+ return nil
+ })
+ if e, ok := err.(*TypeError); ok {
+ d.terrors = append(d.terrors, e.Errors...)
+ return false
+ }
+ if err != nil {
+ fail(err)
+ }
+ return true
+}
+
+// d.prepare initializes and dereferences pointers and calls UnmarshalYAML
+// if a value is found to implement it.
+// It returns the initialized and dereferenced out value, whether
+// unmarshalling was already done by UnmarshalYAML, and if so whether
+// its types unmarshalled appropriately.
+//
+// If n holds a null value, prepare returns before doing anything.
+func (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {
+ if n.ShortTag() == nullTag {
+ return out, false, false
+ }
+ again := true
+ for again {
+ again = false
+ if out.Kind() == reflect.Ptr {
+ if out.IsNil() {
+ out.Set(reflect.New(out.Type().Elem()))
+ }
+ out = out.Elem()
+ again = true
+ }
+ if out.CanAddr() {
+ outi := out.Addr().Interface()
+ if u, ok := outi.(Unmarshaler); ok {
+ good = d.callUnmarshaler(n, u)
+ return out, true, good
+ }
+ if u, ok := outi.(obsoleteUnmarshaler); ok {
+ good = d.callObsoleteUnmarshaler(n, u)
+ return out, true, good
+ }
+ }
+ }
+ return out, false, false
+}
+
+func (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) {
+ if n.ShortTag() == nullTag {
+ return reflect.Value{}
+ }
+ for _, num := range index {
+ for {
+ if v.Kind() == reflect.Ptr {
+ if v.IsNil() {
+ v.Set(reflect.New(v.Type().Elem()))
+ }
+ v = v.Elem()
+ continue
+ }
+ break
+ }
+ v = v.Field(num)
+ }
+ return v
+}
+
+const (
+ // 400,000 decode operations is ~500kb of dense object declarations, or
+ // ~5kb of dense object declarations with 10000% alias expansion
+ alias_ratio_range_low = 400000
+
+ // 4,000,000 decode operations is ~5MB of dense object declarations, or
+ // ~4.5MB of dense object declarations with 10% alias expansion
+ alias_ratio_range_high = 4000000
+
+ // alias_ratio_range is the range over which we scale allowed alias ratios
+ alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low)
+)
+
+func allowedAliasRatio(decodeCount int) float64 {
+ switch {
+ case decodeCount <= alias_ratio_range_low:
+ // allow 99% to come from alias expansion for small-to-medium documents
+ return 0.99
+ case decodeCount >= alias_ratio_range_high:
+ // allow 10% to come from alias expansion for very large documents
+ return 0.10
+ default:
+ // scale smoothly from 99% down to 10% over the range.
+ // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range.
+ // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps).
+ return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range)
+ }
+}
+
+func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) {
+ d.decodeCount++
+ if d.aliasDepth > 0 {
+ d.aliasCount++
+ }
+ if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) {
+ failf("document contains excessive aliasing")
+ }
+ if out.Type() == nodeType {
+ out.Set(reflect.ValueOf(n).Elem())
+ return true
+ }
+ switch n.Kind {
+ case DocumentNode:
+ return d.document(n, out)
+ case AliasNode:
+ return d.alias(n, out)
+ }
+ out, unmarshaled, good := d.prepare(n, out)
+ if unmarshaled {
+ return good
+ }
+ switch n.Kind {
+ case ScalarNode:
+ good = d.scalar(n, out)
+ case MappingNode:
+ good = d.mapping(n, out)
+ case SequenceNode:
+ good = d.sequence(n, out)
+ default:
+ panic("internal error: unknown node kind: " + strconv.Itoa(int(n.Kind)))
+ }
+ return good
+}
+
+func (d *decoder) document(n *Node, out reflect.Value) (good bool) {
+ if len(n.Content) == 1 {
+ d.doc = n
+ d.unmarshal(n.Content[0], out)
+ return true
+ }
+ return false
+}
+
+func (d *decoder) alias(n *Node, out reflect.Value) (good bool) {
+ if d.aliases[n] {
+ // TODO this could actually be allowed in some circumstances.
+ failf("anchor '%s' value contains itself", n.Value)
+ }
+ d.aliases[n] = true
+ d.aliasDepth++
+ good = d.unmarshal(n.Alias, out)
+ d.aliasDepth--
+ delete(d.aliases, n)
+ return good
+}
+
+var zeroValue reflect.Value
+
+func resetMap(out reflect.Value) {
+ for _, k := range out.MapKeys() {
+ out.SetMapIndex(k, zeroValue)
+ }
+}
+
+func (d *decoder) scalar(n *Node, out reflect.Value) bool {
+ var tag string
+ var resolved interface{}
+ if n.indicatedString() {
+ tag = strTag
+ resolved = n.Value
+ } else {
+ tag, resolved = resolve(n.Tag, n.Value)
+ if tag == binaryTag {
+ data, err := base64.StdEncoding.DecodeString(resolved.(string))
+ if err != nil {
+ failf("!!binary value contains invalid base64 data")
+ }
+ resolved = string(data)
+ }
+ }
+ if resolved == nil {
+ if out.CanAddr() {
+ switch out.Kind() {
+ case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice:
+ out.Set(reflect.Zero(out.Type()))
+ return true
+ }
+ }
+ return false
+ }
+ if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {
+ // We've resolved to exactly the type we want, so use that.
+ out.Set(resolvedv)
+ return true
+ }
+ // Perhaps we can use the value as a TextUnmarshaler to
+ // set its value.
+ if out.CanAddr() {
+ u, ok := out.Addr().Interface().(encoding.TextUnmarshaler)
+ if ok {
+ var text []byte
+ if tag == binaryTag {
+ text = []byte(resolved.(string))
+ } else {
+ // We let any value be unmarshaled into TextUnmarshaler.
+ // That might be more lax than we'd like, but the
+ // TextUnmarshaler itself should bowl out any dubious values.
+ text = []byte(n.Value)
+ }
+ err := u.UnmarshalText(text)
+ if err != nil {
+ fail(err)
+ }
+ return true
+ }
+ }
+ switch out.Kind() {
+ case reflect.String:
+ if tag == binaryTag {
+ out.SetString(resolved.(string))
+ return true
+ }
+ out.SetString(n.Value)
+ return true
+ case reflect.Interface:
+ out.Set(reflect.ValueOf(resolved))
+ return true
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ // This used to work in v2, but it's very unfriendly.
+ isDuration := out.Type() == durationType
+
+ switch resolved := resolved.(type) {
+ case int:
+ if !isDuration && !out.OverflowInt(int64(resolved)) {
+ out.SetInt(int64(resolved))
+ return true
+ }
+ case int64:
+ if !isDuration && !out.OverflowInt(resolved) {
+ out.SetInt(resolved)
+ return true
+ }
+ case uint64:
+ if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {
+ out.SetInt(int64(resolved))
+ return true
+ }
+ case float64:
+ if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {
+ out.SetInt(int64(resolved))
+ return true
+ }
+ case string:
+ if out.Type() == durationType {
+ d, err := time.ParseDuration(resolved)
+ if err == nil {
+ out.SetInt(int64(d))
+ return true
+ }
+ }
+ }
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+ switch resolved := resolved.(type) {
+ case int:
+ if resolved >= 0 && !out.OverflowUint(uint64(resolved)) {
+ out.SetUint(uint64(resolved))
+ return true
+ }
+ case int64:
+ if resolved >= 0 && !out.OverflowUint(uint64(resolved)) {
+ out.SetUint(uint64(resolved))
+ return true
+ }
+ case uint64:
+ if !out.OverflowUint(uint64(resolved)) {
+ out.SetUint(uint64(resolved))
+ return true
+ }
+ case float64:
+ if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {
+ out.SetUint(uint64(resolved))
+ return true
+ }
+ }
+ case reflect.Bool:
+ switch resolved := resolved.(type) {
+ case bool:
+ out.SetBool(resolved)
+ return true
+ case string:
+ // This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html).
+ // It only works if explicitly attempting to unmarshal into a typed bool value.
+ switch resolved {
+ case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON":
+ out.SetBool(true)
+ return true
+ case "n", "N", "no", "No", "NO", "off", "Off", "OFF":
+ out.SetBool(false)
+ return true
+ }
+ }
+ case reflect.Float32, reflect.Float64:
+ switch resolved := resolved.(type) {
+ case int:
+ out.SetFloat(float64(resolved))
+ return true
+ case int64:
+ out.SetFloat(float64(resolved))
+ return true
+ case uint64:
+ out.SetFloat(float64(resolved))
+ return true
+ case float64:
+ out.SetFloat(resolved)
+ return true
+ }
+ case reflect.Struct:
+ if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() {
+ out.Set(resolvedv)
+ return true
+ }
+ case reflect.Ptr:
+ panic("yaml internal error: please report the issue")
+ }
+ d.terror(n, tag, out)
+ return false
+}
+
+func settableValueOf(i interface{}) reflect.Value {
+ v := reflect.ValueOf(i)
+ sv := reflect.New(v.Type()).Elem()
+ sv.Set(v)
+ return sv
+}
+
+func (d *decoder) sequence(n *Node, out reflect.Value) (good bool) {
+ l := len(n.Content)
+
+ var iface reflect.Value
+ switch out.Kind() {
+ case reflect.Slice:
+ out.Set(reflect.MakeSlice(out.Type(), l, l))
+ case reflect.Array:
+ if l != out.Len() {
+ failf("invalid array: want %d elements but got %d", out.Len(), l)
+ }
+ case reflect.Interface:
+ // No type hints. Will have to use a generic sequence.
+ iface = out
+ out = settableValueOf(make([]interface{}, l))
+ default:
+ d.terror(n, seqTag, out)
+ return false
+ }
+ et := out.Type().Elem()
+
+ j := 0
+ for i := 0; i < l; i++ {
+ e := reflect.New(et).Elem()
+ if ok := d.unmarshal(n.Content[i], e); ok {
+ out.Index(j).Set(e)
+ j++
+ }
+ }
+ if out.Kind() != reflect.Array {
+ out.Set(out.Slice(0, j))
+ }
+ if iface.IsValid() {
+ iface.Set(out)
+ }
+ return true
+}
+
+func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) {
+ l := len(n.Content)
+ if d.uniqueKeys {
+ nerrs := len(d.terrors)
+ for i := 0; i < l; i += 2 {
+ ni := n.Content[i]
+ for j := i + 2; j < l; j += 2 {
+ nj := n.Content[j]
+ if ni.Kind == nj.Kind && ni.Value == nj.Value {
+ d.terrors = append(d.terrors, fmt.Sprintf("line %d: mapping key %#v already defined at line %d", nj.Line, nj.Value, ni.Line))
+ }
+ }
+ }
+ if len(d.terrors) > nerrs {
+ return false
+ }
+ }
+ switch out.Kind() {
+ case reflect.Struct:
+ return d.mappingStruct(n, out)
+ case reflect.Map:
+ // okay
+ case reflect.Interface:
+ iface := out
+ if isStringMap(n) {
+ out = reflect.MakeMap(d.stringMapType)
+ } else {
+ out = reflect.MakeMap(d.generalMapType)
+ }
+ iface.Set(out)
+ default:
+ d.terror(n, mapTag, out)
+ return false
+ }
+
+ outt := out.Type()
+ kt := outt.Key()
+ et := outt.Elem()
+
+ stringMapType := d.stringMapType
+ generalMapType := d.generalMapType
+ if outt.Elem() == ifaceType {
+ if outt.Key().Kind() == reflect.String {
+ d.stringMapType = outt
+ } else if outt.Key() == ifaceType {
+ d.generalMapType = outt
+ }
+ }
+
+ if out.IsNil() {
+ out.Set(reflect.MakeMap(outt))
+ }
+ for i := 0; i < l; i += 2 {
+ if isMerge(n.Content[i]) {
+ d.merge(n.Content[i+1], out)
+ continue
+ }
+ k := reflect.New(kt).Elem()
+ if d.unmarshal(n.Content[i], k) {
+ kkind := k.Kind()
+ if kkind == reflect.Interface {
+ kkind = k.Elem().Kind()
+ }
+ if kkind == reflect.Map || kkind == reflect.Slice {
+ failf("invalid map key: %#v", k.Interface())
+ }
+ e := reflect.New(et).Elem()
+ if d.unmarshal(n.Content[i+1], e) {
+ out.SetMapIndex(k, e)
+ }
+ }
+ }
+ d.stringMapType = stringMapType
+ d.generalMapType = generalMapType
+ return true
+}
+
+func isStringMap(n *Node) bool {
+ if n.Kind != MappingNode {
+ return false
+ }
+ l := len(n.Content)
+ for i := 0; i < l; i += 2 {
+ if n.Content[i].ShortTag() != strTag {
+ return false
+ }
+ }
+ return true
+}
+
+func (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) {
+ sinfo, err := getStructInfo(out.Type())
+ if err != nil {
+ panic(err)
+ }
+
+ var inlineMap reflect.Value
+ var elemType reflect.Type
+ if sinfo.InlineMap != -1 {
+ inlineMap = out.Field(sinfo.InlineMap)
+ inlineMap.Set(reflect.New(inlineMap.Type()).Elem())
+ elemType = inlineMap.Type().Elem()
+ }
+
+ for _, index := range sinfo.InlineUnmarshalers {
+ field := d.fieldByIndex(n, out, index)
+ d.prepare(n, field)
+ }
+
+ var doneFields []bool
+ if d.uniqueKeys {
+ doneFields = make([]bool, len(sinfo.FieldsList))
+ }
+ name := settableValueOf("")
+ l := len(n.Content)
+ for i := 0; i < l; i += 2 {
+ ni := n.Content[i]
+ if isMerge(ni) {
+ d.merge(n.Content[i+1], out)
+ continue
+ }
+ if !d.unmarshal(ni, name) {
+ continue
+ }
+ if info, ok := sinfo.FieldsMap[name.String()]; ok {
+ if d.uniqueKeys {
+ if doneFields[info.Id] {
+ d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.Line, name.String(), out.Type()))
+ continue
+ }
+ doneFields[info.Id] = true
+ }
+ var field reflect.Value
+ if info.Inline == nil {
+ field = out.Field(info.Num)
+ } else {
+ field = d.fieldByIndex(n, out, info.Inline)
+ }
+ d.unmarshal(n.Content[i+1], field)
+ } else if sinfo.InlineMap != -1 {
+ if inlineMap.IsNil() {
+ inlineMap.Set(reflect.MakeMap(inlineMap.Type()))
+ }
+ value := reflect.New(elemType).Elem()
+ d.unmarshal(n.Content[i+1], value)
+ inlineMap.SetMapIndex(name, value)
+ } else if d.knownFields {
+ d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.Line, name.String(), out.Type()))
+ }
+ }
+ return true
+}
+
+func failWantMap() {
+ failf("map merge requires map or sequence of maps as the value")
+}
+
+func (d *decoder) merge(n *Node, out reflect.Value) {
+ switch n.Kind {
+ case MappingNode:
+ d.unmarshal(n, out)
+ case AliasNode:
+ if n.Alias != nil && n.Alias.Kind != MappingNode {
+ failWantMap()
+ }
+ d.unmarshal(n, out)
+ case SequenceNode:
+ // Step backwards as earlier nodes take precedence.
+ for i := len(n.Content) - 1; i >= 0; i-- {
+ ni := n.Content[i]
+ if ni.Kind == AliasNode {
+ if ni.Alias != nil && ni.Alias.Kind != MappingNode {
+ failWantMap()
+ }
+ } else if ni.Kind != MappingNode {
+ failWantMap()
+ }
+ d.unmarshal(ni, out)
+ }
+ default:
+ failWantMap()
+ }
+}
+
+func isMerge(n *Node) bool {
+ return n.Kind == ScalarNode && n.Value == "<<" && (n.Tag == "" || n.Tag == "!" || shortTag(n.Tag) == mergeTag)
+}
diff --git a/vendor/gopkg.in/yaml.v3/emitterc.go b/vendor/gopkg.in/yaml.v3/emitterc.go
new file mode 100644
index 00000000000..ab2a066194c
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/emitterc.go
@@ -0,0 +1,1992 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+import (
+ "bytes"
+ "fmt"
+)
+
+// Flush the buffer if needed.
+func flush(emitter *yaml_emitter_t) bool {
+ if emitter.buffer_pos+5 >= len(emitter.buffer) {
+ return yaml_emitter_flush(emitter)
+ }
+ return true
+}
+
+// Put a character to the output buffer.
+func put(emitter *yaml_emitter_t, value byte) bool {
+ if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {
+ return false
+ }
+ emitter.buffer[emitter.buffer_pos] = value
+ emitter.buffer_pos++
+ emitter.column++
+ return true
+}
+
+// Put a line break to the output buffer.
+func put_break(emitter *yaml_emitter_t) bool {
+ if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {
+ return false
+ }
+ switch emitter.line_break {
+ case yaml_CR_BREAK:
+ emitter.buffer[emitter.buffer_pos] = '\r'
+ emitter.buffer_pos += 1
+ case yaml_LN_BREAK:
+ emitter.buffer[emitter.buffer_pos] = '\n'
+ emitter.buffer_pos += 1
+ case yaml_CRLN_BREAK:
+ emitter.buffer[emitter.buffer_pos+0] = '\r'
+ emitter.buffer[emitter.buffer_pos+1] = '\n'
+ emitter.buffer_pos += 2
+ default:
+ panic("unknown line break setting")
+ }
+ if emitter.column == 0 {
+ emitter.space_above = true
+ }
+ emitter.column = 0
+ emitter.line++
+ // [Go] Do this here and below and drop from everywhere else (see commented lines).
+ emitter.indention = true
+ return true
+}
+
+// Copy a character from a string into buffer.
+func write(emitter *yaml_emitter_t, s []byte, i *int) bool {
+ if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {
+ return false
+ }
+ p := emitter.buffer_pos
+ w := width(s[*i])
+ switch w {
+ case 4:
+ emitter.buffer[p+3] = s[*i+3]
+ fallthrough
+ case 3:
+ emitter.buffer[p+2] = s[*i+2]
+ fallthrough
+ case 2:
+ emitter.buffer[p+1] = s[*i+1]
+ fallthrough
+ case 1:
+ emitter.buffer[p+0] = s[*i+0]
+ default:
+ panic("unknown character width")
+ }
+ emitter.column++
+ emitter.buffer_pos += w
+ *i += w
+ return true
+}
+
+// Write a whole string into buffer.
+func write_all(emitter *yaml_emitter_t, s []byte) bool {
+ for i := 0; i < len(s); {
+ if !write(emitter, s, &i) {
+ return false
+ }
+ }
+ return true
+}
+
+// Copy a line break character from a string into buffer.
+func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {
+ if s[*i] == '\n' {
+ if !put_break(emitter) {
+ return false
+ }
+ *i++
+ } else {
+ if !write(emitter, s, i) {
+ return false
+ }
+ if emitter.column == 0 {
+ emitter.space_above = true
+ }
+ emitter.column = 0
+ emitter.line++
+ // [Go] Do this here and above and drop from everywhere else (see commented lines).
+ emitter.indention = true
+ }
+ return true
+}
+
+// Set an emitter error and return false.
+func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {
+ emitter.error = yaml_EMITTER_ERROR
+ emitter.problem = problem
+ return false
+}
+
+// Emit an event.
+func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ emitter.events = append(emitter.events, *event)
+ for !yaml_emitter_need_more_events(emitter) {
+ event := &emitter.events[emitter.events_head]
+ if !yaml_emitter_analyze_event(emitter, event) {
+ return false
+ }
+ if !yaml_emitter_state_machine(emitter, event) {
+ return false
+ }
+ yaml_event_delete(event)
+ emitter.events_head++
+ }
+ return true
+}
+
+// Check if we need to accumulate more events before emitting.
+//
+// We accumulate extra
+// - 1 event for DOCUMENT-START
+// - 2 events for SEQUENCE-START
+// - 3 events for MAPPING-START
+//
+func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {
+ if emitter.events_head == len(emitter.events) {
+ return true
+ }
+ var accumulate int
+ switch emitter.events[emitter.events_head].typ {
+ case yaml_DOCUMENT_START_EVENT:
+ accumulate = 1
+ break
+ case yaml_SEQUENCE_START_EVENT:
+ accumulate = 2
+ break
+ case yaml_MAPPING_START_EVENT:
+ accumulate = 3
+ break
+ default:
+ return false
+ }
+ if len(emitter.events)-emitter.events_head > accumulate {
+ return false
+ }
+ var level int
+ for i := emitter.events_head; i < len(emitter.events); i++ {
+ switch emitter.events[i].typ {
+ case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:
+ level++
+ case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:
+ level--
+ }
+ if level == 0 {
+ return false
+ }
+ }
+ return true
+}
+
+// Append a directive to the directives stack.
+func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {
+ for i := 0; i < len(emitter.tag_directives); i++ {
+ if bytes.Equal(value.handle, emitter.tag_directives[i].handle) {
+ if allow_duplicates {
+ return true
+ }
+ return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive")
+ }
+ }
+
+ // [Go] Do we actually need to copy this given garbage collection
+ // and the lack of deallocating destructors?
+ tag_copy := yaml_tag_directive_t{
+ handle: make([]byte, len(value.handle)),
+ prefix: make([]byte, len(value.prefix)),
+ }
+ copy(tag_copy.handle, value.handle)
+ copy(tag_copy.prefix, value.prefix)
+ emitter.tag_directives = append(emitter.tag_directives, tag_copy)
+ return true
+}
+
+// Increase the indentation level.
+func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {
+ emitter.indents = append(emitter.indents, emitter.indent)
+ if emitter.indent < 0 {
+ if flow {
+ emitter.indent = emitter.best_indent
+ } else {
+ emitter.indent = 0
+ }
+ } else if !indentless {
+ emitter.indent += emitter.best_indent
+ // [Go] If inside a block sequence item, discount the space taken by the indicator.
+ if emitter.best_indent > 2 && emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE {
+ emitter.indent -= 2
+ }
+ }
+ return true
+}
+
+// State dispatcher.
+func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ switch emitter.state {
+ default:
+ case yaml_EMIT_STREAM_START_STATE:
+ return yaml_emitter_emit_stream_start(emitter, event)
+
+ case yaml_EMIT_FIRST_DOCUMENT_START_STATE:
+ return yaml_emitter_emit_document_start(emitter, event, true)
+
+ case yaml_EMIT_DOCUMENT_START_STATE:
+ return yaml_emitter_emit_document_start(emitter, event, false)
+
+ case yaml_EMIT_DOCUMENT_CONTENT_STATE:
+ return yaml_emitter_emit_document_content(emitter, event)
+
+ case yaml_EMIT_DOCUMENT_END_STATE:
+ return yaml_emitter_emit_document_end(emitter, event)
+
+ case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:
+ return yaml_emitter_emit_flow_sequence_item(emitter, event, true, false)
+
+ case yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE:
+ return yaml_emitter_emit_flow_sequence_item(emitter, event, false, true)
+
+ case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:
+ return yaml_emitter_emit_flow_sequence_item(emitter, event, false, false)
+
+ case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:
+ return yaml_emitter_emit_flow_mapping_key(emitter, event, true, false)
+
+ case yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE:
+ return yaml_emitter_emit_flow_mapping_key(emitter, event, false, true)
+
+ case yaml_EMIT_FLOW_MAPPING_KEY_STATE:
+ return yaml_emitter_emit_flow_mapping_key(emitter, event, false, false)
+
+ case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:
+ return yaml_emitter_emit_flow_mapping_value(emitter, event, true)
+
+ case yaml_EMIT_FLOW_MAPPING_VALUE_STATE:
+ return yaml_emitter_emit_flow_mapping_value(emitter, event, false)
+
+ case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:
+ return yaml_emitter_emit_block_sequence_item(emitter, event, true)
+
+ case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:
+ return yaml_emitter_emit_block_sequence_item(emitter, event, false)
+
+ case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:
+ return yaml_emitter_emit_block_mapping_key(emitter, event, true)
+
+ case yaml_EMIT_BLOCK_MAPPING_KEY_STATE:
+ return yaml_emitter_emit_block_mapping_key(emitter, event, false)
+
+ case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:
+ return yaml_emitter_emit_block_mapping_value(emitter, event, true)
+
+ case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:
+ return yaml_emitter_emit_block_mapping_value(emitter, event, false)
+
+ case yaml_EMIT_END_STATE:
+ return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END")
+ }
+ panic("invalid emitter state")
+}
+
+// Expect STREAM-START.
+func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ if event.typ != yaml_STREAM_START_EVENT {
+ return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START")
+ }
+ if emitter.encoding == yaml_ANY_ENCODING {
+ emitter.encoding = event.encoding
+ if emitter.encoding == yaml_ANY_ENCODING {
+ emitter.encoding = yaml_UTF8_ENCODING
+ }
+ }
+ if emitter.best_indent < 2 || emitter.best_indent > 9 {
+ emitter.best_indent = 2
+ }
+ if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {
+ emitter.best_width = 80
+ }
+ if emitter.best_width < 0 {
+ emitter.best_width = 1<<31 - 1
+ }
+ if emitter.line_break == yaml_ANY_BREAK {
+ emitter.line_break = yaml_LN_BREAK
+ }
+
+ emitter.indent = -1
+ emitter.line = 0
+ emitter.column = 0
+ emitter.whitespace = true
+ emitter.indention = true
+ emitter.space_above = true
+ emitter.foot_indent = -1
+
+ if emitter.encoding != yaml_UTF8_ENCODING {
+ if !yaml_emitter_write_bom(emitter) {
+ return false
+ }
+ }
+ emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE
+ return true
+}
+
+// Expect DOCUMENT-START or STREAM-END.
+func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+
+ if event.typ == yaml_DOCUMENT_START_EVENT {
+
+ if event.version_directive != nil {
+ if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {
+ return false
+ }
+ }
+
+ for i := 0; i < len(event.tag_directives); i++ {
+ tag_directive := &event.tag_directives[i]
+ if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {
+ return false
+ }
+ if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {
+ return false
+ }
+ }
+
+ for i := 0; i < len(default_tag_directives); i++ {
+ tag_directive := &default_tag_directives[i]
+ if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {
+ return false
+ }
+ }
+
+ implicit := event.implicit
+ if !first || emitter.canonical {
+ implicit = false
+ }
+
+ if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {
+ if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+
+ if event.version_directive != nil {
+ implicit = false
+ if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+
+ if len(event.tag_directives) > 0 {
+ implicit = false
+ for i := 0; i < len(event.tag_directives); i++ {
+ tag_directive := &event.tag_directives[i]
+ if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {
+ return false
+ }
+ if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {
+ return false
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ }
+
+ if yaml_emitter_check_empty_document(emitter) {
+ implicit = false
+ }
+ if !implicit {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) {
+ return false
+ }
+ if emitter.canonical || true {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ }
+
+ if len(emitter.head_comment) > 0 {
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+ if !put_break(emitter) {
+ return false
+ }
+ }
+
+ emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE
+ return true
+ }
+
+ if event.typ == yaml_STREAM_END_EVENT {
+ if emitter.open_ended {
+ if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !yaml_emitter_flush(emitter) {
+ return false
+ }
+ emitter.state = yaml_EMIT_END_STATE
+ return true
+ }
+
+ return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END")
+}
+
+// Expect the root node.
+func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)
+
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_emit_node(emitter, event, true, false, false, false) {
+ return false
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ return true
+}
+
+// Expect DOCUMENT-END.
+func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ if event.typ != yaml_DOCUMENT_END_EVENT {
+ return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END")
+ }
+ // [Go] Force document foot separation.
+ emitter.foot_indent = 0
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ emitter.foot_indent = -1
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !event.implicit {
+ // [Go] Allocate the slice elsewhere.
+ if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !yaml_emitter_flush(emitter) {
+ return false
+ }
+ emitter.state = yaml_EMIT_DOCUMENT_START_STATE
+ emitter.tag_directives = emitter.tag_directives[:0]
+ return true
+}
+
+// Expect a flow item node.
+func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {
+ if first {
+ if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {
+ return false
+ }
+ if !yaml_emitter_increase_indent(emitter, true, false) {
+ return false
+ }
+ emitter.flow_level++
+ }
+
+ if event.typ == yaml_SEQUENCE_END_EVENT {
+ if emitter.canonical && !first && !trail {
+ if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+ return false
+ }
+ }
+ emitter.flow_level--
+ emitter.indent = emitter.indents[len(emitter.indents)-1]
+ emitter.indents = emitter.indents[:len(emitter.indents)-1]
+ if emitter.column == 0 || emitter.canonical && !first {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {
+ return false
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ emitter.state = emitter.states[len(emitter.states)-1]
+ emitter.states = emitter.states[:len(emitter.states)-1]
+
+ return true
+ }
+
+ if !first && !trail {
+ if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+ return false
+ }
+ }
+
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+ if emitter.column == 0 {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+
+ if emitter.canonical || emitter.column > emitter.best_width {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {
+ emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE)
+ } else {
+ emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)
+ }
+ if !yaml_emitter_emit_node(emitter, event, false, true, false, false) {
+ return false
+ }
+ if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {
+ if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+ return false
+ }
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ return true
+}
+
+// Expect a flow key node.
+func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool {
+ if first {
+ if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {
+ return false
+ }
+ if !yaml_emitter_increase_indent(emitter, true, false) {
+ return false
+ }
+ emitter.flow_level++
+ }
+
+ if event.typ == yaml_MAPPING_END_EVENT {
+ if (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail {
+ if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+ return false
+ }
+ }
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+ emitter.flow_level--
+ emitter.indent = emitter.indents[len(emitter.indents)-1]
+ emitter.indents = emitter.indents[:len(emitter.indents)-1]
+ if emitter.canonical && !first {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {
+ return false
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ emitter.state = emitter.states[len(emitter.states)-1]
+ emitter.states = emitter.states[:len(emitter.states)-1]
+ return true
+ }
+
+ if !first && !trail {
+ if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+ return false
+ }
+ }
+
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+
+ if emitter.column == 0 {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+
+ if emitter.canonical || emitter.column > emitter.best_width {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+
+ if !emitter.canonical && yaml_emitter_check_simple_key(emitter) {
+ emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)
+ return yaml_emitter_emit_node(emitter, event, false, false, true, true)
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {
+ return false
+ }
+ emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)
+ return yaml_emitter_emit_node(emitter, event, false, false, true, false)
+}
+
+// Expect a flow value node.
+func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {
+ if simple {
+ if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {
+ return false
+ }
+ } else {
+ if emitter.canonical || emitter.column > emitter.best_width {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {
+ return false
+ }
+ }
+ if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {
+ emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE)
+ } else {
+ emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)
+ }
+ if !yaml_emitter_emit_node(emitter, event, false, false, true, false) {
+ return false
+ }
+ if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 {
+ if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+ return false
+ }
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ return true
+}
+
+// Expect a block item node.
+func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+ if first {
+ // [Go] The original logic here would not indent the sequence when inside a mapping.
+ // In Go we always indent it, but take the sequence indicator out of the indentation.
+ indentless := emitter.best_indent == 2 && emitter.mapping_context && (emitter.column == 0 || !emitter.indention)
+ original := emitter.indent
+ if !yaml_emitter_increase_indent(emitter, false, indentless) {
+ return false
+ }
+ if emitter.indent > original+2 {
+ emitter.indent -= 2
+ }
+ }
+ if event.typ == yaml_SEQUENCE_END_EVENT {
+ emitter.indent = emitter.indents[len(emitter.indents)-1]
+ emitter.indents = emitter.indents[:len(emitter.indents)-1]
+ emitter.state = emitter.states[len(emitter.states)-1]
+ emitter.states = emitter.states[:len(emitter.states)-1]
+ return true
+ }
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {
+ return false
+ }
+ emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)
+ if !yaml_emitter_emit_node(emitter, event, false, true, false, false) {
+ return false
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ return true
+}
+
+// Expect a block key node.
+func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+ if first {
+ if !yaml_emitter_increase_indent(emitter, false, false) {
+ return false
+ }
+ }
+ if !yaml_emitter_process_head_comment(emitter) {
+ return false
+ }
+ if event.typ == yaml_MAPPING_END_EVENT {
+ emitter.indent = emitter.indents[len(emitter.indents)-1]
+ emitter.indents = emitter.indents[:len(emitter.indents)-1]
+ emitter.state = emitter.states[len(emitter.states)-1]
+ emitter.states = emitter.states[:len(emitter.states)-1]
+ return true
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if yaml_emitter_check_simple_key(emitter) {
+ emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)
+ return yaml_emitter_emit_node(emitter, event, false, false, true, true)
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {
+ return false
+ }
+ emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)
+ return yaml_emitter_emit_node(emitter, event, false, false, true, false)
+}
+
+// Expect a block value node.
+func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {
+ if simple {
+ if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {
+ return false
+ }
+ } else {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {
+ return false
+ }
+ }
+ emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)
+ if !yaml_emitter_emit_node(emitter, event, false, false, true, false) {
+ return false
+ }
+ if !yaml_emitter_process_line_comment(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_foot_comment(emitter) {
+ return false
+ }
+ return true
+}
+
+// Expect a node.
+func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,
+ root bool, sequence bool, mapping bool, simple_key bool) bool {
+
+ emitter.root_context = root
+ emitter.sequence_context = sequence
+ emitter.mapping_context = mapping
+ emitter.simple_key_context = simple_key
+
+ switch event.typ {
+ case yaml_ALIAS_EVENT:
+ return yaml_emitter_emit_alias(emitter, event)
+ case yaml_SCALAR_EVENT:
+ return yaml_emitter_emit_scalar(emitter, event)
+ case yaml_SEQUENCE_START_EVENT:
+ return yaml_emitter_emit_sequence_start(emitter, event)
+ case yaml_MAPPING_START_EVENT:
+ return yaml_emitter_emit_mapping_start(emitter, event)
+ default:
+ return yaml_emitter_set_emitter_error(emitter,
+ fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ))
+ }
+}
+
+// Expect ALIAS.
+func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ if !yaml_emitter_process_anchor(emitter) {
+ return false
+ }
+ emitter.state = emitter.states[len(emitter.states)-1]
+ emitter.states = emitter.states[:len(emitter.states)-1]
+ return true
+}
+
+// Expect SCALAR.
+func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ if !yaml_emitter_select_scalar_style(emitter, event) {
+ return false
+ }
+ if !yaml_emitter_process_anchor(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_tag(emitter) {
+ return false
+ }
+ if !yaml_emitter_increase_indent(emitter, true, false) {
+ return false
+ }
+ if !yaml_emitter_process_scalar(emitter) {
+ return false
+ }
+ emitter.indent = emitter.indents[len(emitter.indents)-1]
+ emitter.indents = emitter.indents[:len(emitter.indents)-1]
+ emitter.state = emitter.states[len(emitter.states)-1]
+ emitter.states = emitter.states[:len(emitter.states)-1]
+ return true
+}
+
+// Expect SEQUENCE-START.
+func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ if !yaml_emitter_process_anchor(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_tag(emitter) {
+ return false
+ }
+ if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||
+ yaml_emitter_check_empty_sequence(emitter) {
+ emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
+ } else {
+ emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
+ }
+ return true
+}
+
+// Expect MAPPING-START.
+func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+ if !yaml_emitter_process_anchor(emitter) {
+ return false
+ }
+ if !yaml_emitter_process_tag(emitter) {
+ return false
+ }
+ if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||
+ yaml_emitter_check_empty_mapping(emitter) {
+ emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
+ } else {
+ emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
+ }
+ return true
+}
+
+// Check if the document content is an empty scalar.
+func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {
+ return false // [Go] Huh?
+}
+
+// Check if the next events represent an empty sequence.
+func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {
+ if len(emitter.events)-emitter.events_head < 2 {
+ return false
+ }
+ return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&
+ emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT
+}
+
+// Check if the next events represent an empty mapping.
+func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {
+ if len(emitter.events)-emitter.events_head < 2 {
+ return false
+ }
+ return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&
+ emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT
+}
+
+// Check if the next node can be expressed as a simple key.
+func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {
+ length := 0
+ switch emitter.events[emitter.events_head].typ {
+ case yaml_ALIAS_EVENT:
+ length += len(emitter.anchor_data.anchor)
+ case yaml_SCALAR_EVENT:
+ if emitter.scalar_data.multiline {
+ return false
+ }
+ length += len(emitter.anchor_data.anchor) +
+ len(emitter.tag_data.handle) +
+ len(emitter.tag_data.suffix) +
+ len(emitter.scalar_data.value)
+ case yaml_SEQUENCE_START_EVENT:
+ if !yaml_emitter_check_empty_sequence(emitter) {
+ return false
+ }
+ length += len(emitter.anchor_data.anchor) +
+ len(emitter.tag_data.handle) +
+ len(emitter.tag_data.suffix)
+ case yaml_MAPPING_START_EVENT:
+ if !yaml_emitter_check_empty_mapping(emitter) {
+ return false
+ }
+ length += len(emitter.anchor_data.anchor) +
+ len(emitter.tag_data.handle) +
+ len(emitter.tag_data.suffix)
+ default:
+ return false
+ }
+ return length <= 128
+}
+
+// Determine an acceptable scalar style.
+func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+
+ no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0
+ if no_tag && !event.implicit && !event.quoted_implicit {
+ return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified")
+ }
+
+ style := event.scalar_style()
+ if style == yaml_ANY_SCALAR_STYLE {
+ style = yaml_PLAIN_SCALAR_STYLE
+ }
+ if emitter.canonical {
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+ if emitter.simple_key_context && emitter.scalar_data.multiline {
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+
+ if style == yaml_PLAIN_SCALAR_STYLE {
+ if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||
+ emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {
+ style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+ }
+ if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {
+ style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+ }
+ if no_tag && !event.implicit {
+ style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+ }
+ }
+ if style == yaml_SINGLE_QUOTED_SCALAR_STYLE {
+ if !emitter.scalar_data.single_quoted_allowed {
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+ }
+ if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {
+ if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+ }
+
+ if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {
+ emitter.tag_data.handle = []byte{'!'}
+ }
+ emitter.scalar_data.style = style
+ return true
+}
+
+// Write an anchor.
+func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {
+ if emitter.anchor_data.anchor == nil {
+ return true
+ }
+ c := []byte{'&'}
+ if emitter.anchor_data.alias {
+ c[0] = '*'
+ }
+ if !yaml_emitter_write_indicator(emitter, c, true, false, false) {
+ return false
+ }
+ return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)
+}
+
+// Write a tag.
+func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {
+ if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {
+ return true
+ }
+ if len(emitter.tag_data.handle) > 0 {
+ if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {
+ return false
+ }
+ if len(emitter.tag_data.suffix) > 0 {
+ if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {
+ return false
+ }
+ }
+ } else {
+ // [Go] Allocate these slices elsewhere.
+ if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {
+ return false
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {
+ return false
+ }
+ }
+ return true
+}
+
+// Write a scalar.
+func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {
+ switch emitter.scalar_data.style {
+ case yaml_PLAIN_SCALAR_STYLE:
+ return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
+
+ case yaml_SINGLE_QUOTED_SCALAR_STYLE:
+ return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
+
+ case yaml_DOUBLE_QUOTED_SCALAR_STYLE:
+ return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
+
+ case yaml_LITERAL_SCALAR_STYLE:
+ return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)
+
+ case yaml_FOLDED_SCALAR_STYLE:
+ return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)
+ }
+ panic("unknown scalar style")
+}
+
+// Write a head comment.
+func yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool {
+ if len(emitter.tail_comment) > 0 {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_comment(emitter, emitter.tail_comment) {
+ return false
+ }
+ emitter.tail_comment = emitter.tail_comment[:0]
+ emitter.foot_indent = emitter.indent
+ if emitter.foot_indent < 0 {
+ emitter.foot_indent = 0
+ }
+ }
+
+ if len(emitter.head_comment) == 0 {
+ return true
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_comment(emitter, emitter.head_comment) {
+ return false
+ }
+ emitter.head_comment = emitter.head_comment[:0]
+ return true
+}
+
+// Write an line comment.
+func yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool {
+ if len(emitter.line_comment) == 0 {
+ return true
+ }
+ if !emitter.whitespace {
+ if !put(emitter, ' ') {
+ return false
+ }
+ }
+ if !yaml_emitter_write_comment(emitter, emitter.line_comment) {
+ return false
+ }
+ emitter.line_comment = emitter.line_comment[:0]
+ return true
+}
+
+// Write a foot comment.
+func yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool {
+ if len(emitter.foot_comment) == 0 {
+ return true
+ }
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !yaml_emitter_write_comment(emitter, emitter.foot_comment) {
+ return false
+ }
+ emitter.foot_comment = emitter.foot_comment[:0]
+ emitter.foot_indent = emitter.indent
+ if emitter.foot_indent < 0 {
+ emitter.foot_indent = 0
+ }
+ return true
+}
+
+// Check if a %YAML directive is valid.
+func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {
+ if version_directive.major != 1 || version_directive.minor != 1 {
+ return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive")
+ }
+ return true
+}
+
+// Check if a %TAG directive is valid.
+func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {
+ handle := tag_directive.handle
+ prefix := tag_directive.prefix
+ if len(handle) == 0 {
+ return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty")
+ }
+ if handle[0] != '!' {
+ return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'")
+ }
+ if handle[len(handle)-1] != '!' {
+ return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'")
+ }
+ for i := 1; i < len(handle)-1; i += width(handle[i]) {
+ if !is_alpha(handle, i) {
+ return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only")
+ }
+ }
+ if len(prefix) == 0 {
+ return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty")
+ }
+ return true
+}
+
+// Check if an anchor is valid.
+func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {
+ if len(anchor) == 0 {
+ problem := "anchor value must not be empty"
+ if alias {
+ problem = "alias value must not be empty"
+ }
+ return yaml_emitter_set_emitter_error(emitter, problem)
+ }
+ for i := 0; i < len(anchor); i += width(anchor[i]) {
+ if !is_alpha(anchor, i) {
+ problem := "anchor value must contain alphanumerical characters only"
+ if alias {
+ problem = "alias value must contain alphanumerical characters only"
+ }
+ return yaml_emitter_set_emitter_error(emitter, problem)
+ }
+ }
+ emitter.anchor_data.anchor = anchor
+ emitter.anchor_data.alias = alias
+ return true
+}
+
+// Check if a tag is valid.
+func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {
+ if len(tag) == 0 {
+ return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty")
+ }
+ for i := 0; i < len(emitter.tag_directives); i++ {
+ tag_directive := &emitter.tag_directives[i]
+ if bytes.HasPrefix(tag, tag_directive.prefix) {
+ emitter.tag_data.handle = tag_directive.handle
+ emitter.tag_data.suffix = tag[len(tag_directive.prefix):]
+ return true
+ }
+ }
+ emitter.tag_data.suffix = tag
+ return true
+}
+
+// Check if a scalar is valid.
+func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {
+ var (
+ block_indicators = false
+ flow_indicators = false
+ line_breaks = false
+ special_characters = false
+ tab_characters = false
+
+ leading_space = false
+ leading_break = false
+ trailing_space = false
+ trailing_break = false
+ break_space = false
+ space_break = false
+
+ preceded_by_whitespace = false
+ followed_by_whitespace = false
+ previous_space = false
+ previous_break = false
+ )
+
+ emitter.scalar_data.value = value
+
+ if len(value) == 0 {
+ emitter.scalar_data.multiline = false
+ emitter.scalar_data.flow_plain_allowed = false
+ emitter.scalar_data.block_plain_allowed = true
+ emitter.scalar_data.single_quoted_allowed = true
+ emitter.scalar_data.block_allowed = false
+ return true
+ }
+
+ if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {
+ block_indicators = true
+ flow_indicators = true
+ }
+
+ preceded_by_whitespace = true
+ for i, w := 0, 0; i < len(value); i += w {
+ w = width(value[i])
+ followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)
+
+ if i == 0 {
+ switch value[i] {
+ case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`':
+ flow_indicators = true
+ block_indicators = true
+ case '?', ':':
+ flow_indicators = true
+ if followed_by_whitespace {
+ block_indicators = true
+ }
+ case '-':
+ if followed_by_whitespace {
+ flow_indicators = true
+ block_indicators = true
+ }
+ }
+ } else {
+ switch value[i] {
+ case ',', '?', '[', ']', '{', '}':
+ flow_indicators = true
+ case ':':
+ flow_indicators = true
+ if followed_by_whitespace {
+ block_indicators = true
+ }
+ case '#':
+ if preceded_by_whitespace {
+ flow_indicators = true
+ block_indicators = true
+ }
+ }
+ }
+
+ if value[i] == '\t' {
+ tab_characters = true
+ } else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {
+ special_characters = true
+ }
+ if is_space(value, i) {
+ if i == 0 {
+ leading_space = true
+ }
+ if i+width(value[i]) == len(value) {
+ trailing_space = true
+ }
+ if previous_break {
+ break_space = true
+ }
+ previous_space = true
+ previous_break = false
+ } else if is_break(value, i) {
+ line_breaks = true
+ if i == 0 {
+ leading_break = true
+ }
+ if i+width(value[i]) == len(value) {
+ trailing_break = true
+ }
+ if previous_space {
+ space_break = true
+ }
+ previous_space = false
+ previous_break = true
+ } else {
+ previous_space = false
+ previous_break = false
+ }
+
+ // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.
+ preceded_by_whitespace = is_blankz(value, i)
+ }
+
+ emitter.scalar_data.multiline = line_breaks
+ emitter.scalar_data.flow_plain_allowed = true
+ emitter.scalar_data.block_plain_allowed = true
+ emitter.scalar_data.single_quoted_allowed = true
+ emitter.scalar_data.block_allowed = true
+
+ if leading_space || leading_break || trailing_space || trailing_break {
+ emitter.scalar_data.flow_plain_allowed = false
+ emitter.scalar_data.block_plain_allowed = false
+ }
+ if trailing_space {
+ emitter.scalar_data.block_allowed = false
+ }
+ if break_space {
+ emitter.scalar_data.flow_plain_allowed = false
+ emitter.scalar_data.block_plain_allowed = false
+ emitter.scalar_data.single_quoted_allowed = false
+ }
+ if space_break || tab_characters || special_characters {
+ emitter.scalar_data.flow_plain_allowed = false
+ emitter.scalar_data.block_plain_allowed = false
+ emitter.scalar_data.single_quoted_allowed = false
+ }
+ if space_break || special_characters {
+ emitter.scalar_data.block_allowed = false
+ }
+ if line_breaks {
+ emitter.scalar_data.flow_plain_allowed = false
+ emitter.scalar_data.block_plain_allowed = false
+ }
+ if flow_indicators {
+ emitter.scalar_data.flow_plain_allowed = false
+ }
+ if block_indicators {
+ emitter.scalar_data.block_plain_allowed = false
+ }
+ return true
+}
+
+// Check if the event data is valid.
+func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+
+ emitter.anchor_data.anchor = nil
+ emitter.tag_data.handle = nil
+ emitter.tag_data.suffix = nil
+ emitter.scalar_data.value = nil
+
+ if len(event.head_comment) > 0 {
+ emitter.head_comment = event.head_comment
+ }
+ if len(event.line_comment) > 0 {
+ emitter.line_comment = event.line_comment
+ }
+ if len(event.foot_comment) > 0 {
+ emitter.foot_comment = event.foot_comment
+ }
+ if len(event.tail_comment) > 0 {
+ emitter.tail_comment = event.tail_comment
+ }
+
+ switch event.typ {
+ case yaml_ALIAS_EVENT:
+ if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {
+ return false
+ }
+
+ case yaml_SCALAR_EVENT:
+ if len(event.anchor) > 0 {
+ if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {
+ return false
+ }
+ }
+ if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {
+ if !yaml_emitter_analyze_tag(emitter, event.tag) {
+ return false
+ }
+ }
+ if !yaml_emitter_analyze_scalar(emitter, event.value) {
+ return false
+ }
+
+ case yaml_SEQUENCE_START_EVENT:
+ if len(event.anchor) > 0 {
+ if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {
+ return false
+ }
+ }
+ if len(event.tag) > 0 && (emitter.canonical || !event.implicit) {
+ if !yaml_emitter_analyze_tag(emitter, event.tag) {
+ return false
+ }
+ }
+
+ case yaml_MAPPING_START_EVENT:
+ if len(event.anchor) > 0 {
+ if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {
+ return false
+ }
+ }
+ if len(event.tag) > 0 && (emitter.canonical || !event.implicit) {
+ if !yaml_emitter_analyze_tag(emitter, event.tag) {
+ return false
+ }
+ }
+ }
+ return true
+}
+
+// Write the BOM character.
+func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {
+ if !flush(emitter) {
+ return false
+ }
+ pos := emitter.buffer_pos
+ emitter.buffer[pos+0] = '\xEF'
+ emitter.buffer[pos+1] = '\xBB'
+ emitter.buffer[pos+2] = '\xBF'
+ emitter.buffer_pos += 3
+ return true
+}
+
+func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {
+ indent := emitter.indent
+ if indent < 0 {
+ indent = 0
+ }
+ if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {
+ if !put_break(emitter) {
+ return false
+ }
+ }
+ if emitter.foot_indent == indent {
+ if !put_break(emitter) {
+ return false
+ }
+ }
+ for emitter.column < indent {
+ if !put(emitter, ' ') {
+ return false
+ }
+ }
+ emitter.whitespace = true
+ //emitter.indention = true
+ emitter.space_above = false
+ emitter.foot_indent = -1
+ return true
+}
+
+func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {
+ if need_whitespace && !emitter.whitespace {
+ if !put(emitter, ' ') {
+ return false
+ }
+ }
+ if !write_all(emitter, indicator) {
+ return false
+ }
+ emitter.whitespace = is_whitespace
+ emitter.indention = (emitter.indention && is_indention)
+ emitter.open_ended = false
+ return true
+}
+
+func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {
+ if !write_all(emitter, value) {
+ return false
+ }
+ emitter.whitespace = false
+ emitter.indention = false
+ return true
+}
+
+func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {
+ if !emitter.whitespace {
+ if !put(emitter, ' ') {
+ return false
+ }
+ }
+ if !write_all(emitter, value) {
+ return false
+ }
+ emitter.whitespace = false
+ emitter.indention = false
+ return true
+}
+
+func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {
+ if need_whitespace && !emitter.whitespace {
+ if !put(emitter, ' ') {
+ return false
+ }
+ }
+ for i := 0; i < len(value); {
+ var must_write bool
+ switch value[i] {
+ case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']':
+ must_write = true
+ default:
+ must_write = is_alpha(value, i)
+ }
+ if must_write {
+ if !write(emitter, value, &i) {
+ return false
+ }
+ } else {
+ w := width(value[i])
+ for k := 0; k < w; k++ {
+ octet := value[i]
+ i++
+ if !put(emitter, '%') {
+ return false
+ }
+
+ c := octet >> 4
+ if c < 10 {
+ c += '0'
+ } else {
+ c += 'A' - 10
+ }
+ if !put(emitter, c) {
+ return false
+ }
+
+ c = octet & 0x0f
+ if c < 10 {
+ c += '0'
+ } else {
+ c += 'A' - 10
+ }
+ if !put(emitter, c) {
+ return false
+ }
+ }
+ }
+ }
+ emitter.whitespace = false
+ emitter.indention = false
+ return true
+}
+
+func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
+ if len(value) > 0 && !emitter.whitespace {
+ if !put(emitter, ' ') {
+ return false
+ }
+ }
+
+ spaces := false
+ breaks := false
+ for i := 0; i < len(value); {
+ if is_space(value, i) {
+ if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ i += width(value[i])
+ } else {
+ if !write(emitter, value, &i) {
+ return false
+ }
+ }
+ spaces = true
+ } else if is_break(value, i) {
+ if !breaks && value[i] == '\n' {
+ if !put_break(emitter) {
+ return false
+ }
+ }
+ if !write_break(emitter, value, &i) {
+ return false
+ }
+ //emitter.indention = true
+ breaks = true
+ } else {
+ if breaks {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !write(emitter, value, &i) {
+ return false
+ }
+ emitter.indention = false
+ spaces = false
+ breaks = false
+ }
+ }
+
+ if len(value) > 0 {
+ emitter.whitespace = false
+ }
+ emitter.indention = false
+ if emitter.root_context {
+ emitter.open_ended = true
+ }
+
+ return true
+}
+
+func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
+
+ if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) {
+ return false
+ }
+
+ spaces := false
+ breaks := false
+ for i := 0; i < len(value); {
+ if is_space(value, i) {
+ if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ i += width(value[i])
+ } else {
+ if !write(emitter, value, &i) {
+ return false
+ }
+ }
+ spaces = true
+ } else if is_break(value, i) {
+ if !breaks && value[i] == '\n' {
+ if !put_break(emitter) {
+ return false
+ }
+ }
+ if !write_break(emitter, value, &i) {
+ return false
+ }
+ //emitter.indention = true
+ breaks = true
+ } else {
+ if breaks {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if value[i] == '\'' {
+ if !put(emitter, '\'') {
+ return false
+ }
+ }
+ if !write(emitter, value, &i) {
+ return false
+ }
+ emitter.indention = false
+ spaces = false
+ breaks = false
+ }
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) {
+ return false
+ }
+ emitter.whitespace = false
+ emitter.indention = false
+ return true
+}
+
+func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
+ spaces := false
+ if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) {
+ return false
+ }
+
+ for i := 0; i < len(value); {
+ if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||
+ is_bom(value, i) || is_break(value, i) ||
+ value[i] == '"' || value[i] == '\\' {
+
+ octet := value[i]
+
+ var w int
+ var v rune
+ switch {
+ case octet&0x80 == 0x00:
+ w, v = 1, rune(octet&0x7F)
+ case octet&0xE0 == 0xC0:
+ w, v = 2, rune(octet&0x1F)
+ case octet&0xF0 == 0xE0:
+ w, v = 3, rune(octet&0x0F)
+ case octet&0xF8 == 0xF0:
+ w, v = 4, rune(octet&0x07)
+ }
+ for k := 1; k < w; k++ {
+ octet = value[i+k]
+ v = (v << 6) + (rune(octet) & 0x3F)
+ }
+ i += w
+
+ if !put(emitter, '\\') {
+ return false
+ }
+
+ var ok bool
+ switch v {
+ case 0x00:
+ ok = put(emitter, '0')
+ case 0x07:
+ ok = put(emitter, 'a')
+ case 0x08:
+ ok = put(emitter, 'b')
+ case 0x09:
+ ok = put(emitter, 't')
+ case 0x0A:
+ ok = put(emitter, 'n')
+ case 0x0b:
+ ok = put(emitter, 'v')
+ case 0x0c:
+ ok = put(emitter, 'f')
+ case 0x0d:
+ ok = put(emitter, 'r')
+ case 0x1b:
+ ok = put(emitter, 'e')
+ case 0x22:
+ ok = put(emitter, '"')
+ case 0x5c:
+ ok = put(emitter, '\\')
+ case 0x85:
+ ok = put(emitter, 'N')
+ case 0xA0:
+ ok = put(emitter, '_')
+ case 0x2028:
+ ok = put(emitter, 'L')
+ case 0x2029:
+ ok = put(emitter, 'P')
+ default:
+ if v <= 0xFF {
+ ok = put(emitter, 'x')
+ w = 2
+ } else if v <= 0xFFFF {
+ ok = put(emitter, 'u')
+ w = 4
+ } else {
+ ok = put(emitter, 'U')
+ w = 8
+ }
+ for k := (w - 1) * 4; ok && k >= 0; k -= 4 {
+ digit := byte((v >> uint(k)) & 0x0F)
+ if digit < 10 {
+ ok = put(emitter, digit+'0')
+ } else {
+ ok = put(emitter, digit+'A'-10)
+ }
+ }
+ }
+ if !ok {
+ return false
+ }
+ spaces = false
+ } else if is_space(value, i) {
+ if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if is_space(value, i+1) {
+ if !put(emitter, '\\') {
+ return false
+ }
+ }
+ i += width(value[i])
+ } else if !write(emitter, value, &i) {
+ return false
+ }
+ spaces = true
+ } else {
+ if !write(emitter, value, &i) {
+ return false
+ }
+ spaces = false
+ }
+ }
+ if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) {
+ return false
+ }
+ emitter.whitespace = false
+ emitter.indention = false
+ return true
+}
+
+func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {
+ if is_space(value, 0) || is_break(value, 0) {
+ indent_hint := []byte{'0' + byte(emitter.best_indent)}
+ if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {
+ return false
+ }
+ }
+
+ emitter.open_ended = false
+
+ var chomp_hint [1]byte
+ if len(value) == 0 {
+ chomp_hint[0] = '-'
+ } else {
+ i := len(value) - 1
+ for value[i]&0xC0 == 0x80 {
+ i--
+ }
+ if !is_break(value, i) {
+ chomp_hint[0] = '-'
+ } else if i == 0 {
+ chomp_hint[0] = '+'
+ emitter.open_ended = true
+ } else {
+ i--
+ for value[i]&0xC0 == 0x80 {
+ i--
+ }
+ if is_break(value, i) {
+ chomp_hint[0] = '+'
+ emitter.open_ended = true
+ }
+ }
+ }
+ if chomp_hint[0] != 0 {
+ if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {
+ return false
+ }
+ }
+ return true
+}
+
+func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {
+ if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_block_scalar_hints(emitter, value) {
+ return false
+ }
+ if !put_break(emitter) {
+ return false
+ }
+ //emitter.indention = true
+ emitter.whitespace = true
+ breaks := true
+ for i := 0; i < len(value); {
+ if is_break(value, i) {
+ if !write_break(emitter, value, &i) {
+ return false
+ }
+ //emitter.indention = true
+ breaks = true
+ } else {
+ if breaks {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ }
+ if !write(emitter, value, &i) {
+ return false
+ }
+ emitter.indention = false
+ breaks = false
+ }
+ }
+
+ return true
+}
+
+func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {
+ if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {
+ return false
+ }
+ if !yaml_emitter_write_block_scalar_hints(emitter, value) {
+ return false
+ }
+
+ if !put_break(emitter) {
+ return false
+ }
+ //emitter.indention = true
+ emitter.whitespace = true
+
+ breaks := true
+ leading_spaces := true
+ for i := 0; i < len(value); {
+ if is_break(value, i) {
+ if !breaks && !leading_spaces && value[i] == '\n' {
+ k := 0
+ for is_break(value, k) {
+ k += width(value[k])
+ }
+ if !is_blankz(value, k) {
+ if !put_break(emitter) {
+ return false
+ }
+ }
+ }
+ if !write_break(emitter, value, &i) {
+ return false
+ }
+ //emitter.indention = true
+ breaks = true
+ } else {
+ if breaks {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ leading_spaces = is_blank(value, i)
+ }
+ if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {
+ if !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ i += width(value[i])
+ } else {
+ if !write(emitter, value, &i) {
+ return false
+ }
+ }
+ emitter.indention = false
+ breaks = false
+ }
+ }
+ return true
+}
+
+func yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool {
+ breaks := false
+ pound := false
+ for i := 0; i < len(comment); {
+ if is_break(comment, i) {
+ if !write_break(emitter, comment, &i) {
+ return false
+ }
+ //emitter.indention = true
+ breaks = true
+ pound = false
+ } else {
+ if breaks && !yaml_emitter_write_indent(emitter) {
+ return false
+ }
+ if !pound {
+ if comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) {
+ return false
+ }
+ pound = true
+ }
+ if !write(emitter, comment, &i) {
+ return false
+ }
+ emitter.indention = false
+ breaks = false
+ }
+ }
+ if !breaks && !put_break(emitter) {
+ return false
+ }
+
+ emitter.whitespace = true
+ //emitter.indention = true
+ return true
+}
diff --git a/vendor/gopkg.in/yaml.v3/encode.go b/vendor/gopkg.in/yaml.v3/encode.go
new file mode 100644
index 00000000000..1f37271ce45
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/encode.go
@@ -0,0 +1,561 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+//
+// 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.
+
+package yaml
+
+import (
+ "encoding"
+ "fmt"
+ "io"
+ "reflect"
+ "regexp"
+ "sort"
+ "strconv"
+ "strings"
+ "time"
+ "unicode/utf8"
+)
+
+type encoder struct {
+ emitter yaml_emitter_t
+ event yaml_event_t
+ out []byte
+ flow bool
+ indent int
+ doneInit bool
+}
+
+func newEncoder() *encoder {
+ e := &encoder{}
+ yaml_emitter_initialize(&e.emitter)
+ yaml_emitter_set_output_string(&e.emitter, &e.out)
+ yaml_emitter_set_unicode(&e.emitter, true)
+ return e
+}
+
+func newEncoderWithWriter(w io.Writer) *encoder {
+ e := &encoder{}
+ yaml_emitter_initialize(&e.emitter)
+ yaml_emitter_set_output_writer(&e.emitter, w)
+ yaml_emitter_set_unicode(&e.emitter, true)
+ return e
+}
+
+func (e *encoder) init() {
+ if e.doneInit {
+ return
+ }
+ if e.indent == 0 {
+ e.indent = 4
+ }
+ e.emitter.best_indent = e.indent
+ yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)
+ e.emit()
+ e.doneInit = true
+}
+
+func (e *encoder) finish() {
+ e.emitter.open_ended = false
+ yaml_stream_end_event_initialize(&e.event)
+ e.emit()
+}
+
+func (e *encoder) destroy() {
+ yaml_emitter_delete(&e.emitter)
+}
+
+func (e *encoder) emit() {
+ // This will internally delete the e.event value.
+ e.must(yaml_emitter_emit(&e.emitter, &e.event))
+}
+
+func (e *encoder) must(ok bool) {
+ if !ok {
+ msg := e.emitter.problem
+ if msg == "" {
+ msg = "unknown problem generating YAML content"
+ }
+ failf("%s", msg)
+ }
+}
+
+func (e *encoder) marshalDoc(tag string, in reflect.Value) {
+ e.init()
+ var node *Node
+ if in.IsValid() {
+ node, _ = in.Interface().(*Node)
+ }
+ if node != nil && node.Kind == DocumentNode {
+ e.nodev(in)
+ } else {
+ yaml_document_start_event_initialize(&e.event, nil, nil, true)
+ e.emit()
+ e.marshal(tag, in)
+ yaml_document_end_event_initialize(&e.event, true)
+ e.emit()
+ }
+}
+
+func (e *encoder) marshal(tag string, in reflect.Value) {
+ tag = shortTag(tag)
+ if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() {
+ e.nilv()
+ return
+ }
+ iface := in.Interface()
+ switch value := iface.(type) {
+ case *Node:
+ e.nodev(in)
+ return
+ case time.Time:
+ e.timev(tag, in)
+ return
+ case *time.Time:
+ e.timev(tag, in.Elem())
+ return
+ case time.Duration:
+ e.stringv(tag, reflect.ValueOf(value.String()))
+ return
+ case Marshaler:
+ v, err := value.MarshalYAML()
+ if err != nil {
+ fail(err)
+ }
+ if v == nil {
+ e.nilv()
+ return
+ }
+ e.marshal(tag, reflect.ValueOf(v))
+ return
+ case encoding.TextMarshaler:
+ text, err := value.MarshalText()
+ if err != nil {
+ fail(err)
+ }
+ in = reflect.ValueOf(string(text))
+ case nil:
+ e.nilv()
+ return
+ }
+ switch in.Kind() {
+ case reflect.Interface:
+ e.marshal(tag, in.Elem())
+ case reflect.Map:
+ e.mapv(tag, in)
+ case reflect.Ptr:
+ e.marshal(tag, in.Elem())
+ case reflect.Struct:
+ e.structv(tag, in)
+ case reflect.Slice, reflect.Array:
+ e.slicev(tag, in)
+ case reflect.String:
+ e.stringv(tag, in)
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ e.intv(tag, in)
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+ e.uintv(tag, in)
+ case reflect.Float32, reflect.Float64:
+ e.floatv(tag, in)
+ case reflect.Bool:
+ e.boolv(tag, in)
+ default:
+ panic("cannot marshal type: " + in.Type().String())
+ }
+}
+
+func (e *encoder) mapv(tag string, in reflect.Value) {
+ e.mappingv(tag, func() {
+ keys := keyList(in.MapKeys())
+ sort.Sort(keys)
+ for _, k := range keys {
+ e.marshal("", k)
+ e.marshal("", in.MapIndex(k))
+ }
+ })
+}
+
+func (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) {
+ for _, num := range index {
+ for {
+ if v.Kind() == reflect.Ptr {
+ if v.IsNil() {
+ return reflect.Value{}
+ }
+ v = v.Elem()
+ continue
+ }
+ break
+ }
+ v = v.Field(num)
+ }
+ return v
+}
+
+func (e *encoder) structv(tag string, in reflect.Value) {
+ sinfo, err := getStructInfo(in.Type())
+ if err != nil {
+ panic(err)
+ }
+ e.mappingv(tag, func() {
+ for _, info := range sinfo.FieldsList {
+ var value reflect.Value
+ if info.Inline == nil {
+ value = in.Field(info.Num)
+ } else {
+ value = e.fieldByIndex(in, info.Inline)
+ if !value.IsValid() {
+ continue
+ }
+ }
+ if info.OmitEmpty && isZero(value) {
+ continue
+ }
+ e.marshal("", reflect.ValueOf(info.Key))
+ e.flow = info.Flow
+ e.marshal("", value)
+ }
+ if sinfo.InlineMap >= 0 {
+ m := in.Field(sinfo.InlineMap)
+ if m.Len() > 0 {
+ e.flow = false
+ keys := keyList(m.MapKeys())
+ sort.Sort(keys)
+ for _, k := range keys {
+ if _, found := sinfo.FieldsMap[k.String()]; found {
+ panic(fmt.Sprintf("cannot have key %q in inlined map: conflicts with struct field", k.String()))
+ }
+ e.marshal("", k)
+ e.flow = false
+ e.marshal("", m.MapIndex(k))
+ }
+ }
+ }
+ })
+}
+
+func (e *encoder) mappingv(tag string, f func()) {
+ implicit := tag == ""
+ style := yaml_BLOCK_MAPPING_STYLE
+ if e.flow {
+ e.flow = false
+ style = yaml_FLOW_MAPPING_STYLE
+ }
+ yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)
+ e.emit()
+ f()
+ yaml_mapping_end_event_initialize(&e.event)
+ e.emit()
+}
+
+func (e *encoder) slicev(tag string, in reflect.Value) {
+ implicit := tag == ""
+ style := yaml_BLOCK_SEQUENCE_STYLE
+ if e.flow {
+ e.flow = false
+ style = yaml_FLOW_SEQUENCE_STYLE
+ }
+ e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))
+ e.emit()
+ n := in.Len()
+ for i := 0; i < n; i++ {
+ e.marshal("", in.Index(i))
+ }
+ e.must(yaml_sequence_end_event_initialize(&e.event))
+ e.emit()
+}
+
+// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.
+//
+// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported
+// in YAML 1.2 and by this package, but these should be marshalled quoted for
+// the time being for compatibility with other parsers.
+func isBase60Float(s string) (result bool) {
+ // Fast path.
+ if s == "" {
+ return false
+ }
+ c := s[0]
+ if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {
+ return false
+ }
+ // Do the full match.
+ return base60float.MatchString(s)
+}
+
+// From http://yaml.org/type/float.html, except the regular expression there
+// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix.
+var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`)
+
+// isOldBool returns whether s is bool notation as defined in YAML 1.1.
+//
+// We continue to force strings that YAML 1.1 would interpret as booleans to be
+// rendered as quotes strings so that the marshalled output valid for YAML 1.1
+// parsing.
+func isOldBool(s string) (result bool) {
+ switch s {
+ case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON",
+ "n", "N", "no", "No", "NO", "off", "Off", "OFF":
+ return true
+ default:
+ return false
+ }
+}
+
+func (e *encoder) stringv(tag string, in reflect.Value) {
+ var style yaml_scalar_style_t
+ s := in.String()
+ canUsePlain := true
+ switch {
+ case !utf8.ValidString(s):
+ if tag == binaryTag {
+ failf("explicitly tagged !!binary data must be base64-encoded")
+ }
+ if tag != "" {
+ failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag))
+ }
+ // It can't be encoded directly as YAML so use a binary tag
+ // and encode it as base64.
+ tag = binaryTag
+ s = encodeBase64(s)
+ case tag == "":
+ // Check to see if it would resolve to a specific
+ // tag when encoded unquoted. If it doesn't,
+ // there's no need to quote it.
+ rtag, _ := resolve("", s)
+ canUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s))
+ }
+ // Note: it's possible for user code to emit invalid YAML
+ // if they explicitly specify a tag and a string containing
+ // text that's incompatible with that tag.
+ switch {
+ case strings.Contains(s, "\n"):
+ if e.flow {
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ } else {
+ style = yaml_LITERAL_SCALAR_STYLE
+ }
+ case canUsePlain:
+ style = yaml_PLAIN_SCALAR_STYLE
+ default:
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+ e.emitScalar(s, "", tag, style, nil, nil, nil, nil)
+}
+
+func (e *encoder) boolv(tag string, in reflect.Value) {
+ var s string
+ if in.Bool() {
+ s = "true"
+ } else {
+ s = "false"
+ }
+ e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)
+}
+
+func (e *encoder) intv(tag string, in reflect.Value) {
+ s := strconv.FormatInt(in.Int(), 10)
+ e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)
+}
+
+func (e *encoder) uintv(tag string, in reflect.Value) {
+ s := strconv.FormatUint(in.Uint(), 10)
+ e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)
+}
+
+func (e *encoder) timev(tag string, in reflect.Value) {
+ t := in.Interface().(time.Time)
+ s := t.Format(time.RFC3339Nano)
+ e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)
+}
+
+func (e *encoder) floatv(tag string, in reflect.Value) {
+ // Issue #352: When formatting, use the precision of the underlying value
+ precision := 64
+ if in.Kind() == reflect.Float32 {
+ precision = 32
+ }
+
+ s := strconv.FormatFloat(in.Float(), 'g', -1, precision)
+ switch s {
+ case "+Inf":
+ s = ".inf"
+ case "-Inf":
+ s = "-.inf"
+ case "NaN":
+ s = ".nan"
+ }
+ e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)
+}
+
+func (e *encoder) nilv() {
+ e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil)
+}
+
+func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) {
+ // TODO Kill this function. Replace all initialize calls by their underlining Go literals.
+ implicit := tag == ""
+ if !implicit {
+ tag = longTag(tag)
+ }
+ e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))
+ e.event.head_comment = head
+ e.event.line_comment = line
+ e.event.foot_comment = foot
+ e.event.tail_comment = tail
+ e.emit()
+}
+
+func (e *encoder) nodev(in reflect.Value) {
+ e.node(in.Interface().(*Node), "")
+}
+
+func (e *encoder) node(node *Node, tail string) {
+ // If the tag was not explicitly requested, and dropping it won't change the
+ // implicit tag of the value, don't include it in the presentation.
+ var tag = node.Tag
+ var stag = shortTag(tag)
+ var rtag string
+ var forceQuoting bool
+ if tag != "" && node.Style&TaggedStyle == 0 {
+ if node.Kind == ScalarNode {
+ if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 {
+ tag = ""
+ } else {
+ rtag, _ = resolve("", node.Value)
+ if rtag == stag {
+ tag = ""
+ } else if stag == strTag {
+ tag = ""
+ forceQuoting = true
+ }
+ }
+ } else {
+ switch node.Kind {
+ case MappingNode:
+ rtag = mapTag
+ case SequenceNode:
+ rtag = seqTag
+ }
+ if rtag == stag {
+ tag = ""
+ }
+ }
+ }
+
+ switch node.Kind {
+ case DocumentNode:
+ yaml_document_start_event_initialize(&e.event, nil, nil, true)
+ e.event.head_comment = []byte(node.HeadComment)
+ e.emit()
+ for _, node := range node.Content {
+ e.node(node, "")
+ }
+ yaml_document_end_event_initialize(&e.event, true)
+ e.event.foot_comment = []byte(node.FootComment)
+ e.emit()
+
+ case SequenceNode:
+ style := yaml_BLOCK_SEQUENCE_STYLE
+ if node.Style&FlowStyle != 0 {
+ style = yaml_FLOW_SEQUENCE_STYLE
+ }
+ e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style))
+ e.event.head_comment = []byte(node.HeadComment)
+ e.emit()
+ for _, node := range node.Content {
+ e.node(node, "")
+ }
+ e.must(yaml_sequence_end_event_initialize(&e.event))
+ e.event.line_comment = []byte(node.LineComment)
+ e.event.foot_comment = []byte(node.FootComment)
+ e.emit()
+
+ case MappingNode:
+ style := yaml_BLOCK_MAPPING_STYLE
+ if node.Style&FlowStyle != 0 {
+ style = yaml_FLOW_MAPPING_STYLE
+ }
+ yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style)
+ e.event.tail_comment = []byte(tail)
+ e.event.head_comment = []byte(node.HeadComment)
+ e.emit()
+
+ // The tail logic below moves the foot comment of prior keys to the following key,
+ // since the value for each key may be a nested structure and the foot needs to be
+ // processed only the entirety of the value is streamed. The last tail is processed
+ // with the mapping end event.
+ var tail string
+ for i := 0; i+1 < len(node.Content); i += 2 {
+ k := node.Content[i]
+ foot := k.FootComment
+ if foot != "" {
+ kopy := *k
+ kopy.FootComment = ""
+ k = &kopy
+ }
+ e.node(k, tail)
+ tail = foot
+
+ v := node.Content[i+1]
+ e.node(v, "")
+ }
+
+ yaml_mapping_end_event_initialize(&e.event)
+ e.event.tail_comment = []byte(tail)
+ e.event.line_comment = []byte(node.LineComment)
+ e.event.foot_comment = []byte(node.FootComment)
+ e.emit()
+
+ case AliasNode:
+ yaml_alias_event_initialize(&e.event, []byte(node.Value))
+ e.event.head_comment = []byte(node.HeadComment)
+ e.event.line_comment = []byte(node.LineComment)
+ e.event.foot_comment = []byte(node.FootComment)
+ e.emit()
+
+ case ScalarNode:
+ value := node.Value
+ if !utf8.ValidString(value) {
+ if tag == binaryTag {
+ failf("explicitly tagged !!binary data must be base64-encoded")
+ }
+ if tag != "" {
+ failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag))
+ }
+ // It can't be encoded directly as YAML so use a binary tag
+ // and encode it as base64.
+ tag = binaryTag
+ value = encodeBase64(value)
+ }
+
+ style := yaml_PLAIN_SCALAR_STYLE
+ switch {
+ case node.Style&DoubleQuotedStyle != 0:
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ case node.Style&SingleQuotedStyle != 0:
+ style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+ case node.Style&LiteralStyle != 0:
+ style = yaml_LITERAL_SCALAR_STYLE
+ case node.Style&FoldedStyle != 0:
+ style = yaml_FOLDED_SCALAR_STYLE
+ case strings.Contains(value, "\n"):
+ style = yaml_LITERAL_SCALAR_STYLE
+ case forceQuoting:
+ style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+
+ e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail))
+ }
+}
diff --git a/vendor/gopkg.in/yaml.v3/parserc.go b/vendor/gopkg.in/yaml.v3/parserc.go
new file mode 100644
index 00000000000..aea9050b833
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/parserc.go
@@ -0,0 +1,1229 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+import (
+ "bytes"
+)
+
+// The parser implements the following grammar:
+//
+// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END
+// implicit_document ::= block_node DOCUMENT-END*
+// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+// block_node_or_indentless_sequence ::=
+// ALIAS
+// | properties (block_content | indentless_block_sequence)?
+// | block_content
+// | indentless_block_sequence
+// block_node ::= ALIAS
+// | properties block_content?
+// | block_content
+// flow_node ::= ALIAS
+// | properties flow_content?
+// | flow_content
+// properties ::= TAG ANCHOR? | ANCHOR TAG?
+// block_content ::= block_collection | flow_collection | SCALAR
+// flow_content ::= flow_collection | SCALAR
+// block_collection ::= block_sequence | block_mapping
+// flow_collection ::= flow_sequence | flow_mapping
+// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
+// indentless_sequence ::= (BLOCK-ENTRY block_node?)+
+// block_mapping ::= BLOCK-MAPPING_START
+// ((KEY block_node_or_indentless_sequence?)?
+// (VALUE block_node_or_indentless_sequence?)?)*
+// BLOCK-END
+// flow_sequence ::= FLOW-SEQUENCE-START
+// (flow_sequence_entry FLOW-ENTRY)*
+// flow_sequence_entry?
+// FLOW-SEQUENCE-END
+// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// flow_mapping ::= FLOW-MAPPING-START
+// (flow_mapping_entry FLOW-ENTRY)*
+// flow_mapping_entry?
+// FLOW-MAPPING-END
+// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+
+// Peek the next token in the token queue.
+func peek_token(parser *yaml_parser_t) *yaml_token_t {
+ if parser.token_available || yaml_parser_fetch_more_tokens(parser) {
+ token := &parser.tokens[parser.tokens_head]
+ yaml_parser_unfold_comments(parser, token)
+ return token
+ }
+ return nil
+}
+
+// yaml_parser_unfold_comments walks through the comments queue and joins all
+// comments behind the position of the provided token into the respective
+// top-level comment slices in the parser.
+func yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) {
+ for parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index {
+ comment := &parser.comments[parser.comments_head]
+ if len(comment.head) > 0 {
+ if token.typ == yaml_BLOCK_END_TOKEN {
+ // No heads on ends, so keep comment.head for a follow up token.
+ break
+ }
+ if len(parser.head_comment) > 0 {
+ parser.head_comment = append(parser.head_comment, '\n')
+ }
+ parser.head_comment = append(parser.head_comment, comment.head...)
+ }
+ if len(comment.foot) > 0 {
+ if len(parser.foot_comment) > 0 {
+ parser.foot_comment = append(parser.foot_comment, '\n')
+ }
+ parser.foot_comment = append(parser.foot_comment, comment.foot...)
+ }
+ if len(comment.line) > 0 {
+ if len(parser.line_comment) > 0 {
+ parser.line_comment = append(parser.line_comment, '\n')
+ }
+ parser.line_comment = append(parser.line_comment, comment.line...)
+ }
+ *comment = yaml_comment_t{}
+ parser.comments_head++
+ }
+}
+
+// Remove the next token from the queue (must be called after peek_token).
+func skip_token(parser *yaml_parser_t) {
+ parser.token_available = false
+ parser.tokens_parsed++
+ parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN
+ parser.tokens_head++
+}
+
+// Get the next event.
+func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {
+ // Erase the event object.
+ *event = yaml_event_t{}
+
+ // No events after the end of the stream or error.
+ if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {
+ return true
+ }
+
+ // Generate the next event.
+ return yaml_parser_state_machine(parser, event)
+}
+
+// Set parser error.
+func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {
+ parser.error = yaml_PARSER_ERROR
+ parser.problem = problem
+ parser.problem_mark = problem_mark
+ return false
+}
+
+func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {
+ parser.error = yaml_PARSER_ERROR
+ parser.context = context
+ parser.context_mark = context_mark
+ parser.problem = problem
+ parser.problem_mark = problem_mark
+ return false
+}
+
+// State dispatcher.
+func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {
+ //trace("yaml_parser_state_machine", "state:", parser.state.String())
+
+ switch parser.state {
+ case yaml_PARSE_STREAM_START_STATE:
+ return yaml_parser_parse_stream_start(parser, event)
+
+ case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:
+ return yaml_parser_parse_document_start(parser, event, true)
+
+ case yaml_PARSE_DOCUMENT_START_STATE:
+ return yaml_parser_parse_document_start(parser, event, false)
+
+ case yaml_PARSE_DOCUMENT_CONTENT_STATE:
+ return yaml_parser_parse_document_content(parser, event)
+
+ case yaml_PARSE_DOCUMENT_END_STATE:
+ return yaml_parser_parse_document_end(parser, event)
+
+ case yaml_PARSE_BLOCK_NODE_STATE:
+ return yaml_parser_parse_node(parser, event, true, false)
+
+ case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:
+ return yaml_parser_parse_node(parser, event, true, true)
+
+ case yaml_PARSE_FLOW_NODE_STATE:
+ return yaml_parser_parse_node(parser, event, false, false)
+
+ case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:
+ return yaml_parser_parse_block_sequence_entry(parser, event, true)
+
+ case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:
+ return yaml_parser_parse_block_sequence_entry(parser, event, false)
+
+ case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:
+ return yaml_parser_parse_indentless_sequence_entry(parser, event)
+
+ case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:
+ return yaml_parser_parse_block_mapping_key(parser, event, true)
+
+ case yaml_PARSE_BLOCK_MAPPING_KEY_STATE:
+ return yaml_parser_parse_block_mapping_key(parser, event, false)
+
+ case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:
+ return yaml_parser_parse_block_mapping_value(parser, event)
+
+ case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:
+ return yaml_parser_parse_flow_sequence_entry(parser, event, true)
+
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:
+ return yaml_parser_parse_flow_sequence_entry(parser, event, false)
+
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:
+ return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)
+
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:
+ return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)
+
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:
+ return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)
+
+ case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:
+ return yaml_parser_parse_flow_mapping_key(parser, event, true)
+
+ case yaml_PARSE_FLOW_MAPPING_KEY_STATE:
+ return yaml_parser_parse_flow_mapping_key(parser, event, false)
+
+ case yaml_PARSE_FLOW_MAPPING_VALUE_STATE:
+ return yaml_parser_parse_flow_mapping_value(parser, event, false)
+
+ case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:
+ return yaml_parser_parse_flow_mapping_value(parser, event, true)
+
+ default:
+ panic("invalid parser state")
+ }
+}
+
+// Parse the production:
+// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END
+// ************
+func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_STREAM_START_TOKEN {
+ return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark)
+ }
+ parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE
+ *event = yaml_event_t{
+ typ: yaml_STREAM_START_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ encoding: token.encoding,
+ }
+ skip_token(parser)
+ return true
+}
+
+// Parse the productions:
+// implicit_document ::= block_node DOCUMENT-END*
+// *
+// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+// *************************
+func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {
+
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ // Parse extra document end indicators.
+ if !implicit {
+ for token.typ == yaml_DOCUMENT_END_TOKEN {
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ }
+ }
+
+ if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&
+ token.typ != yaml_TAG_DIRECTIVE_TOKEN &&
+ token.typ != yaml_DOCUMENT_START_TOKEN &&
+ token.typ != yaml_STREAM_END_TOKEN {
+ // Parse an implicit document.
+ if !yaml_parser_process_directives(parser, nil, nil) {
+ return false
+ }
+ parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)
+ parser.state = yaml_PARSE_BLOCK_NODE_STATE
+
+ var head_comment []byte
+ if len(parser.head_comment) > 0 {
+ // [Go] Scan the header comment backwards, and if an empty line is found, break
+ // the header so the part before the last empty line goes into the
+ // document header, while the bottom of it goes into a follow up event.
+ for i := len(parser.head_comment) - 1; i > 0; i-- {
+ if parser.head_comment[i] == '\n' {
+ if i == len(parser.head_comment)-1 {
+ head_comment = parser.head_comment[:i]
+ parser.head_comment = parser.head_comment[i+1:]
+ break
+ } else if parser.head_comment[i-1] == '\n' {
+ head_comment = parser.head_comment[:i-1]
+ parser.head_comment = parser.head_comment[i+1:]
+ break
+ }
+ }
+ }
+ }
+
+ *event = yaml_event_t{
+ typ: yaml_DOCUMENT_START_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+
+ head_comment: head_comment,
+ }
+
+ } else if token.typ != yaml_STREAM_END_TOKEN {
+ // Parse an explicit document.
+ var version_directive *yaml_version_directive_t
+ var tag_directives []yaml_tag_directive_t
+ start_mark := token.start_mark
+ if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {
+ return false
+ }
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_DOCUMENT_START_TOKEN {
+ yaml_parser_set_parser_error(parser,
+ "did not find expected ", token.start_mark)
+ return false
+ }
+ parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)
+ parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE
+ end_mark := token.end_mark
+
+ *event = yaml_event_t{
+ typ: yaml_DOCUMENT_START_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ version_directive: version_directive,
+ tag_directives: tag_directives,
+ implicit: false,
+ }
+ skip_token(parser)
+
+ } else {
+ // Parse the stream end.
+ parser.state = yaml_PARSE_END_STATE
+ *event = yaml_event_t{
+ typ: yaml_STREAM_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ }
+ skip_token(parser)
+ }
+
+ return true
+}
+
+// Parse the productions:
+// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+// ***********
+//
+func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ if token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||
+ token.typ == yaml_TAG_DIRECTIVE_TOKEN ||
+ token.typ == yaml_DOCUMENT_START_TOKEN ||
+ token.typ == yaml_DOCUMENT_END_TOKEN ||
+ token.typ == yaml_STREAM_END_TOKEN {
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+ return yaml_parser_process_empty_scalar(parser, event,
+ token.start_mark)
+ }
+ return yaml_parser_parse_node(parser, event, true, false)
+}
+
+// Parse the productions:
+// implicit_document ::= block_node DOCUMENT-END*
+// *************
+// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+//
+func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ start_mark := token.start_mark
+ end_mark := token.start_mark
+
+ implicit := true
+ if token.typ == yaml_DOCUMENT_END_TOKEN {
+ end_mark = token.end_mark
+ skip_token(parser)
+ implicit = false
+ }
+
+ parser.tag_directives = parser.tag_directives[:0]
+
+ parser.state = yaml_PARSE_DOCUMENT_START_STATE
+ *event = yaml_event_t{
+ typ: yaml_DOCUMENT_END_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ implicit: implicit,
+ }
+ yaml_parser_set_event_comments(parser, event)
+ if len(event.head_comment) > 0 && len(event.foot_comment) == 0 {
+ event.foot_comment = event.head_comment
+ event.head_comment = nil
+ }
+ return true
+}
+
+func yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) {
+ event.head_comment = parser.head_comment
+ event.line_comment = parser.line_comment
+ event.foot_comment = parser.foot_comment
+ parser.head_comment = nil
+ parser.line_comment = nil
+ parser.foot_comment = nil
+ parser.tail_comment = nil
+ parser.stem_comment = nil
+}
+
+// Parse the productions:
+// block_node_or_indentless_sequence ::=
+// ALIAS
+// *****
+// | properties (block_content | indentless_block_sequence)?
+// ********** *
+// | block_content | indentless_block_sequence
+// *
+// block_node ::= ALIAS
+// *****
+// | properties block_content?
+// ********** *
+// | block_content
+// *
+// flow_node ::= ALIAS
+// *****
+// | properties flow_content?
+// ********** *
+// | flow_content
+// *
+// properties ::= TAG ANCHOR? | ANCHOR TAG?
+// *************************
+// block_content ::= block_collection | flow_collection | SCALAR
+// ******
+// flow_content ::= flow_collection | SCALAR
+// ******
+func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {
+ //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)()
+
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ if token.typ == yaml_ALIAS_TOKEN {
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+ *event = yaml_event_t{
+ typ: yaml_ALIAS_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ anchor: token.value,
+ }
+ yaml_parser_set_event_comments(parser, event)
+ skip_token(parser)
+ return true
+ }
+
+ start_mark := token.start_mark
+ end_mark := token.start_mark
+
+ var tag_token bool
+ var tag_handle, tag_suffix, anchor []byte
+ var tag_mark yaml_mark_t
+ if token.typ == yaml_ANCHOR_TOKEN {
+ anchor = token.value
+ start_mark = token.start_mark
+ end_mark = token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ == yaml_TAG_TOKEN {
+ tag_token = true
+ tag_handle = token.value
+ tag_suffix = token.suffix
+ tag_mark = token.start_mark
+ end_mark = token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ }
+ } else if token.typ == yaml_TAG_TOKEN {
+ tag_token = true
+ tag_handle = token.value
+ tag_suffix = token.suffix
+ start_mark = token.start_mark
+ tag_mark = token.start_mark
+ end_mark = token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ == yaml_ANCHOR_TOKEN {
+ anchor = token.value
+ end_mark = token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ }
+ }
+
+ var tag []byte
+ if tag_token {
+ if len(tag_handle) == 0 {
+ tag = tag_suffix
+ tag_suffix = nil
+ } else {
+ for i := range parser.tag_directives {
+ if bytes.Equal(parser.tag_directives[i].handle, tag_handle) {
+ tag = append([]byte(nil), parser.tag_directives[i].prefix...)
+ tag = append(tag, tag_suffix...)
+ break
+ }
+ }
+ if len(tag) == 0 {
+ yaml_parser_set_parser_error_context(parser,
+ "while parsing a node", start_mark,
+ "found undefined tag handle", tag_mark)
+ return false
+ }
+ }
+ }
+
+ implicit := len(tag) == 0
+ if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {
+ end_mark = token.end_mark
+ parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_START_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),
+ }
+ return true
+ }
+ if token.typ == yaml_SCALAR_TOKEN {
+ var plain_implicit, quoted_implicit bool
+ end_mark = token.end_mark
+ if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {
+ plain_implicit = true
+ } else if len(tag) == 0 {
+ quoted_implicit = true
+ }
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+
+ *event = yaml_event_t{
+ typ: yaml_SCALAR_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ value: token.value,
+ implicit: plain_implicit,
+ quoted_implicit: quoted_implicit,
+ style: yaml_style_t(token.style),
+ }
+ yaml_parser_set_event_comments(parser, event)
+ skip_token(parser)
+ return true
+ }
+ if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {
+ // [Go] Some of the events below can be merged as they differ only on style.
+ end_mark = token.end_mark
+ parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_START_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),
+ }
+ yaml_parser_set_event_comments(parser, event)
+ return true
+ }
+ if token.typ == yaml_FLOW_MAPPING_START_TOKEN {
+ end_mark = token.end_mark
+ parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_START_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(yaml_FLOW_MAPPING_STYLE),
+ }
+ yaml_parser_set_event_comments(parser, event)
+ return true
+ }
+ if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {
+ end_mark = token.end_mark
+ parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_START_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),
+ }
+ if parser.stem_comment != nil {
+ event.head_comment = parser.stem_comment
+ parser.stem_comment = nil
+ }
+ return true
+ }
+ if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {
+ end_mark = token.end_mark
+ parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_START_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE),
+ }
+ return true
+ }
+ if len(anchor) > 0 || len(tag) > 0 {
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+
+ *event = yaml_event_t{
+ typ: yaml_SCALAR_EVENT,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ anchor: anchor,
+ tag: tag,
+ implicit: implicit,
+ quoted_implicit: false,
+ style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE),
+ }
+ return true
+ }
+
+ context := "while parsing a flow node"
+ if block {
+ context = "while parsing a block node"
+ }
+ yaml_parser_set_parser_error_context(parser, context, start_mark,
+ "did not find expected node content", token.start_mark)
+ return false
+}
+
+// Parse the productions:
+// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
+// ******************** *********** * *********
+//
+func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+ if first {
+ token := peek_token(parser)
+ parser.marks = append(parser.marks, token.start_mark)
+ skip_token(parser)
+ }
+
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ if token.typ == yaml_BLOCK_ENTRY_TOKEN {
+ mark := token.end_mark
+ prior_head := len(parser.head_comment)
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if prior_head > 0 && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {
+ // [Go] It's a sequence under a sequence entry, so the former head comment
+ // is for the list itself, not the first list item under it.
+ parser.stem_comment = parser.head_comment[:prior_head]
+ if len(parser.head_comment) == prior_head {
+ parser.head_comment = nil
+ } else {
+ // Copy suffix to prevent very strange bugs if someone ever appends
+ // further bytes to the prefix in the stem_comment slice above.
+ parser.head_comment = append([]byte(nil), parser.head_comment[prior_head+1:]...)
+ }
+
+ }
+ if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)
+ return yaml_parser_parse_node(parser, event, true, false)
+ } else {
+ parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
+ return yaml_parser_process_empty_scalar(parser, event, mark)
+ }
+ }
+ if token.typ == yaml_BLOCK_END_TOKEN {
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ }
+
+ skip_token(parser)
+ return true
+ }
+
+ context_mark := parser.marks[len(parser.marks)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+ return yaml_parser_set_parser_error_context(parser,
+ "while parsing a block collection", context_mark,
+ "did not find expected '-' indicator", token.start_mark)
+}
+
+// Parse the productions:
+// indentless_sequence ::= (BLOCK-ENTRY block_node?)+
+// *********** *
+func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ if token.typ == yaml_BLOCK_ENTRY_TOKEN {
+ mark := token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_BLOCK_ENTRY_TOKEN &&
+ token.typ != yaml_KEY_TOKEN &&
+ token.typ != yaml_VALUE_TOKEN &&
+ token.typ != yaml_BLOCK_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)
+ return yaml_parser_parse_node(parser, event, true, false)
+ }
+ parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
+ return yaml_parser_process_empty_scalar(parser, event, mark)
+ }
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark?
+ }
+ return true
+}
+
+// Parse the productions:
+// block_mapping ::= BLOCK-MAPPING_START
+// *******************
+// ((KEY block_node_or_indentless_sequence?)?
+// *** *
+// (VALUE block_node_or_indentless_sequence?)?)*
+//
+// BLOCK-END
+// *********
+//
+func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+ if first {
+ token := peek_token(parser)
+ parser.marks = append(parser.marks, token.start_mark)
+ skip_token(parser)
+ }
+
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ // [Go] A tail comment was left from the prior mapping value processed. Emit an event
+ // as it needs to be processed with that value and not the following key.
+ if len(parser.tail_comment) > 0 {
+ *event = yaml_event_t{
+ typ: yaml_TAIL_COMMENT_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ foot_comment: parser.tail_comment,
+ }
+ parser.tail_comment = nil
+ return true
+ }
+
+ if token.typ == yaml_KEY_TOKEN {
+ mark := token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_KEY_TOKEN &&
+ token.typ != yaml_VALUE_TOKEN &&
+ token.typ != yaml_BLOCK_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)
+ return yaml_parser_parse_node(parser, event, true, true)
+ } else {
+ parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE
+ return yaml_parser_process_empty_scalar(parser, event, mark)
+ }
+ } else if token.typ == yaml_BLOCK_END_TOKEN {
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ }
+ yaml_parser_set_event_comments(parser, event)
+ skip_token(parser)
+ return true
+ }
+
+ context_mark := parser.marks[len(parser.marks)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+ return yaml_parser_set_parser_error_context(parser,
+ "while parsing a block mapping", context_mark,
+ "did not find expected key", token.start_mark)
+}
+
+// Parse the productions:
+// block_mapping ::= BLOCK-MAPPING_START
+//
+// ((KEY block_node_or_indentless_sequence?)?
+//
+// (VALUE block_node_or_indentless_sequence?)?)*
+// ***** *
+// BLOCK-END
+//
+//
+func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ == yaml_VALUE_TOKEN {
+ mark := token.end_mark
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_KEY_TOKEN &&
+ token.typ != yaml_VALUE_TOKEN &&
+ token.typ != yaml_BLOCK_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)
+ return yaml_parser_parse_node(parser, event, true, true)
+ }
+ parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE
+ return yaml_parser_process_empty_scalar(parser, event, mark)
+ }
+ parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE
+ return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+}
+
+// Parse the productions:
+// flow_sequence ::= FLOW-SEQUENCE-START
+// *******************
+// (flow_sequence_entry FLOW-ENTRY)*
+// * **********
+// flow_sequence_entry?
+// *
+// FLOW-SEQUENCE-END
+// *****************
+// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// *
+//
+func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+ if first {
+ token := peek_token(parser)
+ parser.marks = append(parser.marks, token.start_mark)
+ skip_token(parser)
+ }
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+ if !first {
+ if token.typ == yaml_FLOW_ENTRY_TOKEN {
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ } else {
+ context_mark := parser.marks[len(parser.marks)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+ return yaml_parser_set_parser_error_context(parser,
+ "while parsing a flow sequence", context_mark,
+ "did not find expected ',' or ']'", token.start_mark)
+ }
+ }
+
+ if token.typ == yaml_KEY_TOKEN {
+ parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_START_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ implicit: true,
+ style: yaml_style_t(yaml_FLOW_MAPPING_STYLE),
+ }
+ skip_token(parser)
+ return true
+ } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)
+ return yaml_parser_parse_node(parser, event, false, false)
+ }
+ }
+
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+
+ *event = yaml_event_t{
+ typ: yaml_SEQUENCE_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ }
+ yaml_parser_set_event_comments(parser, event)
+
+ skip_token(parser)
+ return true
+}
+
+//
+// Parse the productions:
+// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// *** *
+//
+func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_VALUE_TOKEN &&
+ token.typ != yaml_FLOW_ENTRY_TOKEN &&
+ token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)
+ return yaml_parser_parse_node(parser, event, false, false)
+ }
+ mark := token.end_mark
+ skip_token(parser)
+ parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
+ return yaml_parser_process_empty_scalar(parser, event, mark)
+}
+
+// Parse the productions:
+// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// ***** *
+//
+func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ == yaml_VALUE_TOKEN {
+ skip_token(parser)
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)
+ return yaml_parser_parse_node(parser, event, false, false)
+ }
+ }
+ parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
+ return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+}
+
+// Parse the productions:
+// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// *
+//
+func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.start_mark, // [Go] Shouldn't this be end_mark?
+ }
+ return true
+}
+
+// Parse the productions:
+// flow_mapping ::= FLOW-MAPPING-START
+// ******************
+// (flow_mapping_entry FLOW-ENTRY)*
+// * **********
+// flow_mapping_entry?
+// ******************
+// FLOW-MAPPING-END
+// ****************
+// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// * *** *
+//
+func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+ if first {
+ token := peek_token(parser)
+ parser.marks = append(parser.marks, token.start_mark)
+ skip_token(parser)
+ }
+
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ if token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+ if !first {
+ if token.typ == yaml_FLOW_ENTRY_TOKEN {
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ } else {
+ context_mark := parser.marks[len(parser.marks)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+ return yaml_parser_set_parser_error_context(parser,
+ "while parsing a flow mapping", context_mark,
+ "did not find expected ',' or '}'", token.start_mark)
+ }
+ }
+
+ if token.typ == yaml_KEY_TOKEN {
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_VALUE_TOKEN &&
+ token.typ != yaml_FLOW_ENTRY_TOKEN &&
+ token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)
+ return yaml_parser_parse_node(parser, event, false, false)
+ } else {
+ parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE
+ return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+ }
+ } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)
+ return yaml_parser_parse_node(parser, event, false, false)
+ }
+ }
+
+ parser.state = parser.states[len(parser.states)-1]
+ parser.states = parser.states[:len(parser.states)-1]
+ parser.marks = parser.marks[:len(parser.marks)-1]
+ *event = yaml_event_t{
+ typ: yaml_MAPPING_END_EVENT,
+ start_mark: token.start_mark,
+ end_mark: token.end_mark,
+ }
+ yaml_parser_set_event_comments(parser, event)
+ skip_token(parser)
+ return true
+}
+
+// Parse the productions:
+// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// * ***** *
+//
+func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if empty {
+ parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE
+ return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+ }
+ if token.typ == yaml_VALUE_TOKEN {
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+ parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)
+ return yaml_parser_parse_node(parser, event, false, false)
+ }
+ }
+ parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE
+ return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+}
+
+// Generate an empty scalar event.
+func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {
+ *event = yaml_event_t{
+ typ: yaml_SCALAR_EVENT,
+ start_mark: mark,
+ end_mark: mark,
+ value: nil, // Empty
+ implicit: true,
+ style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE),
+ }
+ return true
+}
+
+var default_tag_directives = []yaml_tag_directive_t{
+ {[]byte("!"), []byte("!")},
+ {[]byte("!!"), []byte("tag:yaml.org,2002:")},
+}
+
+// Parse directives.
+func yaml_parser_process_directives(parser *yaml_parser_t,
+ version_directive_ref **yaml_version_directive_t,
+ tag_directives_ref *[]yaml_tag_directive_t) bool {
+
+ var version_directive *yaml_version_directive_t
+ var tag_directives []yaml_tag_directive_t
+
+ token := peek_token(parser)
+ if token == nil {
+ return false
+ }
+
+ for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {
+ if token.typ == yaml_VERSION_DIRECTIVE_TOKEN {
+ if version_directive != nil {
+ yaml_parser_set_parser_error(parser,
+ "found duplicate %YAML directive", token.start_mark)
+ return false
+ }
+ if token.major != 1 || token.minor != 1 {
+ yaml_parser_set_parser_error(parser,
+ "found incompatible YAML document", token.start_mark)
+ return false
+ }
+ version_directive = &yaml_version_directive_t{
+ major: token.major,
+ minor: token.minor,
+ }
+ } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {
+ value := yaml_tag_directive_t{
+ handle: token.value,
+ prefix: token.prefix,
+ }
+ if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {
+ return false
+ }
+ tag_directives = append(tag_directives, value)
+ }
+
+ skip_token(parser)
+ token = peek_token(parser)
+ if token == nil {
+ return false
+ }
+ }
+
+ for i := range default_tag_directives {
+ if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {
+ return false
+ }
+ }
+
+ if version_directive_ref != nil {
+ *version_directive_ref = version_directive
+ }
+ if tag_directives_ref != nil {
+ *tag_directives_ref = tag_directives
+ }
+ return true
+}
+
+// Append a tag directive to the directives stack.
+func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {
+ for i := range parser.tag_directives {
+ if bytes.Equal(value.handle, parser.tag_directives[i].handle) {
+ if allow_duplicates {
+ return true
+ }
+ return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark)
+ }
+ }
+
+ // [Go] I suspect the copy is unnecessary. This was likely done
+ // because there was no way to track ownership of the data.
+ value_copy := yaml_tag_directive_t{
+ handle: make([]byte, len(value.handle)),
+ prefix: make([]byte, len(value.prefix)),
+ }
+ copy(value_copy.handle, value.handle)
+ copy(value_copy.prefix, value.prefix)
+ parser.tag_directives = append(parser.tag_directives, value_copy)
+ return true
+}
diff --git a/vendor/gopkg.in/yaml.v3/readerc.go b/vendor/gopkg.in/yaml.v3/readerc.go
new file mode 100644
index 00000000000..b7de0a89c46
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/readerc.go
@@ -0,0 +1,434 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+import (
+ "io"
+)
+
+// Set the reader error and return 0.
+func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {
+ parser.error = yaml_READER_ERROR
+ parser.problem = problem
+ parser.problem_offset = offset
+ parser.problem_value = value
+ return false
+}
+
+// Byte order marks.
+const (
+ bom_UTF8 = "\xef\xbb\xbf"
+ bom_UTF16LE = "\xff\xfe"
+ bom_UTF16BE = "\xfe\xff"
+)
+
+// Determine the input stream encoding by checking the BOM symbol. If no BOM is
+// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.
+func yaml_parser_determine_encoding(parser *yaml_parser_t) bool {
+ // Ensure that we had enough bytes in the raw buffer.
+ for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {
+ if !yaml_parser_update_raw_buffer(parser) {
+ return false
+ }
+ }
+
+ // Determine the encoding.
+ buf := parser.raw_buffer
+ pos := parser.raw_buffer_pos
+ avail := len(buf) - pos
+ if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {
+ parser.encoding = yaml_UTF16LE_ENCODING
+ parser.raw_buffer_pos += 2
+ parser.offset += 2
+ } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {
+ parser.encoding = yaml_UTF16BE_ENCODING
+ parser.raw_buffer_pos += 2
+ parser.offset += 2
+ } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {
+ parser.encoding = yaml_UTF8_ENCODING
+ parser.raw_buffer_pos += 3
+ parser.offset += 3
+ } else {
+ parser.encoding = yaml_UTF8_ENCODING
+ }
+ return true
+}
+
+// Update the raw buffer.
+func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {
+ size_read := 0
+
+ // Return if the raw buffer is full.
+ if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {
+ return true
+ }
+
+ // Return on EOF.
+ if parser.eof {
+ return true
+ }
+
+ // Move the remaining bytes in the raw buffer to the beginning.
+ if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {
+ copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])
+ }
+ parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]
+ parser.raw_buffer_pos = 0
+
+ // Call the read handler to fill the buffer.
+ size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])
+ parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]
+ if err == io.EOF {
+ parser.eof = true
+ } else if err != nil {
+ return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1)
+ }
+ return true
+}
+
+// Ensure that the buffer contains at least `length` characters.
+// Return true on success, false on failure.
+//
+// The length is supposed to be significantly less that the buffer size.
+func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {
+ if parser.read_handler == nil {
+ panic("read handler must be set")
+ }
+
+ // [Go] This function was changed to guarantee the requested length size at EOF.
+ // The fact we need to do this is pretty awful, but the description above implies
+ // for that to be the case, and there are tests
+
+ // If the EOF flag is set and the raw buffer is empty, do nothing.
+ if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {
+ // [Go] ACTUALLY! Read the documentation of this function above.
+ // This is just broken. To return true, we need to have the
+ // given length in the buffer. Not doing that means every single
+ // check that calls this function to make sure the buffer has a
+ // given length is Go) panicking; or C) accessing invalid memory.
+ //return true
+ }
+
+ // Return if the buffer contains enough characters.
+ if parser.unread >= length {
+ return true
+ }
+
+ // Determine the input encoding if it is not known yet.
+ if parser.encoding == yaml_ANY_ENCODING {
+ if !yaml_parser_determine_encoding(parser) {
+ return false
+ }
+ }
+
+ // Move the unread characters to the beginning of the buffer.
+ buffer_len := len(parser.buffer)
+ if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {
+ copy(parser.buffer, parser.buffer[parser.buffer_pos:])
+ buffer_len -= parser.buffer_pos
+ parser.buffer_pos = 0
+ } else if parser.buffer_pos == buffer_len {
+ buffer_len = 0
+ parser.buffer_pos = 0
+ }
+
+ // Open the whole buffer for writing, and cut it before returning.
+ parser.buffer = parser.buffer[:cap(parser.buffer)]
+
+ // Fill the buffer until it has enough characters.
+ first := true
+ for parser.unread < length {
+
+ // Fill the raw buffer if necessary.
+ if !first || parser.raw_buffer_pos == len(parser.raw_buffer) {
+ if !yaml_parser_update_raw_buffer(parser) {
+ parser.buffer = parser.buffer[:buffer_len]
+ return false
+ }
+ }
+ first = false
+
+ // Decode the raw buffer.
+ inner:
+ for parser.raw_buffer_pos != len(parser.raw_buffer) {
+ var value rune
+ var width int
+
+ raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos
+
+ // Decode the next character.
+ switch parser.encoding {
+ case yaml_UTF8_ENCODING:
+ // Decode a UTF-8 character. Check RFC 3629
+ // (http://www.ietf.org/rfc/rfc3629.txt) for more details.
+ //
+ // The following table (taken from the RFC) is used for
+ // decoding.
+ //
+ // Char. number range | UTF-8 octet sequence
+ // (hexadecimal) | (binary)
+ // --------------------+------------------------------------
+ // 0000 0000-0000 007F | 0xxxxxxx
+ // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
+ // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
+ // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ //
+ // Additionally, the characters in the range 0xD800-0xDFFF
+ // are prohibited as they are reserved for use with UTF-16
+ // surrogate pairs.
+
+ // Determine the length of the UTF-8 sequence.
+ octet := parser.raw_buffer[parser.raw_buffer_pos]
+ switch {
+ case octet&0x80 == 0x00:
+ width = 1
+ case octet&0xE0 == 0xC0:
+ width = 2
+ case octet&0xF0 == 0xE0:
+ width = 3
+ case octet&0xF8 == 0xF0:
+ width = 4
+ default:
+ // The leading octet is invalid.
+ return yaml_parser_set_reader_error(parser,
+ "invalid leading UTF-8 octet",
+ parser.offset, int(octet))
+ }
+
+ // Check if the raw buffer contains an incomplete character.
+ if width > raw_unread {
+ if parser.eof {
+ return yaml_parser_set_reader_error(parser,
+ "incomplete UTF-8 octet sequence",
+ parser.offset, -1)
+ }
+ break inner
+ }
+
+ // Decode the leading octet.
+ switch {
+ case octet&0x80 == 0x00:
+ value = rune(octet & 0x7F)
+ case octet&0xE0 == 0xC0:
+ value = rune(octet & 0x1F)
+ case octet&0xF0 == 0xE0:
+ value = rune(octet & 0x0F)
+ case octet&0xF8 == 0xF0:
+ value = rune(octet & 0x07)
+ default:
+ value = 0
+ }
+
+ // Check and decode the trailing octets.
+ for k := 1; k < width; k++ {
+ octet = parser.raw_buffer[parser.raw_buffer_pos+k]
+
+ // Check if the octet is valid.
+ if (octet & 0xC0) != 0x80 {
+ return yaml_parser_set_reader_error(parser,
+ "invalid trailing UTF-8 octet",
+ parser.offset+k, int(octet))
+ }
+
+ // Decode the octet.
+ value = (value << 6) + rune(octet&0x3F)
+ }
+
+ // Check the length of the sequence against the value.
+ switch {
+ case width == 1:
+ case width == 2 && value >= 0x80:
+ case width == 3 && value >= 0x800:
+ case width == 4 && value >= 0x10000:
+ default:
+ return yaml_parser_set_reader_error(parser,
+ "invalid length of a UTF-8 sequence",
+ parser.offset, -1)
+ }
+
+ // Check the range of the value.
+ if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {
+ return yaml_parser_set_reader_error(parser,
+ "invalid Unicode character",
+ parser.offset, int(value))
+ }
+
+ case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:
+ var low, high int
+ if parser.encoding == yaml_UTF16LE_ENCODING {
+ low, high = 0, 1
+ } else {
+ low, high = 1, 0
+ }
+
+ // The UTF-16 encoding is not as simple as one might
+ // naively think. Check RFC 2781
+ // (http://www.ietf.org/rfc/rfc2781.txt).
+ //
+ // Normally, two subsequent bytes describe a Unicode
+ // character. However a special technique (called a
+ // surrogate pair) is used for specifying character
+ // values larger than 0xFFFF.
+ //
+ // A surrogate pair consists of two pseudo-characters:
+ // high surrogate area (0xD800-0xDBFF)
+ // low surrogate area (0xDC00-0xDFFF)
+ //
+ // The following formulas are used for decoding
+ // and encoding characters using surrogate pairs:
+ //
+ // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF)
+ // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF)
+ // W1 = 110110yyyyyyyyyy
+ // W2 = 110111xxxxxxxxxx
+ //
+ // where U is the character value, W1 is the high surrogate
+ // area, W2 is the low surrogate area.
+
+ // Check for incomplete UTF-16 character.
+ if raw_unread < 2 {
+ if parser.eof {
+ return yaml_parser_set_reader_error(parser,
+ "incomplete UTF-16 character",
+ parser.offset, -1)
+ }
+ break inner
+ }
+
+ // Get the character.
+ value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +
+ (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)
+
+ // Check for unexpected low surrogate area.
+ if value&0xFC00 == 0xDC00 {
+ return yaml_parser_set_reader_error(parser,
+ "unexpected low surrogate area",
+ parser.offset, int(value))
+ }
+
+ // Check for a high surrogate area.
+ if value&0xFC00 == 0xD800 {
+ width = 4
+
+ // Check for incomplete surrogate pair.
+ if raw_unread < 4 {
+ if parser.eof {
+ return yaml_parser_set_reader_error(parser,
+ "incomplete UTF-16 surrogate pair",
+ parser.offset, -1)
+ }
+ break inner
+ }
+
+ // Get the next character.
+ value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +
+ (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)
+
+ // Check for a low surrogate area.
+ if value2&0xFC00 != 0xDC00 {
+ return yaml_parser_set_reader_error(parser,
+ "expected low surrogate area",
+ parser.offset+2, int(value2))
+ }
+
+ // Generate the value of the surrogate pair.
+ value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)
+ } else {
+ width = 2
+ }
+
+ default:
+ panic("impossible")
+ }
+
+ // Check if the character is in the allowed range:
+ // #x9 | #xA | #xD | [#x20-#x7E] (8 bit)
+ // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit)
+ // | [#x10000-#x10FFFF] (32 bit)
+ switch {
+ case value == 0x09:
+ case value == 0x0A:
+ case value == 0x0D:
+ case value >= 0x20 && value <= 0x7E:
+ case value == 0x85:
+ case value >= 0xA0 && value <= 0xD7FF:
+ case value >= 0xE000 && value <= 0xFFFD:
+ case value >= 0x10000 && value <= 0x10FFFF:
+ default:
+ return yaml_parser_set_reader_error(parser,
+ "control characters are not allowed",
+ parser.offset, int(value))
+ }
+
+ // Move the raw pointers.
+ parser.raw_buffer_pos += width
+ parser.offset += width
+
+ // Finally put the character into the buffer.
+ if value <= 0x7F {
+ // 0000 0000-0000 007F . 0xxxxxxx
+ parser.buffer[buffer_len+0] = byte(value)
+ buffer_len += 1
+ } else if value <= 0x7FF {
+ // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx
+ parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))
+ parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))
+ buffer_len += 2
+ } else if value <= 0xFFFF {
+ // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx
+ parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))
+ parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))
+ parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))
+ buffer_len += 3
+ } else {
+ // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))
+ parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))
+ parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))
+ parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))
+ buffer_len += 4
+ }
+
+ parser.unread++
+ }
+
+ // On EOF, put NUL into the buffer and return.
+ if parser.eof {
+ parser.buffer[buffer_len] = 0
+ buffer_len++
+ parser.unread++
+ break
+ }
+ }
+ // [Go] Read the documentation of this function above. To return true,
+ // we need to have the given length in the buffer. Not doing that means
+ // every single check that calls this function to make sure the buffer
+ // has a given length is Go) panicking; or C) accessing invalid memory.
+ // This happens here due to the EOF above breaking early.
+ for buffer_len < length {
+ parser.buffer[buffer_len] = 0
+ buffer_len++
+ }
+ parser.buffer = parser.buffer[:buffer_len]
+ return true
+}
diff --git a/vendor/gopkg.in/yaml.v3/resolve.go b/vendor/gopkg.in/yaml.v3/resolve.go
new file mode 100644
index 00000000000..64ae888057a
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/resolve.go
@@ -0,0 +1,326 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+//
+// 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.
+
+package yaml
+
+import (
+ "encoding/base64"
+ "math"
+ "regexp"
+ "strconv"
+ "strings"
+ "time"
+)
+
+type resolveMapItem struct {
+ value interface{}
+ tag string
+}
+
+var resolveTable = make([]byte, 256)
+var resolveMap = make(map[string]resolveMapItem)
+
+func init() {
+ t := resolveTable
+ t[int('+')] = 'S' // Sign
+ t[int('-')] = 'S'
+ for _, c := range "0123456789" {
+ t[int(c)] = 'D' // Digit
+ }
+ for _, c := range "yYnNtTfFoO~" {
+ t[int(c)] = 'M' // In map
+ }
+ t[int('.')] = '.' // Float (potentially in map)
+
+ var resolveMapList = []struct {
+ v interface{}
+ tag string
+ l []string
+ }{
+ {true, boolTag, []string{"true", "True", "TRUE"}},
+ {false, boolTag, []string{"false", "False", "FALSE"}},
+ {nil, nullTag, []string{"", "~", "null", "Null", "NULL"}},
+ {math.NaN(), floatTag, []string{".nan", ".NaN", ".NAN"}},
+ {math.Inf(+1), floatTag, []string{".inf", ".Inf", ".INF"}},
+ {math.Inf(+1), floatTag, []string{"+.inf", "+.Inf", "+.INF"}},
+ {math.Inf(-1), floatTag, []string{"-.inf", "-.Inf", "-.INF"}},
+ {"<<", mergeTag, []string{"<<"}},
+ }
+
+ m := resolveMap
+ for _, item := range resolveMapList {
+ for _, s := range item.l {
+ m[s] = resolveMapItem{item.v, item.tag}
+ }
+ }
+}
+
+const (
+ nullTag = "!!null"
+ boolTag = "!!bool"
+ strTag = "!!str"
+ intTag = "!!int"
+ floatTag = "!!float"
+ timestampTag = "!!timestamp"
+ seqTag = "!!seq"
+ mapTag = "!!map"
+ binaryTag = "!!binary"
+ mergeTag = "!!merge"
+)
+
+var longTags = make(map[string]string)
+var shortTags = make(map[string]string)
+
+func init() {
+ for _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} {
+ ltag := longTag(stag)
+ longTags[stag] = ltag
+ shortTags[ltag] = stag
+ }
+}
+
+const longTagPrefix = "tag:yaml.org,2002:"
+
+func shortTag(tag string) string {
+ if strings.HasPrefix(tag, longTagPrefix) {
+ if stag, ok := shortTags[tag]; ok {
+ return stag
+ }
+ return "!!" + tag[len(longTagPrefix):]
+ }
+ return tag
+}
+
+func longTag(tag string) string {
+ if strings.HasPrefix(tag, "!!") {
+ if ltag, ok := longTags[tag]; ok {
+ return ltag
+ }
+ return longTagPrefix + tag[2:]
+ }
+ return tag
+}
+
+func resolvableTag(tag string) bool {
+ switch tag {
+ case "", strTag, boolTag, intTag, floatTag, nullTag, timestampTag:
+ return true
+ }
+ return false
+}
+
+var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)
+
+func resolve(tag string, in string) (rtag string, out interface{}) {
+ tag = shortTag(tag)
+ if !resolvableTag(tag) {
+ return tag, in
+ }
+
+ defer func() {
+ switch tag {
+ case "", rtag, strTag, binaryTag:
+ return
+ case floatTag:
+ if rtag == intTag {
+ switch v := out.(type) {
+ case int64:
+ rtag = floatTag
+ out = float64(v)
+ return
+ case int:
+ rtag = floatTag
+ out = float64(v)
+ return
+ }
+ }
+ }
+ failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag))
+ }()
+
+ // Any data is accepted as a !!str or !!binary.
+ // Otherwise, the prefix is enough of a hint about what it might be.
+ hint := byte('N')
+ if in != "" {
+ hint = resolveTable[in[0]]
+ }
+ if hint != 0 && tag != strTag && tag != binaryTag {
+ // Handle things we can lookup in a map.
+ if item, ok := resolveMap[in]; ok {
+ return item.tag, item.value
+ }
+
+ // Base 60 floats are a bad idea, were dropped in YAML 1.2, and
+ // are purposefully unsupported here. They're still quoted on
+ // the way out for compatibility with other parser, though.
+
+ switch hint {
+ case 'M':
+ // We've already checked the map above.
+
+ case '.':
+ // Not in the map, so maybe a normal float.
+ floatv, err := strconv.ParseFloat(in, 64)
+ if err == nil {
+ return floatTag, floatv
+ }
+
+ case 'D', 'S':
+ // Int, float, or timestamp.
+ // Only try values as a timestamp if the value is unquoted or there's an explicit
+ // !!timestamp tag.
+ if tag == "" || tag == timestampTag {
+ t, ok := parseTimestamp(in)
+ if ok {
+ return timestampTag, t
+ }
+ }
+
+ plain := strings.Replace(in, "_", "", -1)
+ intv, err := strconv.ParseInt(plain, 0, 64)
+ if err == nil {
+ if intv == int64(int(intv)) {
+ return intTag, int(intv)
+ } else {
+ return intTag, intv
+ }
+ }
+ uintv, err := strconv.ParseUint(plain, 0, 64)
+ if err == nil {
+ return intTag, uintv
+ }
+ if yamlStyleFloat.MatchString(plain) {
+ floatv, err := strconv.ParseFloat(plain, 64)
+ if err == nil {
+ return floatTag, floatv
+ }
+ }
+ if strings.HasPrefix(plain, "0b") {
+ intv, err := strconv.ParseInt(plain[2:], 2, 64)
+ if err == nil {
+ if intv == int64(int(intv)) {
+ return intTag, int(intv)
+ } else {
+ return intTag, intv
+ }
+ }
+ uintv, err := strconv.ParseUint(plain[2:], 2, 64)
+ if err == nil {
+ return intTag, uintv
+ }
+ } else if strings.HasPrefix(plain, "-0b") {
+ intv, err := strconv.ParseInt("-"+plain[3:], 2, 64)
+ if err == nil {
+ if true || intv == int64(int(intv)) {
+ return intTag, int(intv)
+ } else {
+ return intTag, intv
+ }
+ }
+ }
+ // Octals as introduced in version 1.2 of the spec.
+ // Octals from the 1.1 spec, spelled as 0777, are still
+ // decoded by default in v3 as well for compatibility.
+ // May be dropped in v4 depending on how usage evolves.
+ if strings.HasPrefix(plain, "0o") {
+ intv, err := strconv.ParseInt(plain[2:], 8, 64)
+ if err == nil {
+ if intv == int64(int(intv)) {
+ return intTag, int(intv)
+ } else {
+ return intTag, intv
+ }
+ }
+ uintv, err := strconv.ParseUint(plain[2:], 8, 64)
+ if err == nil {
+ return intTag, uintv
+ }
+ } else if strings.HasPrefix(plain, "-0o") {
+ intv, err := strconv.ParseInt("-"+plain[3:], 8, 64)
+ if err == nil {
+ if true || intv == int64(int(intv)) {
+ return intTag, int(intv)
+ } else {
+ return intTag, intv
+ }
+ }
+ }
+ default:
+ panic("internal error: missing handler for resolver table: " + string(rune(hint)) + " (with " + in + ")")
+ }
+ }
+ return strTag, in
+}
+
+// encodeBase64 encodes s as base64 that is broken up into multiple lines
+// as appropriate for the resulting length.
+func encodeBase64(s string) string {
+ const lineLen = 70
+ encLen := base64.StdEncoding.EncodedLen(len(s))
+ lines := encLen/lineLen + 1
+ buf := make([]byte, encLen*2+lines)
+ in := buf[0:encLen]
+ out := buf[encLen:]
+ base64.StdEncoding.Encode(in, []byte(s))
+ k := 0
+ for i := 0; i < len(in); i += lineLen {
+ j := i + lineLen
+ if j > len(in) {
+ j = len(in)
+ }
+ k += copy(out[k:], in[i:j])
+ if lines > 1 {
+ out[k] = '\n'
+ k++
+ }
+ }
+ return string(out[:k])
+}
+
+// This is a subset of the formats allowed by the regular expression
+// defined at http://yaml.org/type/timestamp.html.
+var allowedTimestampFormats = []string{
+ "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields.
+ "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t".
+ "2006-1-2 15:4:5.999999999", // space separated with no time zone
+ "2006-1-2", // date only
+ // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5"
+ // from the set of examples.
+}
+
+// parseTimestamp parses s as a timestamp string and
+// returns the timestamp and reports whether it succeeded.
+// Timestamp formats are defined at http://yaml.org/type/timestamp.html
+func parseTimestamp(s string) (time.Time, bool) {
+ // TODO write code to check all the formats supported by
+ // http://yaml.org/type/timestamp.html instead of using time.Parse.
+
+ // Quick check: all date formats start with YYYY-.
+ i := 0
+ for ; i < len(s); i++ {
+ if c := s[i]; c < '0' || c > '9' {
+ break
+ }
+ }
+ if i != 4 || i == len(s) || s[i] != '-' {
+ return time.Time{}, false
+ }
+ for _, format := range allowedTimestampFormats {
+ if t, err := time.Parse(format, s); err == nil {
+ return t, true
+ }
+ }
+ return time.Time{}, false
+}
diff --git a/vendor/gopkg.in/yaml.v3/scannerc.go b/vendor/gopkg.in/yaml.v3/scannerc.go
new file mode 100644
index 00000000000..57e954ca53d
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/scannerc.go
@@ -0,0 +1,3025 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+import (
+ "bytes"
+ "fmt"
+)
+
+// Introduction
+// ************
+//
+// The following notes assume that you are familiar with the YAML specification
+// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in
+// some cases we are less restrictive that it requires.
+//
+// The process of transforming a YAML stream into a sequence of events is
+// divided on two steps: Scanning and Parsing.
+//
+// The Scanner transforms the input stream into a sequence of tokens, while the
+// parser transform the sequence of tokens produced by the Scanner into a
+// sequence of parsing events.
+//
+// The Scanner is rather clever and complicated. The Parser, on the contrary,
+// is a straightforward implementation of a recursive-descendant parser (or,
+// LL(1) parser, as it is usually called).
+//
+// Actually there are two issues of Scanning that might be called "clever", the
+// rest is quite straightforward. The issues are "block collection start" and
+// "simple keys". Both issues are explained below in details.
+//
+// Here the Scanning step is explained and implemented. We start with the list
+// of all the tokens produced by the Scanner together with short descriptions.
+//
+// Now, tokens:
+//
+// STREAM-START(encoding) # The stream start.
+// STREAM-END # The stream end.
+// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive.
+// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive.
+// DOCUMENT-START # '---'
+// DOCUMENT-END # '...'
+// BLOCK-SEQUENCE-START # Indentation increase denoting a block
+// BLOCK-MAPPING-START # sequence or a block mapping.
+// BLOCK-END # Indentation decrease.
+// FLOW-SEQUENCE-START # '['
+// FLOW-SEQUENCE-END # ']'
+// BLOCK-SEQUENCE-START # '{'
+// BLOCK-SEQUENCE-END # '}'
+// BLOCK-ENTRY # '-'
+// FLOW-ENTRY # ','
+// KEY # '?' or nothing (simple keys).
+// VALUE # ':'
+// ALIAS(anchor) # '*anchor'
+// ANCHOR(anchor) # '&anchor'
+// TAG(handle,suffix) # '!handle!suffix'
+// SCALAR(value,style) # A scalar.
+//
+// The following two tokens are "virtual" tokens denoting the beginning and the
+// end of the stream:
+//
+// STREAM-START(encoding)
+// STREAM-END
+//
+// We pass the information about the input stream encoding with the
+// STREAM-START token.
+//
+// The next two tokens are responsible for tags:
+//
+// VERSION-DIRECTIVE(major,minor)
+// TAG-DIRECTIVE(handle,prefix)
+//
+// Example:
+//
+// %YAML 1.1
+// %TAG ! !foo
+// %TAG !yaml! tag:yaml.org,2002:
+// ---
+//
+// The correspoding sequence of tokens:
+//
+// STREAM-START(utf-8)
+// VERSION-DIRECTIVE(1,1)
+// TAG-DIRECTIVE("!","!foo")
+// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:")
+// DOCUMENT-START
+// STREAM-END
+//
+// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole
+// line.
+//
+// The document start and end indicators are represented by:
+//
+// DOCUMENT-START
+// DOCUMENT-END
+//
+// Note that if a YAML stream contains an implicit document (without '---'
+// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be
+// produced.
+//
+// In the following examples, we present whole documents together with the
+// produced tokens.
+//
+// 1. An implicit document:
+//
+// 'a scalar'
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// SCALAR("a scalar",single-quoted)
+// STREAM-END
+//
+// 2. An explicit document:
+//
+// ---
+// 'a scalar'
+// ...
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// DOCUMENT-START
+// SCALAR("a scalar",single-quoted)
+// DOCUMENT-END
+// STREAM-END
+//
+// 3. Several documents in a stream:
+//
+// 'a scalar'
+// ---
+// 'another scalar'
+// ---
+// 'yet another scalar'
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// SCALAR("a scalar",single-quoted)
+// DOCUMENT-START
+// SCALAR("another scalar",single-quoted)
+// DOCUMENT-START
+// SCALAR("yet another scalar",single-quoted)
+// STREAM-END
+//
+// We have already introduced the SCALAR token above. The following tokens are
+// used to describe aliases, anchors, tag, and scalars:
+//
+// ALIAS(anchor)
+// ANCHOR(anchor)
+// TAG(handle,suffix)
+// SCALAR(value,style)
+//
+// The following series of examples illustrate the usage of these tokens:
+//
+// 1. A recursive sequence:
+//
+// &A [ *A ]
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// ANCHOR("A")
+// FLOW-SEQUENCE-START
+// ALIAS("A")
+// FLOW-SEQUENCE-END
+// STREAM-END
+//
+// 2. A tagged scalar:
+//
+// !!float "3.14" # A good approximation.
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// TAG("!!","float")
+// SCALAR("3.14",double-quoted)
+// STREAM-END
+//
+// 3. Various scalar styles:
+//
+// --- # Implicit empty plain scalars do not produce tokens.
+// --- a plain scalar
+// --- 'a single-quoted scalar'
+// --- "a double-quoted scalar"
+// --- |-
+// a literal scalar
+// --- >-
+// a folded
+// scalar
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// DOCUMENT-START
+// DOCUMENT-START
+// SCALAR("a plain scalar",plain)
+// DOCUMENT-START
+// SCALAR("a single-quoted scalar",single-quoted)
+// DOCUMENT-START
+// SCALAR("a double-quoted scalar",double-quoted)
+// DOCUMENT-START
+// SCALAR("a literal scalar",literal)
+// DOCUMENT-START
+// SCALAR("a folded scalar",folded)
+// STREAM-END
+//
+// Now it's time to review collection-related tokens. We will start with
+// flow collections:
+//
+// FLOW-SEQUENCE-START
+// FLOW-SEQUENCE-END
+// FLOW-MAPPING-START
+// FLOW-MAPPING-END
+// FLOW-ENTRY
+// KEY
+// VALUE
+//
+// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and
+// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'
+// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the
+// indicators '?' and ':', which are used for denoting mapping keys and values,
+// are represented by the KEY and VALUE tokens.
+//
+// The following examples show flow collections:
+//
+// 1. A flow sequence:
+//
+// [item 1, item 2, item 3]
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// FLOW-SEQUENCE-START
+// SCALAR("item 1",plain)
+// FLOW-ENTRY
+// SCALAR("item 2",plain)
+// FLOW-ENTRY
+// SCALAR("item 3",plain)
+// FLOW-SEQUENCE-END
+// STREAM-END
+//
+// 2. A flow mapping:
+//
+// {
+// a simple key: a value, # Note that the KEY token is produced.
+// ? a complex key: another value,
+// }
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// FLOW-MAPPING-START
+// KEY
+// SCALAR("a simple key",plain)
+// VALUE
+// SCALAR("a value",plain)
+// FLOW-ENTRY
+// KEY
+// SCALAR("a complex key",plain)
+// VALUE
+// SCALAR("another value",plain)
+// FLOW-ENTRY
+// FLOW-MAPPING-END
+// STREAM-END
+//
+// A simple key is a key which is not denoted by the '?' indicator. Note that
+// the Scanner still produce the KEY token whenever it encounters a simple key.
+//
+// For scanning block collections, the following tokens are used (note that we
+// repeat KEY and VALUE here):
+//
+// BLOCK-SEQUENCE-START
+// BLOCK-MAPPING-START
+// BLOCK-END
+// BLOCK-ENTRY
+// KEY
+// VALUE
+//
+// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation
+// increase that precedes a block collection (cf. the INDENT token in Python).
+// The token BLOCK-END denote indentation decrease that ends a block collection
+// (cf. the DEDENT token in Python). However YAML has some syntax pecularities
+// that makes detections of these tokens more complex.
+//
+// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators
+// '-', '?', and ':' correspondingly.
+//
+// The following examples show how the tokens BLOCK-SEQUENCE-START,
+// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:
+//
+// 1. Block sequences:
+//
+// - item 1
+// - item 2
+// -
+// - item 3.1
+// - item 3.2
+// -
+// key 1: value 1
+// key 2: value 2
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// BLOCK-SEQUENCE-START
+// BLOCK-ENTRY
+// SCALAR("item 1",plain)
+// BLOCK-ENTRY
+// SCALAR("item 2",plain)
+// BLOCK-ENTRY
+// BLOCK-SEQUENCE-START
+// BLOCK-ENTRY
+// SCALAR("item 3.1",plain)
+// BLOCK-ENTRY
+// SCALAR("item 3.2",plain)
+// BLOCK-END
+// BLOCK-ENTRY
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("key 1",plain)
+// VALUE
+// SCALAR("value 1",plain)
+// KEY
+// SCALAR("key 2",plain)
+// VALUE
+// SCALAR("value 2",plain)
+// BLOCK-END
+// BLOCK-END
+// STREAM-END
+//
+// 2. Block mappings:
+//
+// a simple key: a value # The KEY token is produced here.
+// ? a complex key
+// : another value
+// a mapping:
+// key 1: value 1
+// key 2: value 2
+// a sequence:
+// - item 1
+// - item 2
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("a simple key",plain)
+// VALUE
+// SCALAR("a value",plain)
+// KEY
+// SCALAR("a complex key",plain)
+// VALUE
+// SCALAR("another value",plain)
+// KEY
+// SCALAR("a mapping",plain)
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("key 1",plain)
+// VALUE
+// SCALAR("value 1",plain)
+// KEY
+// SCALAR("key 2",plain)
+// VALUE
+// SCALAR("value 2",plain)
+// BLOCK-END
+// KEY
+// SCALAR("a sequence",plain)
+// VALUE
+// BLOCK-SEQUENCE-START
+// BLOCK-ENTRY
+// SCALAR("item 1",plain)
+// BLOCK-ENTRY
+// SCALAR("item 2",plain)
+// BLOCK-END
+// BLOCK-END
+// STREAM-END
+//
+// YAML does not always require to start a new block collection from a new
+// line. If the current line contains only '-', '?', and ':' indicators, a new
+// block collection may start at the current line. The following examples
+// illustrate this case:
+//
+// 1. Collections in a sequence:
+//
+// - - item 1
+// - item 2
+// - key 1: value 1
+// key 2: value 2
+// - ? complex key
+// : complex value
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// BLOCK-SEQUENCE-START
+// BLOCK-ENTRY
+// BLOCK-SEQUENCE-START
+// BLOCK-ENTRY
+// SCALAR("item 1",plain)
+// BLOCK-ENTRY
+// SCALAR("item 2",plain)
+// BLOCK-END
+// BLOCK-ENTRY
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("key 1",plain)
+// VALUE
+// SCALAR("value 1",plain)
+// KEY
+// SCALAR("key 2",plain)
+// VALUE
+// SCALAR("value 2",plain)
+// BLOCK-END
+// BLOCK-ENTRY
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("complex key")
+// VALUE
+// SCALAR("complex value")
+// BLOCK-END
+// BLOCK-END
+// STREAM-END
+//
+// 2. Collections in a mapping:
+//
+// ? a sequence
+// : - item 1
+// - item 2
+// ? a mapping
+// : key 1: value 1
+// key 2: value 2
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("a sequence",plain)
+// VALUE
+// BLOCK-SEQUENCE-START
+// BLOCK-ENTRY
+// SCALAR("item 1",plain)
+// BLOCK-ENTRY
+// SCALAR("item 2",plain)
+// BLOCK-END
+// KEY
+// SCALAR("a mapping",plain)
+// VALUE
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("key 1",plain)
+// VALUE
+// SCALAR("value 1",plain)
+// KEY
+// SCALAR("key 2",plain)
+// VALUE
+// SCALAR("value 2",plain)
+// BLOCK-END
+// BLOCK-END
+// STREAM-END
+//
+// YAML also permits non-indented sequences if they are included into a block
+// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced:
+//
+// key:
+// - item 1 # BLOCK-SEQUENCE-START is NOT produced here.
+// - item 2
+//
+// Tokens:
+//
+// STREAM-START(utf-8)
+// BLOCK-MAPPING-START
+// KEY
+// SCALAR("key",plain)
+// VALUE
+// BLOCK-ENTRY
+// SCALAR("item 1",plain)
+// BLOCK-ENTRY
+// SCALAR("item 2",plain)
+// BLOCK-END
+//
+
+// Ensure that the buffer contains the required number of characters.
+// Return true on success, false on failure (reader error or memory error).
+func cache(parser *yaml_parser_t, length int) bool {
+ // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)
+ return parser.unread >= length || yaml_parser_update_buffer(parser, length)
+}
+
+// Advance the buffer pointer.
+func skip(parser *yaml_parser_t) {
+ if !is_blank(parser.buffer, parser.buffer_pos) {
+ parser.newlines = 0
+ }
+ parser.mark.index++
+ parser.mark.column++
+ parser.unread--
+ parser.buffer_pos += width(parser.buffer[parser.buffer_pos])
+}
+
+func skip_line(parser *yaml_parser_t) {
+ if is_crlf(parser.buffer, parser.buffer_pos) {
+ parser.mark.index += 2
+ parser.mark.column = 0
+ parser.mark.line++
+ parser.unread -= 2
+ parser.buffer_pos += 2
+ parser.newlines++
+ } else if is_break(parser.buffer, parser.buffer_pos) {
+ parser.mark.index++
+ parser.mark.column = 0
+ parser.mark.line++
+ parser.unread--
+ parser.buffer_pos += width(parser.buffer[parser.buffer_pos])
+ parser.newlines++
+ }
+}
+
+// Copy a character to a string buffer and advance pointers.
+func read(parser *yaml_parser_t, s []byte) []byte {
+ if !is_blank(parser.buffer, parser.buffer_pos) {
+ parser.newlines = 0
+ }
+ w := width(parser.buffer[parser.buffer_pos])
+ if w == 0 {
+ panic("invalid character sequence")
+ }
+ if len(s) == 0 {
+ s = make([]byte, 0, 32)
+ }
+ if w == 1 && len(s)+w <= cap(s) {
+ s = s[:len(s)+1]
+ s[len(s)-1] = parser.buffer[parser.buffer_pos]
+ parser.buffer_pos++
+ } else {
+ s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)
+ parser.buffer_pos += w
+ }
+ parser.mark.index++
+ parser.mark.column++
+ parser.unread--
+ return s
+}
+
+// Copy a line break character to a string buffer and advance pointers.
+func read_line(parser *yaml_parser_t, s []byte) []byte {
+ buf := parser.buffer
+ pos := parser.buffer_pos
+ switch {
+ case buf[pos] == '\r' && buf[pos+1] == '\n':
+ // CR LF . LF
+ s = append(s, '\n')
+ parser.buffer_pos += 2
+ parser.mark.index++
+ parser.unread--
+ case buf[pos] == '\r' || buf[pos] == '\n':
+ // CR|LF . LF
+ s = append(s, '\n')
+ parser.buffer_pos += 1
+ case buf[pos] == '\xC2' && buf[pos+1] == '\x85':
+ // NEL . LF
+ s = append(s, '\n')
+ parser.buffer_pos += 2
+ case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'):
+ // LS|PS . LS|PS
+ s = append(s, buf[parser.buffer_pos:pos+3]...)
+ parser.buffer_pos += 3
+ default:
+ return s
+ }
+ parser.mark.index++
+ parser.mark.column = 0
+ parser.mark.line++
+ parser.unread--
+ parser.newlines++
+ return s
+}
+
+// Get the next token.
+func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {
+ // Erase the token object.
+ *token = yaml_token_t{} // [Go] Is this necessary?
+
+ // No tokens after STREAM-END or error.
+ if parser.stream_end_produced || parser.error != yaml_NO_ERROR {
+ return true
+ }
+
+ // Ensure that the tokens queue contains enough tokens.
+ if !parser.token_available {
+ if !yaml_parser_fetch_more_tokens(parser) {
+ return false
+ }
+ }
+
+ // Fetch the next token from the queue.
+ *token = parser.tokens[parser.tokens_head]
+ parser.tokens_head++
+ parser.tokens_parsed++
+ parser.token_available = false
+
+ if token.typ == yaml_STREAM_END_TOKEN {
+ parser.stream_end_produced = true
+ }
+ return true
+}
+
+// Set the scanner error and return false.
+func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {
+ parser.error = yaml_SCANNER_ERROR
+ parser.context = context
+ parser.context_mark = context_mark
+ parser.problem = problem
+ parser.problem_mark = parser.mark
+ return false
+}
+
+func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {
+ context := "while parsing a tag"
+ if directive {
+ context = "while parsing a %TAG directive"
+ }
+ return yaml_parser_set_scanner_error(parser, context, context_mark, problem)
+}
+
+func trace(args ...interface{}) func() {
+ pargs := append([]interface{}{"+++"}, args...)
+ fmt.Println(pargs...)
+ pargs = append([]interface{}{"---"}, args...)
+ return func() { fmt.Println(pargs...) }
+}
+
+// Ensure that the tokens queue contains at least one token which can be
+// returned to the Parser.
+func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {
+ // While we need more tokens to fetch, do it.
+ for {
+ // [Go] The comment parsing logic requires a lookahead of two tokens
+ // so that foot comments may be parsed in time of associating them
+ // with the tokens that are parsed before them, and also for line
+ // comments to be transformed into head comments in some edge cases.
+ if parser.tokens_head < len(parser.tokens)-2 {
+ // If a potential simple key is at the head position, we need to fetch
+ // the next token to disambiguate it.
+ head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed]
+ if !ok {
+ break
+ } else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok {
+ return false
+ } else if !valid {
+ break
+ }
+ }
+ // Fetch the next token.
+ if !yaml_parser_fetch_next_token(parser) {
+ return false
+ }
+ }
+
+ parser.token_available = true
+ return true
+}
+
+// The dispatcher for token fetchers.
+func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) {
+ // Ensure that the buffer is initialized.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ // Check if we just started scanning. Fetch STREAM-START then.
+ if !parser.stream_start_produced {
+ return yaml_parser_fetch_stream_start(parser)
+ }
+
+ scan_mark := parser.mark
+
+ // Eat whitespaces and comments until we reach the next token.
+ if !yaml_parser_scan_to_next_token(parser) {
+ return false
+ }
+
+ // [Go] While unrolling indents, transform the head comments of prior
+ // indentation levels observed after scan_start into foot comments at
+ // the respective indexes.
+
+ // Check the indentation level against the current column.
+ if !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) {
+ return false
+ }
+
+ // Ensure that the buffer contains at least 4 characters. 4 is the length
+ // of the longest indicators ('--- ' and '... ').
+ if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {
+ return false
+ }
+
+ // Is it the end of the stream?
+ if is_z(parser.buffer, parser.buffer_pos) {
+ return yaml_parser_fetch_stream_end(parser)
+ }
+
+ // Is it a directive?
+ if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {
+ return yaml_parser_fetch_directive(parser)
+ }
+
+ buf := parser.buffer
+ pos := parser.buffer_pos
+
+ // Is it the document start indicator?
+ if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {
+ return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)
+ }
+
+ // Is it the document end indicator?
+ if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {
+ return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)
+ }
+
+ comment_mark := parser.mark
+ if len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') {
+ // Associate any following comments with the prior token.
+ comment_mark = parser.tokens[len(parser.tokens)-1].start_mark
+ }
+ defer func() {
+ if !ok {
+ return
+ }
+ if !yaml_parser_scan_line_comment(parser, comment_mark) {
+ ok = false
+ return
+ }
+ }()
+
+ // Is it the flow sequence start indicator?
+ if buf[pos] == '[' {
+ return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)
+ }
+
+ // Is it the flow mapping start indicator?
+ if parser.buffer[parser.buffer_pos] == '{' {
+ return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)
+ }
+
+ // Is it the flow sequence end indicator?
+ if parser.buffer[parser.buffer_pos] == ']' {
+ return yaml_parser_fetch_flow_collection_end(parser,
+ yaml_FLOW_SEQUENCE_END_TOKEN)
+ }
+
+ // Is it the flow mapping end indicator?
+ if parser.buffer[parser.buffer_pos] == '}' {
+ return yaml_parser_fetch_flow_collection_end(parser,
+ yaml_FLOW_MAPPING_END_TOKEN)
+ }
+
+ // Is it the flow entry indicator?
+ if parser.buffer[parser.buffer_pos] == ',' {
+ return yaml_parser_fetch_flow_entry(parser)
+ }
+
+ // Is it the block entry indicator?
+ if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {
+ return yaml_parser_fetch_block_entry(parser)
+ }
+
+ // Is it the key indicator?
+ if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {
+ return yaml_parser_fetch_key(parser)
+ }
+
+ // Is it the value indicator?
+ if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {
+ return yaml_parser_fetch_value(parser)
+ }
+
+ // Is it an alias?
+ if parser.buffer[parser.buffer_pos] == '*' {
+ return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)
+ }
+
+ // Is it an anchor?
+ if parser.buffer[parser.buffer_pos] == '&' {
+ return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)
+ }
+
+ // Is it a tag?
+ if parser.buffer[parser.buffer_pos] == '!' {
+ return yaml_parser_fetch_tag(parser)
+ }
+
+ // Is it a literal scalar?
+ if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {
+ return yaml_parser_fetch_block_scalar(parser, true)
+ }
+
+ // Is it a folded scalar?
+ if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {
+ return yaml_parser_fetch_block_scalar(parser, false)
+ }
+
+ // Is it a single-quoted scalar?
+ if parser.buffer[parser.buffer_pos] == '\'' {
+ return yaml_parser_fetch_flow_scalar(parser, true)
+ }
+
+ // Is it a double-quoted scalar?
+ if parser.buffer[parser.buffer_pos] == '"' {
+ return yaml_parser_fetch_flow_scalar(parser, false)
+ }
+
+ // Is it a plain scalar?
+ //
+ // A plain scalar may start with any non-blank characters except
+ //
+ // '-', '?', ':', ',', '[', ']', '{', '}',
+ // '#', '&', '*', '!', '|', '>', '\'', '\"',
+ // '%', '@', '`'.
+ //
+ // In the block context (and, for the '-' indicator, in the flow context
+ // too), it may also start with the characters
+ //
+ // '-', '?', ':'
+ //
+ // if it is followed by a non-space character.
+ //
+ // The last rule is more restrictive than the specification requires.
+ // [Go] TODO Make this logic more reasonable.
+ //switch parser.buffer[parser.buffer_pos] {
+ //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`':
+ //}
+ if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||
+ parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||
+ parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||
+ parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||
+ parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||
+ parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||
+ parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||
+ parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' ||
+ parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' ||
+ parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||
+ (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||
+ (parser.flow_level == 0 &&
+ (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&
+ !is_blankz(parser.buffer, parser.buffer_pos+1)) {
+ return yaml_parser_fetch_plain_scalar(parser)
+ }
+
+ // If we don't determine the token type so far, it is an error.
+ return yaml_parser_set_scanner_error(parser,
+ "while scanning for the next token", parser.mark,
+ "found character that cannot start any token")
+}
+
+func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) {
+ if !simple_key.possible {
+ return false, true
+ }
+
+ // The 1.2 specification says:
+ //
+ // "If the ? indicator is omitted, parsing needs to see past the
+ // implicit key to recognize it as such. To limit the amount of
+ // lookahead required, the “:” indicator must appear at most 1024
+ // Unicode characters beyond the start of the key. In addition, the key
+ // is restricted to a single line."
+ //
+ if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index {
+ // Check if the potential simple key to be removed is required.
+ if simple_key.required {
+ return false, yaml_parser_set_scanner_error(parser,
+ "while scanning a simple key", simple_key.mark,
+ "could not find expected ':'")
+ }
+ simple_key.possible = false
+ return false, true
+ }
+ return true, true
+}
+
+// Check if a simple key may start at the current position and add it if
+// needed.
+func yaml_parser_save_simple_key(parser *yaml_parser_t) bool {
+ // A simple key is required at the current position if the scanner is in
+ // the block context and the current column coincides with the indentation
+ // level.
+
+ required := parser.flow_level == 0 && parser.indent == parser.mark.column
+
+ //
+ // If the current position may start a simple key, save it.
+ //
+ if parser.simple_key_allowed {
+ simple_key := yaml_simple_key_t{
+ possible: true,
+ required: required,
+ token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),
+ mark: parser.mark,
+ }
+
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+ parser.simple_keys[len(parser.simple_keys)-1] = simple_key
+ parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1
+ }
+ return true
+}
+
+// Remove a potential simple key at the current flow level.
+func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {
+ i := len(parser.simple_keys) - 1
+ if parser.simple_keys[i].possible {
+ // If the key is required, it is an error.
+ if parser.simple_keys[i].required {
+ return yaml_parser_set_scanner_error(parser,
+ "while scanning a simple key", parser.simple_keys[i].mark,
+ "could not find expected ':'")
+ }
+ // Remove the key from the stack.
+ parser.simple_keys[i].possible = false
+ delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number)
+ }
+ return true
+}
+
+// max_flow_level limits the flow_level
+const max_flow_level = 10000
+
+// Increase the flow level and resize the simple key list if needed.
+func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {
+ // Reset the simple key on the next level.
+ parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{
+ possible: false,
+ required: false,
+ token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),
+ mark: parser.mark,
+ })
+
+ // Increase the flow level.
+ parser.flow_level++
+ if parser.flow_level > max_flow_level {
+ return yaml_parser_set_scanner_error(parser,
+ "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark,
+ fmt.Sprintf("exceeded max depth of %d", max_flow_level))
+ }
+ return true
+}
+
+// Decrease the flow level.
+func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {
+ if parser.flow_level > 0 {
+ parser.flow_level--
+ last := len(parser.simple_keys) - 1
+ delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number)
+ parser.simple_keys = parser.simple_keys[:last]
+ }
+ return true
+}
+
+// max_indents limits the indents stack size
+const max_indents = 10000
+
+// Push the current indentation level to the stack and set the new level
+// the current column is greater than the indentation level. In this case,
+// append or insert the specified token into the token queue.
+func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {
+ // In the flow context, do nothing.
+ if parser.flow_level > 0 {
+ return true
+ }
+
+ if parser.indent < column {
+ // Push the current indentation level to the stack and set the new
+ // indentation level.
+ parser.indents = append(parser.indents, parser.indent)
+ parser.indent = column
+ if len(parser.indents) > max_indents {
+ return yaml_parser_set_scanner_error(parser,
+ "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark,
+ fmt.Sprintf("exceeded max depth of %d", max_indents))
+ }
+
+ // Create a token and insert it into the queue.
+ token := yaml_token_t{
+ typ: typ,
+ start_mark: mark,
+ end_mark: mark,
+ }
+ if number > -1 {
+ number -= parser.tokens_parsed
+ }
+ yaml_insert_token(parser, number, &token)
+ }
+ return true
+}
+
+// Pop indentation levels from the indents stack until the current level
+// becomes less or equal to the column. For each indentation level, append
+// the BLOCK-END token.
+func yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool {
+ // In the flow context, do nothing.
+ if parser.flow_level > 0 {
+ return true
+ }
+
+ block_mark := scan_mark
+ block_mark.index--
+
+ // Loop through the indentation levels in the stack.
+ for parser.indent > column {
+
+ // [Go] Reposition the end token before potential following
+ // foot comments of parent blocks. For that, search
+ // backwards for recent comments that were at the same
+ // indent as the block that is ending now.
+ stop_index := block_mark.index
+ for i := len(parser.comments) - 1; i >= 0; i-- {
+ comment := &parser.comments[i]
+
+ if comment.end_mark.index < stop_index {
+ // Don't go back beyond the start of the comment/whitespace scan, unless column < 0.
+ // If requested indent column is < 0, then the document is over and everything else
+ // is a foot anyway.
+ break
+ }
+ if comment.start_mark.column == parser.indent+1 {
+ // This is a good match. But maybe there's a former comment
+ // at that same indent level, so keep searching.
+ block_mark = comment.start_mark
+ }
+
+ // While the end of the former comment matches with
+ // the start of the following one, we know there's
+ // nothing in between and scanning is still safe.
+ stop_index = comment.scan_mark.index
+ }
+
+ // Create a token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_BLOCK_END_TOKEN,
+ start_mark: block_mark,
+ end_mark: block_mark,
+ }
+ yaml_insert_token(parser, -1, &token)
+
+ // Pop the indentation level.
+ parser.indent = parser.indents[len(parser.indents)-1]
+ parser.indents = parser.indents[:len(parser.indents)-1]
+ }
+ return true
+}
+
+// Initialize the scanner and produce the STREAM-START token.
+func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {
+
+ // Set the initial indentation.
+ parser.indent = -1
+
+ // Initialize the simple key stack.
+ parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})
+
+ parser.simple_keys_by_tok = make(map[int]int)
+
+ // A simple key is allowed at the beginning of the stream.
+ parser.simple_key_allowed = true
+
+ // We have started.
+ parser.stream_start_produced = true
+
+ // Create the STREAM-START token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_STREAM_START_TOKEN,
+ start_mark: parser.mark,
+ end_mark: parser.mark,
+ encoding: parser.encoding,
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the STREAM-END token and shut down the scanner.
+func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {
+
+ // Force new line.
+ if parser.mark.column != 0 {
+ parser.mark.column = 0
+ parser.mark.line++
+ }
+
+ // Reset the indentation level.
+ if !yaml_parser_unroll_indent(parser, -1, parser.mark) {
+ return false
+ }
+
+ // Reset simple keys.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ parser.simple_key_allowed = false
+
+ // Create the STREAM-END token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_STREAM_END_TOKEN,
+ start_mark: parser.mark,
+ end_mark: parser.mark,
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.
+func yaml_parser_fetch_directive(parser *yaml_parser_t) bool {
+ // Reset the indentation level.
+ if !yaml_parser_unroll_indent(parser, -1, parser.mark) {
+ return false
+ }
+
+ // Reset simple keys.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ parser.simple_key_allowed = false
+
+ // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.
+ token := yaml_token_t{}
+ if !yaml_parser_scan_directive(parser, &token) {
+ return false
+ }
+ // Append the token to the queue.
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the DOCUMENT-START or DOCUMENT-END token.
+func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+ // Reset the indentation level.
+ if !yaml_parser_unroll_indent(parser, -1, parser.mark) {
+ return false
+ }
+
+ // Reset simple keys.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ parser.simple_key_allowed = false
+
+ // Consume the token.
+ start_mark := parser.mark
+
+ skip(parser)
+ skip(parser)
+ skip(parser)
+
+ end_mark := parser.mark
+
+ // Create the DOCUMENT-START or DOCUMENT-END token.
+ token := yaml_token_t{
+ typ: typ,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ // Append the token to the queue.
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.
+func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+
+ // The indicators '[' and '{' may start a simple key.
+ if !yaml_parser_save_simple_key(parser) {
+ return false
+ }
+
+ // Increase the flow level.
+ if !yaml_parser_increase_flow_level(parser) {
+ return false
+ }
+
+ // A simple key may follow the indicators '[' and '{'.
+ parser.simple_key_allowed = true
+
+ // Consume the token.
+ start_mark := parser.mark
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.
+ token := yaml_token_t{
+ typ: typ,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ // Append the token to the queue.
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.
+func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+ // Reset any potential simple key on the current flow level.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ // Decrease the flow level.
+ if !yaml_parser_decrease_flow_level(parser) {
+ return false
+ }
+
+ // No simple keys after the indicators ']' and '}'.
+ parser.simple_key_allowed = false
+
+ // Consume the token.
+
+ start_mark := parser.mark
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.
+ token := yaml_token_t{
+ typ: typ,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ // Append the token to the queue.
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the FLOW-ENTRY token.
+func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {
+ // Reset any potential simple keys on the current flow level.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ // Simple keys are allowed after ','.
+ parser.simple_key_allowed = true
+
+ // Consume the token.
+ start_mark := parser.mark
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create the FLOW-ENTRY token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_FLOW_ENTRY_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the BLOCK-ENTRY token.
+func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {
+ // Check if the scanner is in the block context.
+ if parser.flow_level == 0 {
+ // Check if we are allowed to start a new entry.
+ if !parser.simple_key_allowed {
+ return yaml_parser_set_scanner_error(parser, "", parser.mark,
+ "block sequence entries are not allowed in this context")
+ }
+ // Add the BLOCK-SEQUENCE-START token if needed.
+ if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {
+ return false
+ }
+ } else {
+ // It is an error for the '-' indicator to occur in the flow context,
+ // but we let the Parser detect and report about it because the Parser
+ // is able to point to the context.
+ }
+
+ // Reset any potential simple keys on the current flow level.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ // Simple keys are allowed after '-'.
+ parser.simple_key_allowed = true
+
+ // Consume the token.
+ start_mark := parser.mark
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create the BLOCK-ENTRY token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_BLOCK_ENTRY_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the KEY token.
+func yaml_parser_fetch_key(parser *yaml_parser_t) bool {
+
+ // In the block context, additional checks are required.
+ if parser.flow_level == 0 {
+ // Check if we are allowed to start a new key (not nessesary simple).
+ if !parser.simple_key_allowed {
+ return yaml_parser_set_scanner_error(parser, "", parser.mark,
+ "mapping keys are not allowed in this context")
+ }
+ // Add the BLOCK-MAPPING-START token if needed.
+ if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {
+ return false
+ }
+ }
+
+ // Reset any potential simple keys on the current flow level.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ // Simple keys are allowed after '?' in the block context.
+ parser.simple_key_allowed = parser.flow_level == 0
+
+ // Consume the token.
+ start_mark := parser.mark
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create the KEY token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_KEY_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the VALUE token.
+func yaml_parser_fetch_value(parser *yaml_parser_t) bool {
+
+ simple_key := &parser.simple_keys[len(parser.simple_keys)-1]
+
+ // Have we found a simple key?
+ if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok {
+ return false
+
+ } else if valid {
+
+ // Create the KEY token and insert it into the queue.
+ token := yaml_token_t{
+ typ: yaml_KEY_TOKEN,
+ start_mark: simple_key.mark,
+ end_mark: simple_key.mark,
+ }
+ yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)
+
+ // In the block context, we may need to add the BLOCK-MAPPING-START token.
+ if !yaml_parser_roll_indent(parser, simple_key.mark.column,
+ simple_key.token_number,
+ yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {
+ return false
+ }
+
+ // Remove the simple key.
+ simple_key.possible = false
+ delete(parser.simple_keys_by_tok, simple_key.token_number)
+
+ // A simple key cannot follow another simple key.
+ parser.simple_key_allowed = false
+
+ } else {
+ // The ':' indicator follows a complex key.
+
+ // In the block context, extra checks are required.
+ if parser.flow_level == 0 {
+
+ // Check if we are allowed to start a complex value.
+ if !parser.simple_key_allowed {
+ return yaml_parser_set_scanner_error(parser, "", parser.mark,
+ "mapping values are not allowed in this context")
+ }
+
+ // Add the BLOCK-MAPPING-START token if needed.
+ if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {
+ return false
+ }
+ }
+
+ // Simple keys after ':' are allowed in the block context.
+ parser.simple_key_allowed = parser.flow_level == 0
+ }
+
+ // Consume the token.
+ start_mark := parser.mark
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create the VALUE token and append it to the queue.
+ token := yaml_token_t{
+ typ: yaml_VALUE_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the ALIAS or ANCHOR token.
+func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+ // An anchor or an alias could be a simple key.
+ if !yaml_parser_save_simple_key(parser) {
+ return false
+ }
+
+ // A simple key cannot follow an anchor or an alias.
+ parser.simple_key_allowed = false
+
+ // Create the ALIAS or ANCHOR token and append it to the queue.
+ var token yaml_token_t
+ if !yaml_parser_scan_anchor(parser, &token, typ) {
+ return false
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the TAG token.
+func yaml_parser_fetch_tag(parser *yaml_parser_t) bool {
+ // A tag could be a simple key.
+ if !yaml_parser_save_simple_key(parser) {
+ return false
+ }
+
+ // A simple key cannot follow a tag.
+ parser.simple_key_allowed = false
+
+ // Create the TAG token and append it to the queue.
+ var token yaml_token_t
+ if !yaml_parser_scan_tag(parser, &token) {
+ return false
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.
+func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {
+ // Remove any potential simple keys.
+ if !yaml_parser_remove_simple_key(parser) {
+ return false
+ }
+
+ // A simple key may follow a block scalar.
+ parser.simple_key_allowed = true
+
+ // Create the SCALAR token and append it to the queue.
+ var token yaml_token_t
+ if !yaml_parser_scan_block_scalar(parser, &token, literal) {
+ return false
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.
+func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {
+ // A plain scalar could be a simple key.
+ if !yaml_parser_save_simple_key(parser) {
+ return false
+ }
+
+ // A simple key cannot follow a flow scalar.
+ parser.simple_key_allowed = false
+
+ // Create the SCALAR token and append it to the queue.
+ var token yaml_token_t
+ if !yaml_parser_scan_flow_scalar(parser, &token, single) {
+ return false
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Produce the SCALAR(...,plain) token.
+func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {
+ // A plain scalar could be a simple key.
+ if !yaml_parser_save_simple_key(parser) {
+ return false
+ }
+
+ // A simple key cannot follow a flow scalar.
+ parser.simple_key_allowed = false
+
+ // Create the SCALAR token and append it to the queue.
+ var token yaml_token_t
+ if !yaml_parser_scan_plain_scalar(parser, &token) {
+ return false
+ }
+ yaml_insert_token(parser, -1, &token)
+ return true
+}
+
+// Eat whitespaces and comments until the next token is found.
+func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {
+
+ scan_mark := parser.mark
+
+ // Until the next token is not found.
+ for {
+ // Allow the BOM mark to start a line.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ }
+
+ // Eat whitespaces.
+ // Tabs are allowed:
+ // - in the flow context
+ // - in the block context, but not at the beginning of the line or
+ // after '-', '?', or ':' (complex value).
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Check if we just had a line comment under a sequence entry that
+ // looks more like a header to the following content. Similar to this:
+ //
+ // - # The comment
+ // - Some data
+ //
+ // If so, transform the line comment to a head comment and reposition.
+ if len(parser.comments) > 0 && len(parser.tokens) > 1 {
+ tokenA := parser.tokens[len(parser.tokens)-2]
+ tokenB := parser.tokens[len(parser.tokens)-1]
+ comment := &parser.comments[len(parser.comments)-1]
+ if tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) {
+ // If it was in the prior line, reposition so it becomes a
+ // header of the follow up token. Otherwise, keep it in place
+ // so it becomes a header of the former.
+ comment.head = comment.line
+ comment.line = nil
+ if comment.start_mark.line == parser.mark.line-1 {
+ comment.token_mark = parser.mark
+ }
+ }
+ }
+
+ // Eat a comment until a line break.
+ if parser.buffer[parser.buffer_pos] == '#' {
+ if !yaml_parser_scan_comments(parser, scan_mark) {
+ return false
+ }
+ }
+
+ // If it is a line break, eat it.
+ if is_break(parser.buffer, parser.buffer_pos) {
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ skip_line(parser)
+
+ // In the block context, a new line may start a simple key.
+ if parser.flow_level == 0 {
+ parser.simple_key_allowed = true
+ }
+ } else {
+ break // We have found a token.
+ }
+ }
+
+ return true
+}
+
+// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.
+//
+// Scope:
+// %YAML 1.1 # a comment \n
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// %TAG !yaml! tag:yaml.org,2002: \n
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {
+ // Eat '%'.
+ start_mark := parser.mark
+ skip(parser)
+
+ // Scan the directive name.
+ var name []byte
+ if !yaml_parser_scan_directive_name(parser, start_mark, &name) {
+ return false
+ }
+
+ // Is it a YAML directive?
+ if bytes.Equal(name, []byte("YAML")) {
+ // Scan the VERSION directive value.
+ var major, minor int8
+ if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {
+ return false
+ }
+ end_mark := parser.mark
+
+ // Create a VERSION-DIRECTIVE token.
+ *token = yaml_token_t{
+ typ: yaml_VERSION_DIRECTIVE_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ major: major,
+ minor: minor,
+ }
+
+ // Is it a TAG directive?
+ } else if bytes.Equal(name, []byte("TAG")) {
+ // Scan the TAG directive value.
+ var handle, prefix []byte
+ if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {
+ return false
+ }
+ end_mark := parser.mark
+
+ // Create a TAG-DIRECTIVE token.
+ *token = yaml_token_t{
+ typ: yaml_TAG_DIRECTIVE_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ value: handle,
+ prefix: prefix,
+ }
+
+ // Unknown directive.
+ } else {
+ yaml_parser_set_scanner_error(parser, "while scanning a directive",
+ start_mark, "found unknown directive name")
+ return false
+ }
+
+ // Eat the rest of the line including any comments.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ for is_blank(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ if parser.buffer[parser.buffer_pos] == '#' {
+ // [Go] Discard this inline comment for the time being.
+ //if !yaml_parser_scan_line_comment(parser, start_mark) {
+ // return false
+ //}
+ for !is_breakz(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+ }
+
+ // Check if we are at the end of the line.
+ if !is_breakz(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a directive",
+ start_mark, "did not find expected comment or line break")
+ return false
+ }
+
+ // Eat a line break.
+ if is_break(parser.buffer, parser.buffer_pos) {
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ skip_line(parser)
+ }
+
+ return true
+}
+
+// Scan the directive name.
+//
+// Scope:
+// %YAML 1.1 # a comment \n
+// ^^^^
+// %TAG !yaml! tag:yaml.org,2002: \n
+// ^^^
+//
+func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {
+ // Consume the directive name.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ var s []byte
+ for is_alpha(parser.buffer, parser.buffer_pos) {
+ s = read(parser, s)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Check if the name is empty.
+ if len(s) == 0 {
+ yaml_parser_set_scanner_error(parser, "while scanning a directive",
+ start_mark, "could not find expected directive name")
+ return false
+ }
+
+ // Check for an blank character after the name.
+ if !is_blankz(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a directive",
+ start_mark, "found unexpected non-alphabetical character")
+ return false
+ }
+ *name = s
+ return true
+}
+
+// Scan the value of VERSION-DIRECTIVE.
+//
+// Scope:
+// %YAML 1.1 # a comment \n
+// ^^^^^^
+func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {
+ // Eat whitespaces.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ for is_blank(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Consume the major version number.
+ if !yaml_parser_scan_version_directive_number(parser, start_mark, major) {
+ return false
+ }
+
+ // Eat '.'.
+ if parser.buffer[parser.buffer_pos] != '.' {
+ return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
+ start_mark, "did not find expected digit or '.' character")
+ }
+
+ skip(parser)
+
+ // Consume the minor version number.
+ if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {
+ return false
+ }
+ return true
+}
+
+const max_number_length = 2
+
+// Scan the version number of VERSION-DIRECTIVE.
+//
+// Scope:
+// %YAML 1.1 # a comment \n
+// ^
+// %YAML 1.1 # a comment \n
+// ^
+func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {
+
+ // Repeat while the next character is digit.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ var value, length int8
+ for is_digit(parser.buffer, parser.buffer_pos) {
+ // Check if the number is too long.
+ length++
+ if length > max_number_length {
+ return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
+ start_mark, "found extremely long version number")
+ }
+ value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Check if the number was present.
+ if length == 0 {
+ return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
+ start_mark, "did not find expected version number")
+ }
+ *number = value
+ return true
+}
+
+// Scan the value of a TAG-DIRECTIVE token.
+//
+// Scope:
+// %TAG !yaml! tag:yaml.org,2002: \n
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {
+ var handle_value, prefix_value []byte
+
+ // Eat whitespaces.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ for is_blank(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Scan a handle.
+ if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {
+ return false
+ }
+
+ // Expect a whitespace.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if !is_blank(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
+ start_mark, "did not find expected whitespace")
+ return false
+ }
+
+ // Eat whitespaces.
+ for is_blank(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Scan a prefix.
+ if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {
+ return false
+ }
+
+ // Expect a whitespace or line break.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if !is_blankz(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
+ start_mark, "did not find expected whitespace or line break")
+ return false
+ }
+
+ *handle = handle_value
+ *prefix = prefix_value
+ return true
+}
+
+func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {
+ var s []byte
+
+ // Eat the indicator character.
+ start_mark := parser.mark
+ skip(parser)
+
+ // Consume the value.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ for is_alpha(parser.buffer, parser.buffer_pos) {
+ s = read(parser, s)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ end_mark := parser.mark
+
+ /*
+ * Check if length of the anchor is greater than 0 and it is followed by
+ * a whitespace character or one of the indicators:
+ *
+ * '?', ':', ',', ']', '}', '%', '@', '`'.
+ */
+
+ if len(s) == 0 ||
+ !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||
+ parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||
+ parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||
+ parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||
+ parser.buffer[parser.buffer_pos] == '`') {
+ context := "while scanning an alias"
+ if typ == yaml_ANCHOR_TOKEN {
+ context = "while scanning an anchor"
+ }
+ yaml_parser_set_scanner_error(parser, context, start_mark,
+ "did not find expected alphabetic or numeric character")
+ return false
+ }
+
+ // Create a token.
+ *token = yaml_token_t{
+ typ: typ,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ value: s,
+ }
+
+ return true
+}
+
+/*
+ * Scan a TAG token.
+ */
+
+func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {
+ var handle, suffix []byte
+
+ start_mark := parser.mark
+
+ // Check if the tag is in the canonical form.
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+
+ if parser.buffer[parser.buffer_pos+1] == '<' {
+ // Keep the handle as ''
+
+ // Eat '!<'
+ skip(parser)
+ skip(parser)
+
+ // Consume the tag value.
+ if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {
+ return false
+ }
+
+ // Check for '>' and eat it.
+ if parser.buffer[parser.buffer_pos] != '>' {
+ yaml_parser_set_scanner_error(parser, "while scanning a tag",
+ start_mark, "did not find the expected '>'")
+ return false
+ }
+
+ skip(parser)
+ } else {
+ // The tag has either the '!suffix' or the '!handle!suffix' form.
+
+ // First, try to scan a handle.
+ if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {
+ return false
+ }
+
+ // Check if it is, indeed, handle.
+ if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {
+ // Scan the suffix now.
+ if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {
+ return false
+ }
+ } else {
+ // It wasn't a handle after all. Scan the rest of the tag.
+ if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {
+ return false
+ }
+
+ // Set the handle to '!'.
+ handle = []byte{'!'}
+
+ // A special case: the '!' tag. Set the handle to '' and the
+ // suffix to '!'.
+ if len(suffix) == 0 {
+ handle, suffix = suffix, handle
+ }
+ }
+ }
+
+ // Check the character which ends the tag.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if !is_blankz(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a tag",
+ start_mark, "did not find expected whitespace or line break")
+ return false
+ }
+
+ end_mark := parser.mark
+
+ // Create a token.
+ *token = yaml_token_t{
+ typ: yaml_TAG_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ value: handle,
+ suffix: suffix,
+ }
+ return true
+}
+
+// Scan a tag handle.
+func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {
+ // Check the initial '!' character.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if parser.buffer[parser.buffer_pos] != '!' {
+ yaml_parser_set_scanner_tag_error(parser, directive,
+ start_mark, "did not find expected '!'")
+ return false
+ }
+
+ var s []byte
+
+ // Copy the '!' character.
+ s = read(parser, s)
+
+ // Copy all subsequent alphabetical and numerical characters.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ for is_alpha(parser.buffer, parser.buffer_pos) {
+ s = read(parser, s)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Check if the trailing character is '!' and copy it.
+ if parser.buffer[parser.buffer_pos] == '!' {
+ s = read(parser, s)
+ } else {
+ // It's either the '!' tag or not really a tag handle. If it's a %TAG
+ // directive, it's an error. If it's a tag token, it must be a part of URI.
+ if directive && string(s) != "!" {
+ yaml_parser_set_scanner_tag_error(parser, directive,
+ start_mark, "did not find expected '!'")
+ return false
+ }
+ }
+
+ *handle = s
+ return true
+}
+
+// Scan a tag.
+func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {
+ //size_t length = head ? strlen((char *)head) : 0
+ var s []byte
+ hasTag := len(head) > 0
+
+ // Copy the head if needed.
+ //
+ // Note that we don't copy the leading '!' character.
+ if len(head) > 1 {
+ s = append(s, head[1:]...)
+ }
+
+ // Scan the tag.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ // The set of characters that may appear in URI is as follows:
+ //
+ // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',
+ // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']',
+ // '%'.
+ // [Go] TODO Convert this into more reasonable logic.
+ for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||
+ parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||
+ parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||
+ parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||
+ parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||
+ parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||
+ parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||
+ parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' ||
+ parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||
+ parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||
+ parser.buffer[parser.buffer_pos] == '%' {
+ // Check if it is a URI-escape sequence.
+ if parser.buffer[parser.buffer_pos] == '%' {
+ if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {
+ return false
+ }
+ } else {
+ s = read(parser, s)
+ }
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ hasTag = true
+ }
+
+ if !hasTag {
+ yaml_parser_set_scanner_tag_error(parser, directive,
+ start_mark, "did not find expected tag URI")
+ return false
+ }
+ *uri = s
+ return true
+}
+
+// Decode an URI-escape sequence corresponding to a single UTF-8 character.
+func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {
+
+ // Decode the required number of characters.
+ w := 1024
+ for w > 0 {
+ // Check for a URI-escaped octet.
+ if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {
+ return false
+ }
+
+ if !(parser.buffer[parser.buffer_pos] == '%' &&
+ is_hex(parser.buffer, parser.buffer_pos+1) &&
+ is_hex(parser.buffer, parser.buffer_pos+2)) {
+ return yaml_parser_set_scanner_tag_error(parser, directive,
+ start_mark, "did not find URI escaped octet")
+ }
+
+ // Get the octet.
+ octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))
+
+ // If it is the leading octet, determine the length of the UTF-8 sequence.
+ if w == 1024 {
+ w = width(octet)
+ if w == 0 {
+ return yaml_parser_set_scanner_tag_error(parser, directive,
+ start_mark, "found an incorrect leading UTF-8 octet")
+ }
+ } else {
+ // Check if the trailing octet is correct.
+ if octet&0xC0 != 0x80 {
+ return yaml_parser_set_scanner_tag_error(parser, directive,
+ start_mark, "found an incorrect trailing UTF-8 octet")
+ }
+ }
+
+ // Copy the octet and move the pointers.
+ *s = append(*s, octet)
+ skip(parser)
+ skip(parser)
+ skip(parser)
+ w--
+ }
+ return true
+}
+
+// Scan a block scalar.
+func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {
+ // Eat the indicator '|' or '>'.
+ start_mark := parser.mark
+ skip(parser)
+
+ // Scan the additional block scalar indicators.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ // Check for a chomping indicator.
+ var chomping, increment int
+ if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {
+ // Set the chomping method and eat the indicator.
+ if parser.buffer[parser.buffer_pos] == '+' {
+ chomping = +1
+ } else {
+ chomping = -1
+ }
+ skip(parser)
+
+ // Check for an indentation indicator.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if is_digit(parser.buffer, parser.buffer_pos) {
+ // Check that the indentation is greater than 0.
+ if parser.buffer[parser.buffer_pos] == '0' {
+ yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+ start_mark, "found an indentation indicator equal to 0")
+ return false
+ }
+
+ // Get the indentation level and eat the indicator.
+ increment = as_digit(parser.buffer, parser.buffer_pos)
+ skip(parser)
+ }
+
+ } else if is_digit(parser.buffer, parser.buffer_pos) {
+ // Do the same as above, but in the opposite order.
+
+ if parser.buffer[parser.buffer_pos] == '0' {
+ yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+ start_mark, "found an indentation indicator equal to 0")
+ return false
+ }
+ increment = as_digit(parser.buffer, parser.buffer_pos)
+ skip(parser)
+
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {
+ if parser.buffer[parser.buffer_pos] == '+' {
+ chomping = +1
+ } else {
+ chomping = -1
+ }
+ skip(parser)
+ }
+ }
+
+ // Eat whitespaces and comments to the end of the line.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ for is_blank(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+ if parser.buffer[parser.buffer_pos] == '#' {
+ // TODO Test this and then re-enable it.
+ //if !yaml_parser_scan_line_comment(parser, start_mark) {
+ // return false
+ //}
+ for !is_breakz(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+ }
+
+ // Check if we are at the end of the line.
+ if !is_breakz(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+ start_mark, "did not find expected comment or line break")
+ return false
+ }
+
+ // Eat a line break.
+ if is_break(parser.buffer, parser.buffer_pos) {
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ skip_line(parser)
+ }
+
+ end_mark := parser.mark
+
+ // Set the indentation level if it was specified.
+ var indent int
+ if increment > 0 {
+ if parser.indent >= 0 {
+ indent = parser.indent + increment
+ } else {
+ indent = increment
+ }
+ }
+
+ // Scan the leading line breaks and determine the indentation level if needed.
+ var s, leading_break, trailing_breaks []byte
+ if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {
+ return false
+ }
+
+ // Scan the block scalar content.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ var leading_blank, trailing_blank bool
+ for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {
+ // We are at the beginning of a non-empty line.
+
+ // Is it a trailing whitespace?
+ trailing_blank = is_blank(parser.buffer, parser.buffer_pos)
+
+ // Check if we need to fold the leading line break.
+ if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' {
+ // Do we need to join the lines by space?
+ if len(trailing_breaks) == 0 {
+ s = append(s, ' ')
+ }
+ } else {
+ s = append(s, leading_break...)
+ }
+ leading_break = leading_break[:0]
+
+ // Append the remaining line breaks.
+ s = append(s, trailing_breaks...)
+ trailing_breaks = trailing_breaks[:0]
+
+ // Is it a leading whitespace?
+ leading_blank = is_blank(parser.buffer, parser.buffer_pos)
+
+ // Consume the current line.
+ for !is_breakz(parser.buffer, parser.buffer_pos) {
+ s = read(parser, s)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Consume the line break.
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+
+ leading_break = read_line(parser, leading_break)
+
+ // Eat the following indentation spaces and line breaks.
+ if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {
+ return false
+ }
+ }
+
+ // Chomp the tail.
+ if chomping != -1 {
+ s = append(s, leading_break...)
+ }
+ if chomping == 1 {
+ s = append(s, trailing_breaks...)
+ }
+
+ // Create a token.
+ *token = yaml_token_t{
+ typ: yaml_SCALAR_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ value: s,
+ style: yaml_LITERAL_SCALAR_STYLE,
+ }
+ if !literal {
+ token.style = yaml_FOLDED_SCALAR_STYLE
+ }
+ return true
+}
+
+// Scan indentation spaces and line breaks for a block scalar. Determine the
+// indentation level if needed.
+func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {
+ *end_mark = parser.mark
+
+ // Eat the indentation spaces and line breaks.
+ max_indent := 0
+ for {
+ // Eat the indentation spaces.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {
+ skip(parser)
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+ if parser.mark.column > max_indent {
+ max_indent = parser.mark.column
+ }
+
+ // Check for a tab character messing the indentation.
+ if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {
+ return yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+ start_mark, "found a tab character where an indentation space is expected")
+ }
+
+ // Have we found a non-empty line?
+ if !is_break(parser.buffer, parser.buffer_pos) {
+ break
+ }
+
+ // Consume the line break.
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ // [Go] Should really be returning breaks instead.
+ *breaks = read_line(parser, *breaks)
+ *end_mark = parser.mark
+ }
+
+ // Determine the indentation level if needed.
+ if *indent == 0 {
+ *indent = max_indent
+ if *indent < parser.indent+1 {
+ *indent = parser.indent + 1
+ }
+ if *indent < 1 {
+ *indent = 1
+ }
+ }
+ return true
+}
+
+// Scan a quoted scalar.
+func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {
+ // Eat the left quote.
+ start_mark := parser.mark
+ skip(parser)
+
+ // Consume the content of the quoted scalar.
+ var s, leading_break, trailing_breaks, whitespaces []byte
+ for {
+ // Check that there are no document indicators at the beginning of the line.
+ if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {
+ return false
+ }
+
+ if parser.mark.column == 0 &&
+ ((parser.buffer[parser.buffer_pos+0] == '-' &&
+ parser.buffer[parser.buffer_pos+1] == '-' &&
+ parser.buffer[parser.buffer_pos+2] == '-') ||
+ (parser.buffer[parser.buffer_pos+0] == '.' &&
+ parser.buffer[parser.buffer_pos+1] == '.' &&
+ parser.buffer[parser.buffer_pos+2] == '.')) &&
+ is_blankz(parser.buffer, parser.buffer_pos+3) {
+ yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar",
+ start_mark, "found unexpected document indicator")
+ return false
+ }
+
+ // Check for EOF.
+ if is_z(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar",
+ start_mark, "found unexpected end of stream")
+ return false
+ }
+
+ // Consume non-blank characters.
+ leading_blanks := false
+ for !is_blankz(parser.buffer, parser.buffer_pos) {
+ if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' {
+ // Is is an escaped single quote.
+ s = append(s, '\'')
+ skip(parser)
+ skip(parser)
+
+ } else if single && parser.buffer[parser.buffer_pos] == '\'' {
+ // It is a right single quote.
+ break
+ } else if !single && parser.buffer[parser.buffer_pos] == '"' {
+ // It is a right double quote.
+ break
+
+ } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) {
+ // It is an escaped line break.
+ if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {
+ return false
+ }
+ skip(parser)
+ skip_line(parser)
+ leading_blanks = true
+ break
+
+ } else if !single && parser.buffer[parser.buffer_pos] == '\\' {
+ // It is an escape sequence.
+ code_length := 0
+
+ // Check the escape character.
+ switch parser.buffer[parser.buffer_pos+1] {
+ case '0':
+ s = append(s, 0)
+ case 'a':
+ s = append(s, '\x07')
+ case 'b':
+ s = append(s, '\x08')
+ case 't', '\t':
+ s = append(s, '\x09')
+ case 'n':
+ s = append(s, '\x0A')
+ case 'v':
+ s = append(s, '\x0B')
+ case 'f':
+ s = append(s, '\x0C')
+ case 'r':
+ s = append(s, '\x0D')
+ case 'e':
+ s = append(s, '\x1B')
+ case ' ':
+ s = append(s, '\x20')
+ case '"':
+ s = append(s, '"')
+ case '\'':
+ s = append(s, '\'')
+ case '\\':
+ s = append(s, '\\')
+ case 'N': // NEL (#x85)
+ s = append(s, '\xC2')
+ s = append(s, '\x85')
+ case '_': // #xA0
+ s = append(s, '\xC2')
+ s = append(s, '\xA0')
+ case 'L': // LS (#x2028)
+ s = append(s, '\xE2')
+ s = append(s, '\x80')
+ s = append(s, '\xA8')
+ case 'P': // PS (#x2029)
+ s = append(s, '\xE2')
+ s = append(s, '\x80')
+ s = append(s, '\xA9')
+ case 'x':
+ code_length = 2
+ case 'u':
+ code_length = 4
+ case 'U':
+ code_length = 8
+ default:
+ yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
+ start_mark, "found unknown escape character")
+ return false
+ }
+
+ skip(parser)
+ skip(parser)
+
+ // Consume an arbitrary escape code.
+ if code_length > 0 {
+ var value int
+
+ // Scan the character value.
+ if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {
+ return false
+ }
+ for k := 0; k < code_length; k++ {
+ if !is_hex(parser.buffer, parser.buffer_pos+k) {
+ yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
+ start_mark, "did not find expected hexdecimal number")
+ return false
+ }
+ value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)
+ }
+
+ // Check the value and write the character.
+ if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {
+ yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
+ start_mark, "found invalid Unicode character escape code")
+ return false
+ }
+ if value <= 0x7F {
+ s = append(s, byte(value))
+ } else if value <= 0x7FF {
+ s = append(s, byte(0xC0+(value>>6)))
+ s = append(s, byte(0x80+(value&0x3F)))
+ } else if value <= 0xFFFF {
+ s = append(s, byte(0xE0+(value>>12)))
+ s = append(s, byte(0x80+((value>>6)&0x3F)))
+ s = append(s, byte(0x80+(value&0x3F)))
+ } else {
+ s = append(s, byte(0xF0+(value>>18)))
+ s = append(s, byte(0x80+((value>>12)&0x3F)))
+ s = append(s, byte(0x80+((value>>6)&0x3F)))
+ s = append(s, byte(0x80+(value&0x3F)))
+ }
+
+ // Advance the pointer.
+ for k := 0; k < code_length; k++ {
+ skip(parser)
+ }
+ }
+ } else {
+ // It is a non-escaped non-blank character.
+ s = read(parser, s)
+ }
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ }
+
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ // Check if we are at the end of the scalar.
+ if single {
+ if parser.buffer[parser.buffer_pos] == '\'' {
+ break
+ }
+ } else {
+ if parser.buffer[parser.buffer_pos] == '"' {
+ break
+ }
+ }
+
+ // Consume blank characters.
+ for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {
+ if is_blank(parser.buffer, parser.buffer_pos) {
+ // Consume a space or a tab character.
+ if !leading_blanks {
+ whitespaces = read(parser, whitespaces)
+ } else {
+ skip(parser)
+ }
+ } else {
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+
+ // Check if it is a first line break.
+ if !leading_blanks {
+ whitespaces = whitespaces[:0]
+ leading_break = read_line(parser, leading_break)
+ leading_blanks = true
+ } else {
+ trailing_breaks = read_line(parser, trailing_breaks)
+ }
+ }
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Join the whitespaces or fold line breaks.
+ if leading_blanks {
+ // Do we need to fold line breaks?
+ if len(leading_break) > 0 && leading_break[0] == '\n' {
+ if len(trailing_breaks) == 0 {
+ s = append(s, ' ')
+ } else {
+ s = append(s, trailing_breaks...)
+ }
+ } else {
+ s = append(s, leading_break...)
+ s = append(s, trailing_breaks...)
+ }
+ trailing_breaks = trailing_breaks[:0]
+ leading_break = leading_break[:0]
+ } else {
+ s = append(s, whitespaces...)
+ whitespaces = whitespaces[:0]
+ }
+ }
+
+ // Eat the right quote.
+ skip(parser)
+ end_mark := parser.mark
+
+ // Create a token.
+ *token = yaml_token_t{
+ typ: yaml_SCALAR_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ value: s,
+ style: yaml_SINGLE_QUOTED_SCALAR_STYLE,
+ }
+ if !single {
+ token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+ }
+ return true
+}
+
+// Scan a plain scalar.
+func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {
+
+ var s, leading_break, trailing_breaks, whitespaces []byte
+ var leading_blanks bool
+ var indent = parser.indent + 1
+
+ start_mark := parser.mark
+ end_mark := parser.mark
+
+ // Consume the content of the plain scalar.
+ for {
+ // Check for a document indicator.
+ if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {
+ return false
+ }
+ if parser.mark.column == 0 &&
+ ((parser.buffer[parser.buffer_pos+0] == '-' &&
+ parser.buffer[parser.buffer_pos+1] == '-' &&
+ parser.buffer[parser.buffer_pos+2] == '-') ||
+ (parser.buffer[parser.buffer_pos+0] == '.' &&
+ parser.buffer[parser.buffer_pos+1] == '.' &&
+ parser.buffer[parser.buffer_pos+2] == '.')) &&
+ is_blankz(parser.buffer, parser.buffer_pos+3) {
+ break
+ }
+
+ // Check for a comment.
+ if parser.buffer[parser.buffer_pos] == '#' {
+ break
+ }
+
+ // Consume non-blank characters.
+ for !is_blankz(parser.buffer, parser.buffer_pos) {
+
+ // Check for indicators that may end a plain scalar.
+ if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||
+ (parser.flow_level > 0 &&
+ (parser.buffer[parser.buffer_pos] == ',' ||
+ parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||
+ parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||
+ parser.buffer[parser.buffer_pos] == '}')) {
+ break
+ }
+
+ // Check if we need to join whitespaces and breaks.
+ if leading_blanks || len(whitespaces) > 0 {
+ if leading_blanks {
+ // Do we need to fold line breaks?
+ if leading_break[0] == '\n' {
+ if len(trailing_breaks) == 0 {
+ s = append(s, ' ')
+ } else {
+ s = append(s, trailing_breaks...)
+ }
+ } else {
+ s = append(s, leading_break...)
+ s = append(s, trailing_breaks...)
+ }
+ trailing_breaks = trailing_breaks[:0]
+ leading_break = leading_break[:0]
+ leading_blanks = false
+ } else {
+ s = append(s, whitespaces...)
+ whitespaces = whitespaces[:0]
+ }
+ }
+
+ // Copy the character.
+ s = read(parser, s)
+
+ end_mark = parser.mark
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ }
+
+ // Is it the end?
+ if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {
+ break
+ }
+
+ // Consume blank characters.
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+
+ for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {
+ if is_blank(parser.buffer, parser.buffer_pos) {
+
+ // Check for tab characters that abuse indentation.
+ if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {
+ yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
+ start_mark, "found a tab character that violates indentation")
+ return false
+ }
+
+ // Consume a space or a tab character.
+ if !leading_blanks {
+ whitespaces = read(parser, whitespaces)
+ } else {
+ skip(parser)
+ }
+ } else {
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+
+ // Check if it is a first line break.
+ if !leading_blanks {
+ whitespaces = whitespaces[:0]
+ leading_break = read_line(parser, leading_break)
+ leading_blanks = true
+ } else {
+ trailing_breaks = read_line(parser, trailing_breaks)
+ }
+ }
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ }
+
+ // Check indentation level.
+ if parser.flow_level == 0 && parser.mark.column < indent {
+ break
+ }
+ }
+
+ // Create a token.
+ *token = yaml_token_t{
+ typ: yaml_SCALAR_TOKEN,
+ start_mark: start_mark,
+ end_mark: end_mark,
+ value: s,
+ style: yaml_PLAIN_SCALAR_STYLE,
+ }
+
+ // Note that we change the 'simple_key_allowed' flag.
+ if leading_blanks {
+ parser.simple_key_allowed = true
+ }
+ return true
+}
+
+func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool {
+ if parser.newlines > 0 {
+ return true
+ }
+
+ var start_mark yaml_mark_t
+ var text []byte
+
+ for peek := 0; peek < 512; peek++ {
+ if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {
+ break
+ }
+ if is_blank(parser.buffer, parser.buffer_pos+peek) {
+ continue
+ }
+ if parser.buffer[parser.buffer_pos+peek] == '#' {
+ seen := parser.mark.index+peek
+ for {
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if is_breakz(parser.buffer, parser.buffer_pos) {
+ if parser.mark.index >= seen {
+ break
+ }
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ skip_line(parser)
+ } else {
+ if parser.mark.index >= seen {
+ if len(text) == 0 {
+ start_mark = parser.mark
+ }
+ text = append(text, parser.buffer[parser.buffer_pos])
+ }
+ skip(parser)
+ }
+ }
+ }
+ break
+ }
+ if len(text) > 0 {
+ parser.comments = append(parser.comments, yaml_comment_t{
+ token_mark: token_mark,
+ start_mark: start_mark,
+ line: text,
+ })
+ }
+ return true
+}
+
+func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool {
+ token := parser.tokens[len(parser.tokens)-1]
+
+ if token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 {
+ token = parser.tokens[len(parser.tokens)-2]
+ }
+
+ var token_mark = token.start_mark
+ var start_mark yaml_mark_t
+
+ var recent_empty = false
+ var first_empty = parser.newlines <= 1
+
+ var line = parser.mark.line
+ var column = parser.mark.column
+
+ var text []byte
+
+ // The foot line is the place where a comment must start to
+ // still be considered as a foot of the prior content.
+ // If there's some content in the currently parsed line, then
+ // the foot is the line below it.
+ var foot_line = -1
+ if scan_mark.line > 0 {
+ foot_line = parser.mark.line-parser.newlines+1
+ if parser.newlines == 0 && parser.mark.column > 1 {
+ foot_line++
+ }
+ }
+
+ var peek = 0
+ for ; peek < 512; peek++ {
+ if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) {
+ break
+ }
+ column++
+ if is_blank(parser.buffer, parser.buffer_pos+peek) {
+ continue
+ }
+ c := parser.buffer[parser.buffer_pos+peek]
+ if is_breakz(parser.buffer, parser.buffer_pos+peek) || parser.flow_level > 0 && (c == ']' || c == '}') {
+ // Got line break or terminator.
+ if !recent_empty {
+ if first_empty && (start_mark.line == foot_line || start_mark.column-1 < parser.indent) {
+ // This is the first empty line and there were no empty lines before,
+ // so this initial part of the comment is a foot of the prior token
+ // instead of being a head for the following one. Split it up.
+ if len(text) > 0 {
+ if start_mark.column-1 < parser.indent {
+ // If dedented it's unrelated to the prior token.
+ token_mark = start_mark
+ }
+ parser.comments = append(parser.comments, yaml_comment_t{
+ scan_mark: scan_mark,
+ token_mark: token_mark,
+ start_mark: start_mark,
+ end_mark: yaml_mark_t{parser.mark.index + peek, line, column},
+ foot: text,
+ })
+ scan_mark = yaml_mark_t{parser.mark.index + peek, line, column}
+ token_mark = scan_mark
+ text = nil
+ }
+ } else {
+ if len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 {
+ text = append(text, '\n')
+ }
+ }
+ }
+ if !is_break(parser.buffer, parser.buffer_pos+peek) {
+ break
+ }
+ first_empty = false
+ recent_empty = true
+ column = 0
+ line++
+ continue
+ }
+
+ if len(text) > 0 && column < parser.indent+1 && column != start_mark.column {
+ // The comment at the different indentation is a foot of the
+ // preceding data rather than a head of the upcoming one.
+ parser.comments = append(parser.comments, yaml_comment_t{
+ scan_mark: scan_mark,
+ token_mark: token_mark,
+ start_mark: start_mark,
+ end_mark: yaml_mark_t{parser.mark.index + peek, line, column},
+ foot: text,
+ })
+ scan_mark = yaml_mark_t{parser.mark.index + peek, line, column}
+ token_mark = scan_mark
+ text = nil
+ }
+
+ if parser.buffer[parser.buffer_pos+peek] != '#' {
+ break
+ }
+
+ if len(text) == 0 {
+ start_mark = yaml_mark_t{parser.mark.index + peek, line, column}
+ } else {
+ text = append(text, '\n')
+ }
+
+ recent_empty = false
+
+ // Consume until after the consumed comment line.
+ seen := parser.mark.index+peek
+ for {
+ if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+ return false
+ }
+ if is_breakz(parser.buffer, parser.buffer_pos) {
+ if parser.mark.index >= seen {
+ break
+ }
+ if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+ return false
+ }
+ skip_line(parser)
+ } else {
+ if parser.mark.index >= seen {
+ text = append(text, parser.buffer[parser.buffer_pos])
+ }
+ skip(parser)
+ }
+ }
+
+ peek = 0
+ column = 0
+ line = parser.mark.line
+ }
+
+ if len(text) > 0 {
+ parser.comments = append(parser.comments, yaml_comment_t{
+ scan_mark: scan_mark,
+ token_mark: start_mark,
+ start_mark: start_mark,
+ end_mark: yaml_mark_t{parser.mark.index + peek - 1, line, column},
+ head: text,
+ })
+ }
+ return true
+}
diff --git a/vendor/gopkg.in/yaml.v3/sorter.go b/vendor/gopkg.in/yaml.v3/sorter.go
new file mode 100644
index 00000000000..9210ece7e97
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/sorter.go
@@ -0,0 +1,134 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+//
+// 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.
+
+package yaml
+
+import (
+ "reflect"
+ "unicode"
+)
+
+type keyList []reflect.Value
+
+func (l keyList) Len() int { return len(l) }
+func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }
+func (l keyList) Less(i, j int) bool {
+ a := l[i]
+ b := l[j]
+ ak := a.Kind()
+ bk := b.Kind()
+ for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {
+ a = a.Elem()
+ ak = a.Kind()
+ }
+ for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {
+ b = b.Elem()
+ bk = b.Kind()
+ }
+ af, aok := keyFloat(a)
+ bf, bok := keyFloat(b)
+ if aok && bok {
+ if af != bf {
+ return af < bf
+ }
+ if ak != bk {
+ return ak < bk
+ }
+ return numLess(a, b)
+ }
+ if ak != reflect.String || bk != reflect.String {
+ return ak < bk
+ }
+ ar, br := []rune(a.String()), []rune(b.String())
+ digits := false
+ for i := 0; i < len(ar) && i < len(br); i++ {
+ if ar[i] == br[i] {
+ digits = unicode.IsDigit(ar[i])
+ continue
+ }
+ al := unicode.IsLetter(ar[i])
+ bl := unicode.IsLetter(br[i])
+ if al && bl {
+ return ar[i] < br[i]
+ }
+ if al || bl {
+ if digits {
+ return al
+ } else {
+ return bl
+ }
+ }
+ var ai, bi int
+ var an, bn int64
+ if ar[i] == '0' || br[i] == '0' {
+ for j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- {
+ if ar[j] != '0' {
+ an = 1
+ bn = 1
+ break
+ }
+ }
+ }
+ for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {
+ an = an*10 + int64(ar[ai]-'0')
+ }
+ for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {
+ bn = bn*10 + int64(br[bi]-'0')
+ }
+ if an != bn {
+ return an < bn
+ }
+ if ai != bi {
+ return ai < bi
+ }
+ return ar[i] < br[i]
+ }
+ return len(ar) < len(br)
+}
+
+// keyFloat returns a float value for v if it is a number/bool
+// and whether it is a number/bool or not.
+func keyFloat(v reflect.Value) (f float64, ok bool) {
+ switch v.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return float64(v.Int()), true
+ case reflect.Float32, reflect.Float64:
+ return v.Float(), true
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+ return float64(v.Uint()), true
+ case reflect.Bool:
+ if v.Bool() {
+ return 1, true
+ }
+ return 0, true
+ }
+ return 0, false
+}
+
+// numLess returns whether a < b.
+// a and b must necessarily have the same kind.
+func numLess(a, b reflect.Value) bool {
+ switch a.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return a.Int() < b.Int()
+ case reflect.Float32, reflect.Float64:
+ return a.Float() < b.Float()
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+ return a.Uint() < b.Uint()
+ case reflect.Bool:
+ return !a.Bool() && b.Bool()
+ }
+ panic("not a number")
+}
diff --git a/vendor/gopkg.in/yaml.v3/writerc.go b/vendor/gopkg.in/yaml.v3/writerc.go
new file mode 100644
index 00000000000..b8a116bf9a2
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/writerc.go
@@ -0,0 +1,48 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+// Set the writer error and return false.
+func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {
+ emitter.error = yaml_WRITER_ERROR
+ emitter.problem = problem
+ return false
+}
+
+// Flush the output buffer.
+func yaml_emitter_flush(emitter *yaml_emitter_t) bool {
+ if emitter.write_handler == nil {
+ panic("write handler not set")
+ }
+
+ // Check if the buffer is empty.
+ if emitter.buffer_pos == 0 {
+ return true
+ }
+
+ if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {
+ return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error())
+ }
+ emitter.buffer_pos = 0
+ return true
+}
diff --git a/vendor/gopkg.in/yaml.v3/yaml.go b/vendor/gopkg.in/yaml.v3/yaml.go
new file mode 100644
index 00000000000..b5d35a50ded
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/yaml.go
@@ -0,0 +1,662 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+//
+// 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.
+
+// Package yaml implements YAML support for the Go language.
+//
+// Source code and other details for the project are available at GitHub:
+//
+// https://github.com/go-yaml/yaml
+//
+package yaml
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "reflect"
+ "strings"
+ "sync"
+ "unicode/utf8"
+)
+
+// The Unmarshaler interface may be implemented by types to customize their
+// behavior when being unmarshaled from a YAML document.
+type Unmarshaler interface {
+ UnmarshalYAML(value *Node) error
+}
+
+type obsoleteUnmarshaler interface {
+ UnmarshalYAML(unmarshal func(interface{}) error) error
+}
+
+// The Marshaler interface may be implemented by types to customize their
+// behavior when being marshaled into a YAML document. The returned value
+// is marshaled in place of the original value implementing Marshaler.
+//
+// If an error is returned by MarshalYAML, the marshaling procedure stops
+// and returns with the provided error.
+type Marshaler interface {
+ MarshalYAML() (interface{}, error)
+}
+
+// Unmarshal decodes the first document found within the in byte slice
+// and assigns decoded values into the out value.
+//
+// Maps and pointers (to a struct, string, int, etc) are accepted as out
+// values. If an internal pointer within a struct is not initialized,
+// the yaml package will initialize it if necessary for unmarshalling
+// the provided data. The out parameter must not be nil.
+//
+// The type of the decoded values should be compatible with the respective
+// values in out. If one or more values cannot be decoded due to a type
+// mismatches, decoding continues partially until the end of the YAML
+// content, and a *yaml.TypeError is returned with details for all
+// missed values.
+//
+// Struct fields are only unmarshalled if they are exported (have an
+// upper case first letter), and are unmarshalled using the field name
+// lowercased as the default key. Custom keys may be defined via the
+// "yaml" name in the field tag: the content preceding the first comma
+// is used as the key, and the following comma-separated options are
+// used to tweak the marshalling process (see Marshal).
+// Conflicting names result in a runtime error.
+//
+// For example:
+//
+// type T struct {
+// F int `yaml:"a,omitempty"`
+// B int
+// }
+// var t T
+// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t)
+//
+// See the documentation of Marshal for the format of tags and a list of
+// supported tag options.
+//
+func Unmarshal(in []byte, out interface{}) (err error) {
+ return unmarshal(in, out, false)
+}
+
+// A Decorder reads and decodes YAML values from an input stream.
+type Decoder struct {
+ parser *parser
+ knownFields bool
+}
+
+// NewDecoder returns a new decoder that reads from r.
+//
+// The decoder introduces its own buffering and may read
+// data from r beyond the YAML values requested.
+func NewDecoder(r io.Reader) *Decoder {
+ return &Decoder{
+ parser: newParserFromReader(r),
+ }
+}
+
+// KnownFields ensures that the keys in decoded mappings to
+// exist as fields in the struct being decoded into.
+func (dec *Decoder) KnownFields(enable bool) {
+ dec.knownFields = enable
+}
+
+// Decode reads the next YAML-encoded value from its input
+// and stores it in the value pointed to by v.
+//
+// See the documentation for Unmarshal for details about the
+// conversion of YAML into a Go value.
+func (dec *Decoder) Decode(v interface{}) (err error) {
+ d := newDecoder()
+ d.knownFields = dec.knownFields
+ defer handleErr(&err)
+ node := dec.parser.parse()
+ if node == nil {
+ return io.EOF
+ }
+ out := reflect.ValueOf(v)
+ if out.Kind() == reflect.Ptr && !out.IsNil() {
+ out = out.Elem()
+ }
+ d.unmarshal(node, out)
+ if len(d.terrors) > 0 {
+ return &TypeError{d.terrors}
+ }
+ return nil
+}
+
+// Decode decodes the node and stores its data into the value pointed to by v.
+//
+// See the documentation for Unmarshal for details about the
+// conversion of YAML into a Go value.
+func (n *Node) Decode(v interface{}) (err error) {
+ d := newDecoder()
+ defer handleErr(&err)
+ out := reflect.ValueOf(v)
+ if out.Kind() == reflect.Ptr && !out.IsNil() {
+ out = out.Elem()
+ }
+ d.unmarshal(n, out)
+ if len(d.terrors) > 0 {
+ return &TypeError{d.terrors}
+ }
+ return nil
+}
+
+func unmarshal(in []byte, out interface{}, strict bool) (err error) {
+ defer handleErr(&err)
+ d := newDecoder()
+ p := newParser(in)
+ defer p.destroy()
+ node := p.parse()
+ if node != nil {
+ v := reflect.ValueOf(out)
+ if v.Kind() == reflect.Ptr && !v.IsNil() {
+ v = v.Elem()
+ }
+ d.unmarshal(node, v)
+ }
+ if len(d.terrors) > 0 {
+ return &TypeError{d.terrors}
+ }
+ return nil
+}
+
+// Marshal serializes the value provided into a YAML document. The structure
+// of the generated document will reflect the structure of the value itself.
+// Maps and pointers (to struct, string, int, etc) are accepted as the in value.
+//
+// Struct fields are only marshalled if they are exported (have an upper case
+// first letter), and are marshalled using the field name lowercased as the
+// default key. Custom keys may be defined via the "yaml" name in the field
+// tag: the content preceding the first comma is used as the key, and the
+// following comma-separated options are used to tweak the marshalling process.
+// Conflicting names result in a runtime error.
+//
+// The field tag format accepted is:
+//
+// `(...) yaml:"[][,[,]]" (...)`
+//
+// The following flags are currently supported:
+//
+// omitempty Only include the field if it's not set to the zero
+// value for the type or to empty slices or maps.
+// Zero valued structs will be omitted if all their public
+// fields are zero, unless they implement an IsZero
+// method (see the IsZeroer interface type), in which
+// case the field will be included if that method returns true.
+//
+// flow Marshal using a flow style (useful for structs,
+// sequences and maps).
+//
+// inline Inline the field, which must be a struct or a map,
+// causing all of its fields or keys to be processed as if
+// they were part of the outer struct. For maps, keys must
+// not conflict with the yaml keys of other struct fields.
+//
+// In addition, if the key is "-", the field is ignored.
+//
+// For example:
+//
+// type T struct {
+// F int `yaml:"a,omitempty"`
+// B int
+// }
+// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n"
+// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n"
+//
+func Marshal(in interface{}) (out []byte, err error) {
+ defer handleErr(&err)
+ e := newEncoder()
+ defer e.destroy()
+ e.marshalDoc("", reflect.ValueOf(in))
+ e.finish()
+ out = e.out
+ return
+}
+
+// An Encoder writes YAML values to an output stream.
+type Encoder struct {
+ encoder *encoder
+}
+
+// NewEncoder returns a new encoder that writes to w.
+// The Encoder should be closed after use to flush all data
+// to w.
+func NewEncoder(w io.Writer) *Encoder {
+ return &Encoder{
+ encoder: newEncoderWithWriter(w),
+ }
+}
+
+// Encode writes the YAML encoding of v to the stream.
+// If multiple items are encoded to the stream, the
+// second and subsequent document will be preceded
+// with a "---" document separator, but the first will not.
+//
+// See the documentation for Marshal for details about the conversion of Go
+// values to YAML.
+func (e *Encoder) Encode(v interface{}) (err error) {
+ defer handleErr(&err)
+ e.encoder.marshalDoc("", reflect.ValueOf(v))
+ return nil
+}
+
+// SetIndent changes the used indentation used when encoding.
+func (e *Encoder) SetIndent(spaces int) {
+ if spaces < 0 {
+ panic("yaml: cannot indent to a negative number of spaces")
+ }
+ e.encoder.indent = spaces
+}
+
+// Close closes the encoder by writing any remaining data.
+// It does not write a stream terminating string "...".
+func (e *Encoder) Close() (err error) {
+ defer handleErr(&err)
+ e.encoder.finish()
+ return nil
+}
+
+func handleErr(err *error) {
+ if v := recover(); v != nil {
+ if e, ok := v.(yamlError); ok {
+ *err = e.err
+ } else {
+ panic(v)
+ }
+ }
+}
+
+type yamlError struct {
+ err error
+}
+
+func fail(err error) {
+ panic(yamlError{err})
+}
+
+func failf(format string, args ...interface{}) {
+ panic(yamlError{fmt.Errorf("yaml: "+format, args...)})
+}
+
+// A TypeError is returned by Unmarshal when one or more fields in
+// the YAML document cannot be properly decoded into the requested
+// types. When this error is returned, the value is still
+// unmarshaled partially.
+type TypeError struct {
+ Errors []string
+}
+
+func (e *TypeError) Error() string {
+ return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n "))
+}
+
+type Kind uint32
+
+const (
+ DocumentNode Kind = 1 << iota
+ SequenceNode
+ MappingNode
+ ScalarNode
+ AliasNode
+)
+
+type Style uint32
+
+const (
+ TaggedStyle Style = 1 << iota
+ DoubleQuotedStyle
+ SingleQuotedStyle
+ LiteralStyle
+ FoldedStyle
+ FlowStyle
+)
+
+// Node represents an element in the YAML document hierarchy. While documents
+// are typically encoded and decoded into higher level types, such as structs
+// and maps, Node is an intermediate representation that allows detailed
+// control over the content being decoded or encoded.
+//
+// Values that make use of the Node type interact with the yaml package in the
+// same way any other type would do, by encoding and decoding yaml data
+// directly or indirectly into them.
+//
+// For example:
+//
+// var person struct {
+// Name string
+// Address yaml.Node
+// }
+// err := yaml.Unmarshal(data, &person)
+//
+// Or by itself:
+//
+// var person Node
+// err := yaml.Unmarshal(data, &person)
+//
+type Node struct {
+ // Kind defines whether the node is a document, a mapping, a sequence,
+ // a scalar value, or an alias to another node. The specific data type of
+ // scalar nodes may be obtained via the ShortTag and LongTag methods.
+ Kind Kind
+
+ // Style allows customizing the apperance of the node in the tree.
+ Style Style
+
+ // Tag holds the YAML tag defining the data type for the value.
+ // When decoding, this field will always be set to the resolved tag,
+ // even when it wasn't explicitly provided in the YAML content.
+ // When encoding, if this field is unset the value type will be
+ // implied from the node properties, and if it is set, it will only
+ // be serialized into the representation if TaggedStyle is used or
+ // the implicit tag diverges from the provided one.
+ Tag string
+
+ // Value holds the unescaped and unquoted represenation of the value.
+ Value string
+
+ // Anchor holds the anchor name for this node, which allows aliases to point to it.
+ Anchor string
+
+ // Alias holds the node that this alias points to. Only valid when Kind is AliasNode.
+ Alias *Node
+
+ // Content holds contained nodes for documents, mappings, and sequences.
+ Content []*Node
+
+ // HeadComment holds any comments in the lines preceding the node and
+ // not separated by an empty line.
+ HeadComment string
+
+ // LineComment holds any comments at the end of the line where the node is in.
+ LineComment string
+
+ // FootComment holds any comments following the node and before empty lines.
+ FootComment string
+
+ // Line and Column hold the node position in the decoded YAML text.
+ // These fields are not respected when encoding the node.
+ Line int
+ Column int
+}
+
+// LongTag returns the long form of the tag that indicates the data type for
+// the node. If the Tag field isn't explicitly defined, one will be computed
+// based on the node properties.
+func (n *Node) LongTag() string {
+ return longTag(n.ShortTag())
+}
+
+// ShortTag returns the short form of the YAML tag that indicates data type for
+// the node. If the Tag field isn't explicitly defined, one will be computed
+// based on the node properties.
+func (n *Node) ShortTag() string {
+ if n.indicatedString() {
+ return strTag
+ }
+ if n.Tag == "" || n.Tag == "!" {
+ switch n.Kind {
+ case MappingNode:
+ return mapTag
+ case SequenceNode:
+ return seqTag
+ case AliasNode:
+ if n.Alias != nil {
+ return n.Alias.ShortTag()
+ }
+ case ScalarNode:
+ tag, _ := resolve("", n.Value)
+ return tag
+ }
+ return ""
+ }
+ return shortTag(n.Tag)
+}
+
+func (n *Node) indicatedString() bool {
+ return n.Kind == ScalarNode &&
+ (shortTag(n.Tag) == strTag ||
+ (n.Tag == "" || n.Tag == "!") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0)
+}
+
+// SetString is a convenience function that sets the node to a string value
+// and defines its style in a pleasant way depending on its content.
+func (n *Node) SetString(s string) {
+ n.Kind = ScalarNode
+ if utf8.ValidString(s) {
+ n.Value = s
+ n.Tag = strTag
+ } else {
+ n.Value = encodeBase64(s)
+ n.Tag = binaryTag
+ }
+ if strings.Contains(n.Value, "\n") {
+ n.Style = LiteralStyle
+ }
+}
+
+// --------------------------------------------------------------------------
+// Maintain a mapping of keys to structure field indexes
+
+// The code in this section was copied from mgo/bson.
+
+// structInfo holds details for the serialization of fields of
+// a given struct.
+type structInfo struct {
+ FieldsMap map[string]fieldInfo
+ FieldsList []fieldInfo
+
+ // InlineMap is the number of the field in the struct that
+ // contains an ,inline map, or -1 if there's none.
+ InlineMap int
+
+ // InlineUnmarshalers holds indexes to inlined fields that
+ // contain unmarshaler values.
+ InlineUnmarshalers [][]int
+}
+
+type fieldInfo struct {
+ Key string
+ Num int
+ OmitEmpty bool
+ Flow bool
+ // Id holds the unique field identifier, so we can cheaply
+ // check for field duplicates without maintaining an extra map.
+ Id int
+
+ // Inline holds the field index if the field is part of an inlined struct.
+ Inline []int
+}
+
+var structMap = make(map[reflect.Type]*structInfo)
+var fieldMapMutex sync.RWMutex
+var unmarshalerType reflect.Type
+
+func init() {
+ var v Unmarshaler
+ unmarshalerType = reflect.ValueOf(&v).Elem().Type()
+}
+
+func getStructInfo(st reflect.Type) (*structInfo, error) {
+ fieldMapMutex.RLock()
+ sinfo, found := structMap[st]
+ fieldMapMutex.RUnlock()
+ if found {
+ return sinfo, nil
+ }
+
+ n := st.NumField()
+ fieldsMap := make(map[string]fieldInfo)
+ fieldsList := make([]fieldInfo, 0, n)
+ inlineMap := -1
+ inlineUnmarshalers := [][]int(nil)
+ for i := 0; i != n; i++ {
+ field := st.Field(i)
+ if field.PkgPath != "" && !field.Anonymous {
+ continue // Private field
+ }
+
+ info := fieldInfo{Num: i}
+
+ tag := field.Tag.Get("yaml")
+ if tag == "" && strings.Index(string(field.Tag), ":") < 0 {
+ tag = string(field.Tag)
+ }
+ if tag == "-" {
+ continue
+ }
+
+ inline := false
+ fields := strings.Split(tag, ",")
+ if len(fields) > 1 {
+ for _, flag := range fields[1:] {
+ switch flag {
+ case "omitempty":
+ info.OmitEmpty = true
+ case "flow":
+ info.Flow = true
+ case "inline":
+ inline = true
+ default:
+ return nil, errors.New(fmt.Sprintf("unsupported flag %q in tag %q of type %s", flag, tag, st))
+ }
+ }
+ tag = fields[0]
+ }
+
+ if inline {
+ switch field.Type.Kind() {
+ case reflect.Map:
+ if inlineMap >= 0 {
+ return nil, errors.New("multiple ,inline maps in struct " + st.String())
+ }
+ if field.Type.Key() != reflect.TypeOf("") {
+ return nil, errors.New("option ,inline needs a map with string keys in struct " + st.String())
+ }
+ inlineMap = info.Num
+ case reflect.Struct, reflect.Ptr:
+ ftype := field.Type
+ for ftype.Kind() == reflect.Ptr {
+ ftype = ftype.Elem()
+ }
+ if ftype.Kind() != reflect.Struct {
+ return nil, errors.New("option ,inline may only be used on a struct or map field")
+ }
+ if reflect.PtrTo(ftype).Implements(unmarshalerType) {
+ inlineUnmarshalers = append(inlineUnmarshalers, []int{i})
+ } else {
+ sinfo, err := getStructInfo(ftype)
+ if err != nil {
+ return nil, err
+ }
+ for _, index := range sinfo.InlineUnmarshalers {
+ inlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...))
+ }
+ for _, finfo := range sinfo.FieldsList {
+ if _, found := fieldsMap[finfo.Key]; found {
+ msg := "duplicated key '" + finfo.Key + "' in struct " + st.String()
+ return nil, errors.New(msg)
+ }
+ if finfo.Inline == nil {
+ finfo.Inline = []int{i, finfo.Num}
+ } else {
+ finfo.Inline = append([]int{i}, finfo.Inline...)
+ }
+ finfo.Id = len(fieldsList)
+ fieldsMap[finfo.Key] = finfo
+ fieldsList = append(fieldsList, finfo)
+ }
+ }
+ default:
+ return nil, errors.New("option ,inline may only be used on a struct or map field")
+ }
+ continue
+ }
+
+ if tag != "" {
+ info.Key = tag
+ } else {
+ info.Key = strings.ToLower(field.Name)
+ }
+
+ if _, found = fieldsMap[info.Key]; found {
+ msg := "duplicated key '" + info.Key + "' in struct " + st.String()
+ return nil, errors.New(msg)
+ }
+
+ info.Id = len(fieldsList)
+ fieldsList = append(fieldsList, info)
+ fieldsMap[info.Key] = info
+ }
+
+ sinfo = &structInfo{
+ FieldsMap: fieldsMap,
+ FieldsList: fieldsList,
+ InlineMap: inlineMap,
+ InlineUnmarshalers: inlineUnmarshalers,
+ }
+
+ fieldMapMutex.Lock()
+ structMap[st] = sinfo
+ fieldMapMutex.Unlock()
+ return sinfo, nil
+}
+
+// IsZeroer is used to check whether an object is zero to
+// determine whether it should be omitted when marshaling
+// with the omitempty flag. One notable implementation
+// is time.Time.
+type IsZeroer interface {
+ IsZero() bool
+}
+
+func isZero(v reflect.Value) bool {
+ kind := v.Kind()
+ if z, ok := v.Interface().(IsZeroer); ok {
+ if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() {
+ return true
+ }
+ return z.IsZero()
+ }
+ switch kind {
+ case reflect.String:
+ return len(v.String()) == 0
+ case reflect.Interface, reflect.Ptr:
+ return v.IsNil()
+ case reflect.Slice:
+ return v.Len() == 0
+ case reflect.Map:
+ return v.Len() == 0
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return v.Int() == 0
+ case reflect.Float32, reflect.Float64:
+ return v.Float() == 0
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+ return v.Uint() == 0
+ case reflect.Bool:
+ return !v.Bool()
+ case reflect.Struct:
+ vt := v.Type()
+ for i := v.NumField() - 1; i >= 0; i-- {
+ if vt.Field(i).PkgPath != "" {
+ continue // Private field
+ }
+ if !isZero(v.Field(i)) {
+ return false
+ }
+ }
+ return true
+ }
+ return false
+}
diff --git a/vendor/gopkg.in/yaml.v3/yamlh.go b/vendor/gopkg.in/yaml.v3/yamlh.go
new file mode 100644
index 00000000000..2719cfbb0b7
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/yamlh.go
@@ -0,0 +1,805 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+import (
+ "fmt"
+ "io"
+)
+
+// The version directive data.
+type yaml_version_directive_t struct {
+ major int8 // The major version number.
+ minor int8 // The minor version number.
+}
+
+// The tag directive data.
+type yaml_tag_directive_t struct {
+ handle []byte // The tag handle.
+ prefix []byte // The tag prefix.
+}
+
+type yaml_encoding_t int
+
+// The stream encoding.
+const (
+ // Let the parser choose the encoding.
+ yaml_ANY_ENCODING yaml_encoding_t = iota
+
+ yaml_UTF8_ENCODING // The default UTF-8 encoding.
+ yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.
+ yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.
+)
+
+type yaml_break_t int
+
+// Line break types.
+const (
+ // Let the parser choose the break type.
+ yaml_ANY_BREAK yaml_break_t = iota
+
+ yaml_CR_BREAK // Use CR for line breaks (Mac style).
+ yaml_LN_BREAK // Use LN for line breaks (Unix style).
+ yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).
+)
+
+type yaml_error_type_t int
+
+// Many bad things could happen with the parser and emitter.
+const (
+ // No error is produced.
+ yaml_NO_ERROR yaml_error_type_t = iota
+
+ yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory.
+ yaml_READER_ERROR // Cannot read or decode the input stream.
+ yaml_SCANNER_ERROR // Cannot scan the input stream.
+ yaml_PARSER_ERROR // Cannot parse the input stream.
+ yaml_COMPOSER_ERROR // Cannot compose a YAML document.
+ yaml_WRITER_ERROR // Cannot write to the output stream.
+ yaml_EMITTER_ERROR // Cannot emit a YAML stream.
+)
+
+// The pointer position.
+type yaml_mark_t struct {
+ index int // The position index.
+ line int // The position line.
+ column int // The position column.
+}
+
+// Node Styles
+
+type yaml_style_t int8
+
+type yaml_scalar_style_t yaml_style_t
+
+// Scalar styles.
+const (
+ // Let the emitter choose the style.
+ yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0
+
+ yaml_PLAIN_SCALAR_STYLE yaml_scalar_style_t = 1 << iota // The plain scalar style.
+ yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style.
+ yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style.
+ yaml_LITERAL_SCALAR_STYLE // The literal scalar style.
+ yaml_FOLDED_SCALAR_STYLE // The folded scalar style.
+)
+
+type yaml_sequence_style_t yaml_style_t
+
+// Sequence styles.
+const (
+ // Let the emitter choose the style.
+ yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota
+
+ yaml_BLOCK_SEQUENCE_STYLE // The block sequence style.
+ yaml_FLOW_SEQUENCE_STYLE // The flow sequence style.
+)
+
+type yaml_mapping_style_t yaml_style_t
+
+// Mapping styles.
+const (
+ // Let the emitter choose the style.
+ yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota
+
+ yaml_BLOCK_MAPPING_STYLE // The block mapping style.
+ yaml_FLOW_MAPPING_STYLE // The flow mapping style.
+)
+
+// Tokens
+
+type yaml_token_type_t int
+
+// Token types.
+const (
+ // An empty token.
+ yaml_NO_TOKEN yaml_token_type_t = iota
+
+ yaml_STREAM_START_TOKEN // A STREAM-START token.
+ yaml_STREAM_END_TOKEN // A STREAM-END token.
+
+ yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.
+ yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token.
+ yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token.
+ yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token.
+
+ yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.
+ yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token.
+ yaml_BLOCK_END_TOKEN // A BLOCK-END token.
+
+ yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.
+ yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token.
+ yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token.
+ yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token.
+
+ yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.
+ yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token.
+ yaml_KEY_TOKEN // A KEY token.
+ yaml_VALUE_TOKEN // A VALUE token.
+
+ yaml_ALIAS_TOKEN // An ALIAS token.
+ yaml_ANCHOR_TOKEN // An ANCHOR token.
+ yaml_TAG_TOKEN // A TAG token.
+ yaml_SCALAR_TOKEN // A SCALAR token.
+)
+
+func (tt yaml_token_type_t) String() string {
+ switch tt {
+ case yaml_NO_TOKEN:
+ return "yaml_NO_TOKEN"
+ case yaml_STREAM_START_TOKEN:
+ return "yaml_STREAM_START_TOKEN"
+ case yaml_STREAM_END_TOKEN:
+ return "yaml_STREAM_END_TOKEN"
+ case yaml_VERSION_DIRECTIVE_TOKEN:
+ return "yaml_VERSION_DIRECTIVE_TOKEN"
+ case yaml_TAG_DIRECTIVE_TOKEN:
+ return "yaml_TAG_DIRECTIVE_TOKEN"
+ case yaml_DOCUMENT_START_TOKEN:
+ return "yaml_DOCUMENT_START_TOKEN"
+ case yaml_DOCUMENT_END_TOKEN:
+ return "yaml_DOCUMENT_END_TOKEN"
+ case yaml_BLOCK_SEQUENCE_START_TOKEN:
+ return "yaml_BLOCK_SEQUENCE_START_TOKEN"
+ case yaml_BLOCK_MAPPING_START_TOKEN:
+ return "yaml_BLOCK_MAPPING_START_TOKEN"
+ case yaml_BLOCK_END_TOKEN:
+ return "yaml_BLOCK_END_TOKEN"
+ case yaml_FLOW_SEQUENCE_START_TOKEN:
+ return "yaml_FLOW_SEQUENCE_START_TOKEN"
+ case yaml_FLOW_SEQUENCE_END_TOKEN:
+ return "yaml_FLOW_SEQUENCE_END_TOKEN"
+ case yaml_FLOW_MAPPING_START_TOKEN:
+ return "yaml_FLOW_MAPPING_START_TOKEN"
+ case yaml_FLOW_MAPPING_END_TOKEN:
+ return "yaml_FLOW_MAPPING_END_TOKEN"
+ case yaml_BLOCK_ENTRY_TOKEN:
+ return "yaml_BLOCK_ENTRY_TOKEN"
+ case yaml_FLOW_ENTRY_TOKEN:
+ return "yaml_FLOW_ENTRY_TOKEN"
+ case yaml_KEY_TOKEN:
+ return "yaml_KEY_TOKEN"
+ case yaml_VALUE_TOKEN:
+ return "yaml_VALUE_TOKEN"
+ case yaml_ALIAS_TOKEN:
+ return "yaml_ALIAS_TOKEN"
+ case yaml_ANCHOR_TOKEN:
+ return "yaml_ANCHOR_TOKEN"
+ case yaml_TAG_TOKEN:
+ return "yaml_TAG_TOKEN"
+ case yaml_SCALAR_TOKEN:
+ return "yaml_SCALAR_TOKEN"
+ }
+ return ""
+}
+
+// The token structure.
+type yaml_token_t struct {
+ // The token type.
+ typ yaml_token_type_t
+
+ // The start/end of the token.
+ start_mark, end_mark yaml_mark_t
+
+ // The stream encoding (for yaml_STREAM_START_TOKEN).
+ encoding yaml_encoding_t
+
+ // The alias/anchor/scalar value or tag/tag directive handle
+ // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).
+ value []byte
+
+ // The tag suffix (for yaml_TAG_TOKEN).
+ suffix []byte
+
+ // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).
+ prefix []byte
+
+ // The scalar style (for yaml_SCALAR_TOKEN).
+ style yaml_scalar_style_t
+
+ // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).
+ major, minor int8
+}
+
+// Events
+
+type yaml_event_type_t int8
+
+// Event types.
+const (
+ // An empty event.
+ yaml_NO_EVENT yaml_event_type_t = iota
+
+ yaml_STREAM_START_EVENT // A STREAM-START event.
+ yaml_STREAM_END_EVENT // A STREAM-END event.
+ yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.
+ yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event.
+ yaml_ALIAS_EVENT // An ALIAS event.
+ yaml_SCALAR_EVENT // A SCALAR event.
+ yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.
+ yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event.
+ yaml_MAPPING_START_EVENT // A MAPPING-START event.
+ yaml_MAPPING_END_EVENT // A MAPPING-END event.
+ yaml_TAIL_COMMENT_EVENT
+)
+
+var eventStrings = []string{
+ yaml_NO_EVENT: "none",
+ yaml_STREAM_START_EVENT: "stream start",
+ yaml_STREAM_END_EVENT: "stream end",
+ yaml_DOCUMENT_START_EVENT: "document start",
+ yaml_DOCUMENT_END_EVENT: "document end",
+ yaml_ALIAS_EVENT: "alias",
+ yaml_SCALAR_EVENT: "scalar",
+ yaml_SEQUENCE_START_EVENT: "sequence start",
+ yaml_SEQUENCE_END_EVENT: "sequence end",
+ yaml_MAPPING_START_EVENT: "mapping start",
+ yaml_MAPPING_END_EVENT: "mapping end",
+ yaml_TAIL_COMMENT_EVENT: "tail comment",
+}
+
+func (e yaml_event_type_t) String() string {
+ if e < 0 || int(e) >= len(eventStrings) {
+ return fmt.Sprintf("unknown event %d", e)
+ }
+ return eventStrings[e]
+}
+
+// The event structure.
+type yaml_event_t struct {
+
+ // The event type.
+ typ yaml_event_type_t
+
+ // The start and end of the event.
+ start_mark, end_mark yaml_mark_t
+
+ // The document encoding (for yaml_STREAM_START_EVENT).
+ encoding yaml_encoding_t
+
+ // The version directive (for yaml_DOCUMENT_START_EVENT).
+ version_directive *yaml_version_directive_t
+
+ // The list of tag directives (for yaml_DOCUMENT_START_EVENT).
+ tag_directives []yaml_tag_directive_t
+
+ // The comments
+ head_comment []byte
+ line_comment []byte
+ foot_comment []byte
+ tail_comment []byte
+
+ // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).
+ anchor []byte
+
+ // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).
+ tag []byte
+
+ // The scalar value (for yaml_SCALAR_EVENT).
+ value []byte
+
+ // Is the document start/end indicator implicit, or the tag optional?
+ // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).
+ implicit bool
+
+ // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).
+ quoted_implicit bool
+
+ // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).
+ style yaml_style_t
+}
+
+func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) }
+func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }
+func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) }
+
+// Nodes
+
+const (
+ yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null.
+ yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false.
+ yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values.
+ yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values.
+ yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values.
+ yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values.
+
+ yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences.
+ yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping.
+
+ // Not in original libyaml.
+ yaml_BINARY_TAG = "tag:yaml.org,2002:binary"
+ yaml_MERGE_TAG = "tag:yaml.org,2002:merge"
+
+ yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str.
+ yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.
+ yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map.
+)
+
+type yaml_node_type_t int
+
+// Node types.
+const (
+ // An empty node.
+ yaml_NO_NODE yaml_node_type_t = iota
+
+ yaml_SCALAR_NODE // A scalar node.
+ yaml_SEQUENCE_NODE // A sequence node.
+ yaml_MAPPING_NODE // A mapping node.
+)
+
+// An element of a sequence node.
+type yaml_node_item_t int
+
+// An element of a mapping node.
+type yaml_node_pair_t struct {
+ key int // The key of the element.
+ value int // The value of the element.
+}
+
+// The node structure.
+type yaml_node_t struct {
+ typ yaml_node_type_t // The node type.
+ tag []byte // The node tag.
+
+ // The node data.
+
+ // The scalar parameters (for yaml_SCALAR_NODE).
+ scalar struct {
+ value []byte // The scalar value.
+ length int // The length of the scalar value.
+ style yaml_scalar_style_t // The scalar style.
+ }
+
+ // The sequence parameters (for YAML_SEQUENCE_NODE).
+ sequence struct {
+ items_data []yaml_node_item_t // The stack of sequence items.
+ style yaml_sequence_style_t // The sequence style.
+ }
+
+ // The mapping parameters (for yaml_MAPPING_NODE).
+ mapping struct {
+ pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value).
+ pairs_start *yaml_node_pair_t // The beginning of the stack.
+ pairs_end *yaml_node_pair_t // The end of the stack.
+ pairs_top *yaml_node_pair_t // The top of the stack.
+ style yaml_mapping_style_t // The mapping style.
+ }
+
+ start_mark yaml_mark_t // The beginning of the node.
+ end_mark yaml_mark_t // The end of the node.
+
+}
+
+// The document structure.
+type yaml_document_t struct {
+
+ // The document nodes.
+ nodes []yaml_node_t
+
+ // The version directive.
+ version_directive *yaml_version_directive_t
+
+ // The list of tag directives.
+ tag_directives_data []yaml_tag_directive_t
+ tag_directives_start int // The beginning of the tag directives list.
+ tag_directives_end int // The end of the tag directives list.
+
+ start_implicit int // Is the document start indicator implicit?
+ end_implicit int // Is the document end indicator implicit?
+
+ // The start/end of the document.
+ start_mark, end_mark yaml_mark_t
+}
+
+// The prototype of a read handler.
+//
+// The read handler is called when the parser needs to read more bytes from the
+// source. The handler should write not more than size bytes to the buffer.
+// The number of written bytes should be set to the size_read variable.
+//
+// [in,out] data A pointer to an application data specified by
+// yaml_parser_set_input().
+// [out] buffer The buffer to write the data from the source.
+// [in] size The size of the buffer.
+// [out] size_read The actual number of bytes read from the source.
+//
+// On success, the handler should return 1. If the handler failed,
+// the returned value should be 0. On EOF, the handler should set the
+// size_read to 0 and return 1.
+type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)
+
+// This structure holds information about a potential simple key.
+type yaml_simple_key_t struct {
+ possible bool // Is a simple key possible?
+ required bool // Is a simple key required?
+ token_number int // The number of the token.
+ mark yaml_mark_t // The position mark.
+}
+
+// The states of the parser.
+type yaml_parser_state_t int
+
+const (
+ yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota
+
+ yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document.
+ yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START.
+ yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document.
+ yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END.
+ yaml_PARSE_BLOCK_NODE_STATE // Expect a block node.
+ yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.
+ yaml_PARSE_FLOW_NODE_STATE // Expect a flow node.
+ yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence.
+ yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence.
+ yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence.
+ yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping.
+ yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key.
+ yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value.
+ yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence.
+ yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence.
+ yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping.
+ yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.
+ yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry.
+ yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping.
+ yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping.
+ yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping.
+ yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping.
+ yaml_PARSE_END_STATE // Expect nothing.
+)
+
+func (ps yaml_parser_state_t) String() string {
+ switch ps {
+ case yaml_PARSE_STREAM_START_STATE:
+ return "yaml_PARSE_STREAM_START_STATE"
+ case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:
+ return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE"
+ case yaml_PARSE_DOCUMENT_START_STATE:
+ return "yaml_PARSE_DOCUMENT_START_STATE"
+ case yaml_PARSE_DOCUMENT_CONTENT_STATE:
+ return "yaml_PARSE_DOCUMENT_CONTENT_STATE"
+ case yaml_PARSE_DOCUMENT_END_STATE:
+ return "yaml_PARSE_DOCUMENT_END_STATE"
+ case yaml_PARSE_BLOCK_NODE_STATE:
+ return "yaml_PARSE_BLOCK_NODE_STATE"
+ case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:
+ return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE"
+ case yaml_PARSE_FLOW_NODE_STATE:
+ return "yaml_PARSE_FLOW_NODE_STATE"
+ case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:
+ return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE"
+ case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:
+ return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE"
+ case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:
+ return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE"
+ case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:
+ return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE"
+ case yaml_PARSE_BLOCK_MAPPING_KEY_STATE:
+ return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE"
+ case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:
+ return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE"
+ case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:
+ return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE"
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:
+ return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE"
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:
+ return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE"
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:
+ return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE"
+ case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:
+ return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE"
+ case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:
+ return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE"
+ case yaml_PARSE_FLOW_MAPPING_KEY_STATE:
+ return "yaml_PARSE_FLOW_MAPPING_KEY_STATE"
+ case yaml_PARSE_FLOW_MAPPING_VALUE_STATE:
+ return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE"
+ case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:
+ return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE"
+ case yaml_PARSE_END_STATE:
+ return "yaml_PARSE_END_STATE"
+ }
+ return ""
+}
+
+// This structure holds aliases data.
+type yaml_alias_data_t struct {
+ anchor []byte // The anchor.
+ index int // The node id.
+ mark yaml_mark_t // The anchor mark.
+}
+
+// The parser structure.
+//
+// All members are internal. Manage the structure using the
+// yaml_parser_ family of functions.
+type yaml_parser_t struct {
+
+ // Error handling
+
+ error yaml_error_type_t // Error type.
+
+ problem string // Error description.
+
+ // The byte about which the problem occurred.
+ problem_offset int
+ problem_value int
+ problem_mark yaml_mark_t
+
+ // The error context.
+ context string
+ context_mark yaml_mark_t
+
+ // Reader stuff
+
+ read_handler yaml_read_handler_t // Read handler.
+
+ input_reader io.Reader // File input data.
+ input []byte // String input data.
+ input_pos int
+
+ eof bool // EOF flag
+
+ buffer []byte // The working buffer.
+ buffer_pos int // The current position of the buffer.
+
+ unread int // The number of unread characters in the buffer.
+
+ newlines int // The number of line breaks since last non-break/non-blank character
+
+ raw_buffer []byte // The raw buffer.
+ raw_buffer_pos int // The current position of the buffer.
+
+ encoding yaml_encoding_t // The input encoding.
+
+ offset int // The offset of the current position (in bytes).
+ mark yaml_mark_t // The mark of the current position.
+
+ // Comments
+
+ head_comment []byte // The current head comments
+ line_comment []byte // The current line comments
+ foot_comment []byte // The current foot comments
+ tail_comment []byte // Foot comment that happens at the end of a block.
+ stem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc)
+
+ comments []yaml_comment_t // The folded comments for all parsed tokens
+ comments_head int
+
+ // Scanner stuff
+
+ stream_start_produced bool // Have we started to scan the input stream?
+ stream_end_produced bool // Have we reached the end of the input stream?
+
+ flow_level int // The number of unclosed '[' and '{' indicators.
+
+ tokens []yaml_token_t // The tokens queue.
+ tokens_head int // The head of the tokens queue.
+ tokens_parsed int // The number of tokens fetched from the queue.
+ token_available bool // Does the tokens queue contain a token ready for dequeueing.
+
+ indent int // The current indentation level.
+ indents []int // The indentation levels stack.
+
+ simple_key_allowed bool // May a simple key occur at the current position?
+ simple_keys []yaml_simple_key_t // The stack of simple keys.
+ simple_keys_by_tok map[int]int // possible simple_key indexes indexed by token_number
+
+ // Parser stuff
+
+ state yaml_parser_state_t // The current parser state.
+ states []yaml_parser_state_t // The parser states stack.
+ marks []yaml_mark_t // The stack of marks.
+ tag_directives []yaml_tag_directive_t // The list of TAG directives.
+
+ // Dumper stuff
+
+ aliases []yaml_alias_data_t // The alias data.
+
+ document *yaml_document_t // The currently parsed document.
+}
+
+type yaml_comment_t struct {
+
+ scan_mark yaml_mark_t // Position where scanning for comments started
+ token_mark yaml_mark_t // Position after which tokens will be associated with this comment
+ start_mark yaml_mark_t // Position of '#' comment mark
+ end_mark yaml_mark_t // Position where comment terminated
+
+ head []byte
+ line []byte
+ foot []byte
+}
+
+// Emitter Definitions
+
+// The prototype of a write handler.
+//
+// The write handler is called when the emitter needs to flush the accumulated
+// characters to the output. The handler should write @a size bytes of the
+// @a buffer to the output.
+//
+// @param[in,out] data A pointer to an application data specified by
+// yaml_emitter_set_output().
+// @param[in] buffer The buffer with bytes to be written.
+// @param[in] size The size of the buffer.
+//
+// @returns On success, the handler should return @c 1. If the handler failed,
+// the returned value should be @c 0.
+//
+type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error
+
+type yaml_emitter_state_t int
+
+// The emitter states.
+const (
+ // Expect STREAM-START.
+ yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota
+
+ yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END.
+ yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END.
+ yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document.
+ yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END.
+ yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence.
+ yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE // Expect the next item of a flow sequence, with the comma already written out
+ yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence.
+ yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping.
+ yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE // Expect the next key of a flow mapping, with the comma already written out
+ yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping.
+ yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping.
+ yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping.
+ yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence.
+ yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence.
+ yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping.
+ yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping.
+ yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.
+ yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping.
+ yaml_EMIT_END_STATE // Expect nothing.
+)
+
+// The emitter structure.
+//
+// All members are internal. Manage the structure using the @c yaml_emitter_
+// family of functions.
+type yaml_emitter_t struct {
+
+ // Error handling
+
+ error yaml_error_type_t // Error type.
+ problem string // Error description.
+
+ // Writer stuff
+
+ write_handler yaml_write_handler_t // Write handler.
+
+ output_buffer *[]byte // String output data.
+ output_writer io.Writer // File output data.
+
+ buffer []byte // The working buffer.
+ buffer_pos int // The current position of the buffer.
+
+ raw_buffer []byte // The raw buffer.
+ raw_buffer_pos int // The current position of the buffer.
+
+ encoding yaml_encoding_t // The stream encoding.
+
+ // Emitter stuff
+
+ canonical bool // If the output is in the canonical style?
+ best_indent int // The number of indentation spaces.
+ best_width int // The preferred width of the output lines.
+ unicode bool // Allow unescaped non-ASCII characters?
+ line_break yaml_break_t // The preferred line break.
+
+ state yaml_emitter_state_t // The current emitter state.
+ states []yaml_emitter_state_t // The stack of states.
+
+ events []yaml_event_t // The event queue.
+ events_head int // The head of the event queue.
+
+ indents []int // The stack of indentation levels.
+
+ tag_directives []yaml_tag_directive_t // The list of tag directives.
+
+ indent int // The current indentation level.
+
+ flow_level int // The current flow level.
+
+ root_context bool // Is it the document root context?
+ sequence_context bool // Is it a sequence context?
+ mapping_context bool // Is it a mapping context?
+ simple_key_context bool // Is it a simple mapping key context?
+
+ line int // The current line.
+ column int // The current column.
+ whitespace bool // If the last character was a whitespace?
+ indention bool // If the last character was an indentation character (' ', '-', '?', ':')?
+ open_ended bool // If an explicit document end is required?
+
+ space_above bool // Is there's an empty line above?
+ foot_indent int // The indent used to write the foot comment above, or -1 if none.
+
+ // Anchor analysis.
+ anchor_data struct {
+ anchor []byte // The anchor value.
+ alias bool // Is it an alias?
+ }
+
+ // Tag analysis.
+ tag_data struct {
+ handle []byte // The tag handle.
+ suffix []byte // The tag suffix.
+ }
+
+ // Scalar analysis.
+ scalar_data struct {
+ value []byte // The scalar value.
+ multiline bool // Does the scalar contain line breaks?
+ flow_plain_allowed bool // Can the scalar be expessed in the flow plain style?
+ block_plain_allowed bool // Can the scalar be expressed in the block plain style?
+ single_quoted_allowed bool // Can the scalar be expressed in the single quoted style?
+ block_allowed bool // Can the scalar be expressed in the literal or folded styles?
+ style yaml_scalar_style_t // The output style.
+ }
+
+ // Comments
+ head_comment []byte
+ line_comment []byte
+ foot_comment []byte
+ tail_comment []byte
+
+ // Dumper stuff
+
+ opened bool // If the stream was already opened?
+ closed bool // If the stream was already closed?
+
+ // The information associated with the document nodes.
+ anchors *struct {
+ references int // The number of references.
+ anchor int // The anchor id.
+ serialized bool // If the node has been emitted?
+ }
+
+ last_anchor_id int // The last assigned anchor id.
+
+ document *yaml_document_t // The currently emitted document.
+}
diff --git a/vendor/gopkg.in/yaml.v3/yamlprivateh.go b/vendor/gopkg.in/yaml.v3/yamlprivateh.go
new file mode 100644
index 00000000000..e88f9c54aec
--- /dev/null
+++ b/vendor/gopkg.in/yaml.v3/yamlprivateh.go
@@ -0,0 +1,198 @@
+//
+// Copyright (c) 2011-2019 Canonical Ltd
+// Copyright (c) 2006-2010 Kirill Simonov
+//
+// 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.
+
+package yaml
+
+const (
+ // The size of the input raw buffer.
+ input_raw_buffer_size = 512
+
+ // The size of the input buffer.
+ // It should be possible to decode the whole raw buffer.
+ input_buffer_size = input_raw_buffer_size * 3
+
+ // The size of the output buffer.
+ output_buffer_size = 128
+
+ // The size of the output raw buffer.
+ // It should be possible to encode the whole output buffer.
+ output_raw_buffer_size = (output_buffer_size*2 + 2)
+
+ // The size of other stacks and queues.
+ initial_stack_size = 16
+ initial_queue_size = 16
+ initial_string_size = 16
+)
+
+// Check if the character at the specified position is an alphabetical
+// character, a digit, '_', or '-'.
+func is_alpha(b []byte, i int) bool {
+ return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'
+}
+
+// Check if the character at the specified position is a digit.
+func is_digit(b []byte, i int) bool {
+ return b[i] >= '0' && b[i] <= '9'
+}
+
+// Get the value of a digit.
+func as_digit(b []byte, i int) int {
+ return int(b[i]) - '0'
+}
+
+// Check if the character at the specified position is a hex-digit.
+func is_hex(b []byte, i int) bool {
+ return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'
+}
+
+// Get the value of a hex-digit.
+func as_hex(b []byte, i int) int {
+ bi := b[i]
+ if bi >= 'A' && bi <= 'F' {
+ return int(bi) - 'A' + 10
+ }
+ if bi >= 'a' && bi <= 'f' {
+ return int(bi) - 'a' + 10
+ }
+ return int(bi) - '0'
+}
+
+// Check if the character is ASCII.
+func is_ascii(b []byte, i int) bool {
+ return b[i] <= 0x7F
+}
+
+// Check if the character at the start of the buffer can be printed unescaped.
+func is_printable(b []byte, i int) bool {
+ return ((b[i] == 0x0A) || // . == #x0A
+ (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E
+ (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF
+ (b[i] > 0xC2 && b[i] < 0xED) ||
+ (b[i] == 0xED && b[i+1] < 0xA0) ||
+ (b[i] == 0xEE) ||
+ (b[i] == 0xEF && // #xE000 <= . <= #xFFFD
+ !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF
+ !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))
+}
+
+// Check if the character at the specified position is NUL.
+func is_z(b []byte, i int) bool {
+ return b[i] == 0x00
+}
+
+// Check if the beginning of the buffer is a BOM.
+func is_bom(b []byte, i int) bool {
+ return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF
+}
+
+// Check if the character at the specified position is space.
+func is_space(b []byte, i int) bool {
+ return b[i] == ' '
+}
+
+// Check if the character at the specified position is tab.
+func is_tab(b []byte, i int) bool {
+ return b[i] == '\t'
+}
+
+// Check if the character at the specified position is blank (space or tab).
+func is_blank(b []byte, i int) bool {
+ //return is_space(b, i) || is_tab(b, i)
+ return b[i] == ' ' || b[i] == '\t'
+}
+
+// Check if the character at the specified position is a line break.
+func is_break(b []byte, i int) bool {
+ return (b[i] == '\r' || // CR (#xD)
+ b[i] == '\n' || // LF (#xA)
+ b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)
+}
+
+func is_crlf(b []byte, i int) bool {
+ return b[i] == '\r' && b[i+1] == '\n'
+}
+
+// Check if the character is a line break or NUL.
+func is_breakz(b []byte, i int) bool {
+ //return is_break(b, i) || is_z(b, i)
+ return (
+ // is_break:
+ b[i] == '\r' || // CR (#xD)
+ b[i] == '\n' || // LF (#xA)
+ b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)
+ // is_z:
+ b[i] == 0)
+}
+
+// Check if the character is a line break, space, or NUL.
+func is_spacez(b []byte, i int) bool {
+ //return is_space(b, i) || is_breakz(b, i)
+ return (
+ // is_space:
+ b[i] == ' ' ||
+ // is_breakz:
+ b[i] == '\r' || // CR (#xD)
+ b[i] == '\n' || // LF (#xA)
+ b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)
+ b[i] == 0)
+}
+
+// Check if the character is a line break, space, tab, or NUL.
+func is_blankz(b []byte, i int) bool {
+ //return is_blank(b, i) || is_breakz(b, i)
+ return (
+ // is_blank:
+ b[i] == ' ' || b[i] == '\t' ||
+ // is_breakz:
+ b[i] == '\r' || // CR (#xD)
+ b[i] == '\n' || // LF (#xA)
+ b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+ b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)
+ b[i] == 0)
+}
+
+// Determine the width of the character.
+func width(b byte) int {
+ // Don't replace these by a switch without first
+ // confirming that it is being inlined.
+ if b&0x80 == 0x00 {
+ return 1
+ }
+ if b&0xE0 == 0xC0 {
+ return 2
+ }
+ if b&0xF0 == 0xE0 {
+ return 3
+ }
+ if b&0xF8 == 0xF0 {
+ return 4
+ }
+ return 0
+
+}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 687cf951c2e..5e52ca25c23 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -133,21 +133,6 @@ github.com/fvbommel/sortorder
## explicit
github.com/go-chi/chi
github.com/go-chi/chi/middleware
-# github.com/gobuffalo/logger v1.0.4
-## explicit; go 1.13
-github.com/gobuffalo/logger
-# github.com/gobuffalo/packd v1.0.0
-## explicit; go 1.13
-github.com/gobuffalo/packd
-github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx
-# github.com/gobuffalo/packr/v2 v2.8.1
-## explicit; go 1.13
-github.com/gobuffalo/packr/v2
-github.com/gobuffalo/packr/v2/file
-github.com/gobuffalo/packr/v2/file/resolver
-github.com/gobuffalo/packr/v2/file/resolver/encoding/hex
-github.com/gobuffalo/packr/v2/jam/parser
-github.com/gobuffalo/packr/v2/plog
# github.com/gobwas/httphead v0.1.0
## explicit; go 1.15
github.com/gobwas/httphead
@@ -161,13 +146,16 @@ github.com/gobwas/pool/pbytes
## explicit; go 1.15
github.com/gobwas/ws
github.com/gobwas/ws/wsutil
-# github.com/golang-migrate/migrate/v4 v4.3.1
-## explicit
+# github.com/golang-migrate/migrate/v4 v4.15.0-beta.1
+## explicit; go 1.16
github.com/golang-migrate/migrate/v4
github.com/golang-migrate/migrate/v4/database
github.com/golang-migrate/migrate/v4/database/sqlite3
+github.com/golang-migrate/migrate/v4/internal/url
github.com/golang-migrate/migrate/v4/source
github.com/golang-migrate/migrate/v4/source/file
+github.com/golang-migrate/migrate/v4/source/httpfs
+github.com/golang-migrate/migrate/v4/source/iofs
# github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e
## explicit
github.com/golang/groupcache/lru
@@ -189,8 +177,8 @@ github.com/h2non/filetype/types
# github.com/hashicorp/errwrap v1.0.0
## explicit
github.com/hashicorp/errwrap
-# github.com/hashicorp/go-multierror v1.0.0
-## explicit
+# github.com/hashicorp/go-multierror v1.1.0
+## explicit; go 1.14
github.com/hashicorp/go-multierror
# github.com/hashicorp/golang-lru v0.5.1
## explicit
@@ -214,8 +202,8 @@ github.com/inconshreveable/mousetrap
# github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a
## explicit
github.com/jinzhu/copier
-# github.com/jmoiron/sqlx v1.2.0
-## explicit
+# github.com/jmoiron/sqlx v1.3.1
+## explicit; go 1.10
github.com/jmoiron/sqlx
github.com/jmoiron/sqlx/reflectx
# github.com/josharian/intern v1.0.0
@@ -224,9 +212,6 @@ github.com/josharian/intern
# github.com/json-iterator/go v1.1.9
## explicit; go 1.12
github.com/json-iterator/go
-# github.com/karrick/godirwalk v1.16.1
-## explicit; go 1.13
-github.com/karrick/godirwalk
# github.com/magiconair/properties v1.8.1
## explicit
github.com/magiconair/properties
@@ -236,15 +221,6 @@ github.com/mailru/easyjson
github.com/mailru/easyjson/buffer
github.com/mailru/easyjson/jlexer
github.com/mailru/easyjson/jwriter
-# github.com/markbates/errx v1.1.0
-## explicit; go 1.12
-github.com/markbates/errx
-# github.com/markbates/oncer v1.0.0
-## explicit; go 1.12
-github.com/markbates/oncer
-# github.com/markbates/safe v1.0.1
-## explicit
-github.com/markbates/safe
# github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007
## explicit
github.com/matryer/moq
@@ -270,8 +246,8 @@ github.com/natefinch/pie
# github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
## explicit
github.com/nfnt/resize
-# github.com/pelletier/go-toml v1.2.0
-## explicit
+# github.com/pelletier/go-toml v1.7.0
+## explicit; go 1.12
github.com/pelletier/go-toml
# github.com/pkg/errors v0.9.1
## explicit
@@ -333,10 +309,10 @@ github.com/spf13/pflag
# github.com/spf13/viper v1.7.0
## explicit; go 1.12
github.com/spf13/viper
-# github.com/stretchr/objx v0.1.1
-## explicit
+# github.com/stretchr/objx v0.2.0
+## explicit; go 1.12
github.com/stretchr/objx
-# github.com/stretchr/testify v1.5.1
+# github.com/stretchr/testify v1.6.1
## explicit; go 1.13
github.com/stretchr/testify/assert
github.com/stretchr/testify/mock
@@ -376,6 +352,9 @@ github.com/vektra/mockery/v2/cmd
github.com/vektra/mockery/v2/pkg
github.com/vektra/mockery/v2/pkg/config
github.com/vektra/mockery/v2/pkg/logging
+# go.uber.org/atomic v1.6.0
+## explicit; go 1.13
+go.uber.org/atomic
# golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97
## explicit; go 1.17
golang.org/x/crypto/bcrypt
@@ -391,12 +370,12 @@ golang.org/x/image/tiff/lzw
golang.org/x/image/vp8
golang.org/x/image/vp8l
golang.org/x/image/webp
-# golang.org/x/mod v0.3.0
+# golang.org/x/mod v0.4.1
## explicit; go 1.12
golang.org/x/mod/module
golang.org/x/mod/semver
-# golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
-## explicit; go 1.11
+# golang.org/x/net v0.0.0-20210520170846-37e1c6afe023
+## explicit; go 1.17
golang.org/x/net/bpf
golang.org/x/net/context/ctxhttp
golang.org/x/net/html
@@ -409,6 +388,7 @@ golang.org/x/net/publicsuffix
# golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c
## explicit; go 1.17
golang.org/x/sys/cpu
+golang.org/x/sys/execabs
golang.org/x/sys/internal/unsafeheader
golang.org/x/sys/plan9
golang.org/x/sys/unix
@@ -416,7 +396,7 @@ golang.org/x/sys/windows
# golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
## explicit; go 1.17
golang.org/x/term
-# golang.org/x/text v0.3.3
+# golang.org/x/text v0.3.6
## explicit; go 1.11
golang.org/x/text/encoding
golang.org/x/text/encoding/charmap
@@ -436,7 +416,7 @@ golang.org/x/text/language
golang.org/x/text/runes
golang.org/x/text/transform
golang.org/x/text/unicode/norm
-# golang.org/x/tools v0.0.0-20200915031644-64986481280e
+# golang.org/x/tools v0.1.0
## explicit; go 1.12
golang.org/x/tools/go/ast/astutil
golang.org/x/tools/go/gcexportdata
@@ -465,7 +445,10 @@ gopkg.in/ini.v1
## explicit
gopkg.in/sourcemap.v1
gopkg.in/sourcemap.v1/base64vlq
-# gopkg.in/yaml.v2 v2.3.0
-## explicit
+# gopkg.in/yaml.v2 v2.4.0
+## explicit; go 1.15
gopkg.in/yaml.v2
+# gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
+## explicit
+gopkg.in/yaml.v3
# git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999