diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6b9a27367..8223fe60e 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -51,24 +51,15 @@ jobs:
echo GOPATH=$(go env GOPATH) >> $GITHUB_ENV
echo GOBIN=$(go env GOPATH)/bin >> $GITHUB_ENV
echo $(go env GOPATH)/bin >> $GITHUB_PATH
- - name: Install patched gox
- run: |
- mkdir -p "$GOPATH/src/github.com/mitchellh"
- cd "$GOPATH/src/github.com/mitchellh"
- git clone https://github.com/aslakhellesoy/gox
- cd gox
- git fetch
- git checkout db6184738b77fbd5089e5fa1112177f391c91b24
- go install github.com/mitchellh/gox
- if: github.event.inputs.run-on-runner != 'ARM64' && github.event_name != 'schedule'
- name: Install brew and node deps
run: |
curl https://raw.githubusercontent.com/Homebrew/homebrew-core/31b24d65a7210ea0a5689d5ad00dd8d1bf5211db/Formula/protobuf.rb --output protobuf.rb
curl https://raw.githubusercontent.com/Homebrew/homebrew-core/d600b1f7119f6e6a4e97fb83233b313b0468b7e4/Formula/s/swift-protobuf.rb --output swift-protobuf.rb
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install ./protobuf.rb
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install --ignore-dependencies ./swift-protobuf.rb
- HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install mingw-w64
- HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install grpcurl
+ HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install mingw-w64
+ HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install grpcurl
+ HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew tap messense/macos-cross-toolchains && brew install x86_64-unknown-linux-musl
npm i -g node-gyp
if: github.event.inputs.run-on-runner != 'ARM64' && github.event_name != 'schedule'
- name: Checkout
@@ -116,18 +107,18 @@ jobs:
make setup-go
make setup-gomobile
which gomobile
- - name: Cross-compile library mac/win
+ - name: Cross-compile library mac/win/linux
run: |
make download-tantivy-all
echo $FLAGS
mkdir -p .release
echo $SDKROOT
- gox -cgo -ldflags="$FLAGS" -osarch="darwin/amd64" --tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -output="{{.OS}}-{{.Arch}}" github.com/anyproto/anytype-heart/cmd/grpcserver
+ GOOS="darwin" GOARCH="amd64" CGO_ENABLED="1" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
echo $SDKROOT
- gox -cgo -ldflags="$FLAGS" -osarch="darwin/arm64" --tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -output="{{.OS}}-{{.Arch}}" github.com/anyproto/anytype-heart/cmd/grpcserver
- make protos-server
- CC="x86_64-w64-mingw32-gcc" CXX="x86_64-w64-mingw32-g++" gox -cgo -ldflags="$FLAGS -linkmode external -extldflags=-static" -osarch="windows/amd64" --tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -output="{{.OS}}-{{.Arch}}" github.com/anyproto/anytype-heart/cmd/grpcserver
+ GOOS="darwin" GOARCH="arm64" CGO_ENABLED="1" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -ldflags="$FLAGS" -o darwin-arm64 github.com/anyproto/anytype-heart/cmd/grpcserver
+ GOOS="windows" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-w64-mingw32-gcc" CXX="x86_64-w64-mingw32-g++" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags=-static" -o windows-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
+ GOOS="linux" GOARCH="amd64" CGO_ENABLED="1" CC="x86_64-linux-musl-gcc" go build -tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector noheic" -ldflags="$FLAGS -linkmode external -extldflags=-static" -o linux-amd64 github.com/anyproto/anytype-heart/cmd/grpcserver
ls -lha .
- name: run perf tests
run: |
@@ -199,6 +190,17 @@ jobs:
mv js_${VERSION}_${OSARCH}.tar.gz .release/
done
if: github.event_name == 'push'
+ - name: Pack server unix
+ run: |
+ declare -a arr=("linux-amd64")
+ for i in "${arr[@]}"
+ do
+ OSARCH=${i%.*}
+ cp ./${i}* ./grpc-server
+ tar -czf js_${VERSION}_${OSARCH}.tar.gz grpc-server protobuf json
+ mv js_${VERSION}_${OSARCH}.tar.gz .release/
+ done
+ if: github.event_name == 'push'
- name: Make swift protos
run: |
mkdir -p .release
@@ -271,128 +273,4 @@ jobs:
fail_on_unmatched_files: true
files: '.release/*'
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- build_linux:
- if: github.event_name == 'push'
- runs-on: ubuntu-22.04
- steps:
- - name: Install Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.22
- - name: Setup GO
- run: |
- echo GOPATH=$(go env GOPATH) >> $GITHUB_ENV
- echo GOBIN=$(go env GOPATH)/bin >> $GITHUB_ENV
- echo $(go env GOPATH)/bin >> $GITHUB_PATH
-
- - name: Setup license repositor
- uses: actions/checkout@master
- with:
- repository: anyproto/open
- ref: refs/heads/main
- path: ./open
-
- - name: Check licenses
- run: |
- cd open
- python3 tools/generate.py --platform golang
- cd ..
- sudo gem install license_finder
- license_finder inherited_decisions add open/decisions.yml
- license_finder --enabled-package-managers gomodules
-
- - name: Install patched gox
- run: |
- rm -rf $GOPATH/src/github.com/mitchellh
- mkdir -p $GOPATH/src/github.com/mitchellh
- cd $GOPATH/src/github.com/mitchellh
- git clone https://github.com/aslakhellesoy/gox
- cd gox
- git fetch
- git checkout db6184738b77fbd5089e5fa1112177f391c91b24
- go install github.com/mitchellh/gox
- - name: Apt install and node deps
- run: |
- sudo apt update
- sudo apt install -y protobuf-compiler libprotoc-dev
- curl -O https://pub-c60a000d68b544109df4fe5837762101.r2.dev/linux-compiler-musl-x86.zip
- unzip linux-compiler-musl-x86.zip -d $HOME
- npm i -g node-gyp
- - name: Checkout
- uses: actions/checkout@v3
- - uses: actions/cache@v3
- with:
- path: |
- ~/go/pkg/mod
- key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go-${{ matrix.go-version }}-
- - name: Set env vars
- env:
- UNSPLASH_KEY: ${{ secrets.UNSPLASH_KEY }}
- INHOUSE_KEY: ${{ secrets.INHOUSE_KEY }}
- run: |
- GIT_SUMMARY=$(git describe --tags --always)
- echo GOPRIVATE=github.com/anyproto >> $GITHUB_ENV
- echo "FLAGS=-X github.com/anyproto/anytype-heart/util/vcs.GitSummary=${GIT_SUMMARY} -X github.com/anyproto/anytype-heart/metrics.DefaultInHouseKey=${INHOUSE_KEY} -X github.com/anyproto/anytype-heart/util/unsplash.DefaultToken=${UNSPLASH_KEY}" >> $GITHUB_ENV
- echo VERSION=${GITHUB_REF##*/} >> $GITHUB_ENV
- git config --global url."https://${{ secrets.ANYTYPE_PAT }}@github.com/".insteadOf "https://github.com/"
- - name: Go mod download
- run: |
- go mod download
- - name: install protoc
- run: |
- HAS_SYSTEM_PROTOBUF=false make setup-protoc
- - name: setup go
- run: |
- make setup-go
- - name: Cross-compile library for linux amd64/arm64
- run: |
- make download-tantivy-all
- echo $FLAGS
- mkdir -p .release
- CXX=$HOME/linux-compiler-musl-x86/bin/x86_64-linux-musl-g++ CC=$HOME/linux-compiler-musl-x86/bin/x86_64-linux-musl-gcc gox -cgo -osarch="linux/amd64" -ldflags="$FLAGS -linkmode external -extldflags=-static" --tags="envproduction nographviz nowatchdog nosigar nomutexdeadlockdetector" -output="{{.OS}}-{{.Arch}}" github.com/anyproto/anytype-heart/cmd/grpcserver
- make protos-server
- - name: Make JS protos
- run: |
- make protos-js
- mv dist/js/pb protobuf
- mkdir -p protobuf/protos
- cp pb/protos/*.proto ./protobuf/protos
- cp pb/protos/service/*.proto ./protobuf/protos
- cp pkg/lib/pb/model/protos/*.proto ./protobuf/protos
- - name: Add system relations
- run: |
- mkdir -p json/
- cp pkg/lib/bundle/systemRelations.json ./json
- cp pkg/lib/bundle/systemTypes.json ./json
- cp pkg/lib/bundle/internalRelations.json ./json
- cp pkg/lib/bundle/internalTypes.json ./json
- - name: Upload protobuf artifact for linux build
- uses: actions/upload-artifact@v4
- with:
- name: libs
- path: |
- protobuf
- if-no-files-found: error
- retention-days: 1
- - name: Pack server unix
- run: |
- declare -a arr=("linux-amd64")
- for i in "${arr[@]}"
- do
- OSARCH=${i%.*}
- cp ./${i}* ./grpc-server
- tar -czf js_${VERSION}_${OSARCH}.tar.gz grpc-server protobuf json
- mv js_${VERSION}_${OSARCH}.tar.gz .release/
- done
- - name: Release
- if: github.event_name == 'push'
- uses: softprops/action-gh-release@v1
- with:
- prerelease: ${{ contains(github.ref, '-rc') }}
- fail_on_unmatched_files: true
- files: '.release/*'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.mockery.yaml b/.mockery.yaml
index 1a242eeba..04a57f080 100644
--- a/.mockery.yaml
+++ b/.mockery.yaml
@@ -69,10 +69,6 @@ packages:
github.com/anyproto/anytype-heart/core/block/import/common/objectcreator:
interfaces:
Service:
- BlockService:
- config:
- dir: "{{.InterfaceDir}}/mock_blockservice"
- outpkg: "mock_blockservice"
github.com/anyproto/anytype-heart/core/block/import/common/syncer:
interfaces:
BlockService:
@@ -222,4 +218,7 @@ packages:
Updater:
github.com/anyproto/anytype-heart/core/block/import/notion/api/files:
interfaces:
- Downloader:
\ No newline at end of file
+ Downloader:
+ github.com/anyproto/anytype-heart/core/block/detailservice:
+ interfaces:
+ Service:
\ No newline at end of file
diff --git a/Makefile b/Makefile
index cf84d0f5b..d253e4d40 100644
--- a/Makefile
+++ b/Makefile
@@ -339,7 +339,7 @@ endif
### Tantivy Section
REPO := anyproto/tantivy-go
-VERSION := v0.1.0
+VERSION := v0.1.1
OUTPUT_DIR := deps/libs
SHA_FILE = tantivity_sha256.txt
diff --git a/clientlibrary/service/service.pb.go b/clientlibrary/service/service.pb.go
index eeacc4cd3..1ce356774 100644
--- a/clientlibrary/service/service.pb.go
+++ b/clientlibrary/service/service.pb.go
@@ -25,326 +25,327 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
var fileDescriptor_93a29dc403579097 = []byte{
- // 5098 bytes of a gzipped FileDescriptorProto
+ // 5118 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x24, 0x49,
0x52, 0xc0, 0xb7, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x19,
0xcf, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0x7e, 0x1c, 0x7b, 0x48, 0xc8, 0x63, 0x8f, 0xbd, 0xe6, 0x6c,
0x8f, 0x71, 0xb7, 0x67, 0xa4, 0x95, 0x90, 0xa8, 0xa9, 0x0e, 0xb7, 0x0b, 0x57, 0x57, 0xd6, 0x55,
- 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0xaf, 0x17, 0x1e, 0x90, 0xee,
- 0xaf, 0xe1, 0xf1, 0x1e, 0x79, 0x84, 0xdd, 0x7f, 0xe4, 0x54, 0x99, 0x59, 0xf9, 0x11, 0x95, 0x91,
- 0x55, 0xde, 0xa7, 0x19, 0x75, 0xfc, 0x22, 0x22, 0xb3, 0x32, 0x32, 0x33, 0xf2, 0xa3, 0xca, 0xd1,
- 0xcd, 0xe2, 0xcd, 0x56, 0x51, 0x32, 0xce, 0xaa, 0xad, 0x0a, 0xca, 0x65, 0x9a, 0x40, 0xf3, 0xef,
- 0x48, 0xfc, 0x3c, 0x7c, 0x37, 0xce, 0x57, 0x7c, 0x55, 0xc0, 0x47, 0x1f, 0x1a, 0x32, 0x61, 0xf3,
- 0x79, 0x9c, 0x4f, 0x2b, 0x89, 0x7c, 0xf4, 0x81, 0x91, 0xc0, 0x12, 0x72, 0xae, 0x7e, 0x7f, 0xfa,
- 0xf3, 0xff, 0x1f, 0x44, 0xef, 0xed, 0x64, 0x29, 0xe4, 0x7c, 0x47, 0x69, 0x0c, 0xbf, 0x8a, 0xbe,
- 0xbb, 0x5d, 0x14, 0xfb, 0xc0, 0x5f, 0x41, 0x59, 0xa5, 0x2c, 0x1f, 0xde, 0x1d, 0x29, 0x07, 0xa3,
- 0xd3, 0x22, 0x19, 0x6d, 0x17, 0xc5, 0xc8, 0x08, 0x47, 0xa7, 0xf0, 0x93, 0x05, 0x54, 0xfc, 0xa3,
- 0x7b, 0x61, 0xa8, 0x2a, 0x58, 0x5e, 0xc1, 0xf0, 0x3c, 0xfa, 0xad, 0xed, 0xa2, 0x18, 0x03, 0xdf,
- 0x85, 0xba, 0x02, 0x63, 0x1e, 0x73, 0x18, 0xae, 0xb5, 0x54, 0x5d, 0x40, 0xfb, 0x78, 0xd8, 0x0d,
- 0x2a, 0x3f, 0x93, 0xe8, 0x3b, 0xb5, 0x9f, 0x8b, 0x05, 0x9f, 0xb2, 0xab, 0x7c, 0x78, 0xbb, 0xad,
- 0xa8, 0x44, 0xda, 0xf6, 0x9d, 0x10, 0xa2, 0xac, 0xbe, 0x8e, 0x7e, 0xfd, 0x75, 0x9c, 0x65, 0xc0,
- 0x77, 0x4a, 0xa8, 0x0b, 0xee, 0xea, 0x48, 0xd1, 0x48, 0xca, 0xb4, 0xdd, 0xbb, 0x41, 0x46, 0x19,
- 0xfe, 0x2a, 0xfa, 0xae, 0x94, 0x9c, 0x42, 0xc2, 0x96, 0x50, 0x0e, 0xbd, 0x5a, 0x4a, 0x48, 0x3c,
- 0xf2, 0x16, 0x84, 0x6d, 0xef, 0xb0, 0x7c, 0x09, 0x25, 0xf7, 0xdb, 0x56, 0xc2, 0xb0, 0x6d, 0x03,
- 0x29, 0xdb, 0xff, 0x30, 0x88, 0xbe, 0xbf, 0x9d, 0x24, 0x6c, 0x91, 0xf3, 0x43, 0x96, 0xc4, 0xd9,
- 0x61, 0x9a, 0x5f, 0x1e, 0xc3, 0xd5, 0xce, 0x45, 0xcd, 0xe7, 0x33, 0x18, 0x3e, 0x73, 0x9f, 0xaa,
- 0x44, 0x47, 0x9a, 0x1d, 0xd9, 0xb0, 0xf6, 0xfd, 0xc9, 0xf5, 0x94, 0x54, 0x59, 0xfe, 0x65, 0x10,
- 0xdd, 0xc0, 0x65, 0x19, 0xb3, 0x6c, 0x09, 0xa6, 0x34, 0x9f, 0x76, 0x18, 0x76, 0x71, 0x5d, 0x9e,
- 0xcf, 0xae, 0xab, 0xa6, 0x4a, 0x94, 0x45, 0xef, 0xdb, 0xe1, 0x32, 0x86, 0x4a, 0x74, 0xa7, 0x47,
- 0x74, 0x44, 0x28, 0x44, 0x7b, 0x7e, 0xdc, 0x07, 0x55, 0xde, 0xd2, 0x68, 0xa8, 0xbc, 0x65, 0xac,
- 0xd2, 0xce, 0x1e, 0x7a, 0x2d, 0x58, 0x84, 0xf6, 0xf5, 0xa8, 0x07, 0xa9, 0x5c, 0xfd, 0x69, 0xf4,
- 0x1b, 0xaf, 0x59, 0x79, 0x59, 0x15, 0x71, 0x02, 0xaa, 0x2b, 0xdc, 0x77, 0xb5, 0x1b, 0x29, 0xee,
- 0x0d, 0x0f, 0xba, 0x30, 0x2b, 0x68, 0x1b, 0xe1, 0xcb, 0x02, 0xf0, 0x18, 0x64, 0x14, 0x6b, 0x21,
- 0x15, 0xb4, 0x18, 0x52, 0xb6, 0x2f, 0xa3, 0xa1, 0xb1, 0xfd, 0xe6, 0xcf, 0x20, 0xe1, 0xdb, 0xd3,
- 0x29, 0x6e, 0x15, 0xa3, 0x2b, 0x88, 0xd1, 0xf6, 0x74, 0x4a, 0xb5, 0x8a, 0x1f, 0x55, 0xce, 0xae,
- 0xa2, 0x0f, 0x90, 0xb3, 0xc3, 0xb4, 0x12, 0x0e, 0x37, 0xc3, 0x56, 0x14, 0xa6, 0x9d, 0x8e, 0xfa,
- 0xe2, 0xca, 0xf1, 0x5f, 0x0d, 0xa2, 0xef, 0x79, 0x3c, 0x9f, 0xc2, 0x9c, 0x2d, 0x61, 0xf8, 0xa4,
- 0xdb, 0x9a, 0x24, 0xb5, 0xff, 0x8f, 0xaf, 0xa1, 0xe1, 0x09, 0x93, 0x31, 0x64, 0x90, 0x70, 0x32,
- 0x4c, 0xa4, 0xb8, 0x33, 0x4c, 0x34, 0x66, 0xf5, 0xb0, 0x46, 0xb8, 0x0f, 0x7c, 0x67, 0x51, 0x96,
- 0x90, 0x73, 0xb2, 0x2d, 0x0d, 0xd2, 0xd9, 0x96, 0x0e, 0xea, 0xa9, 0xcf, 0x3e, 0xf0, 0xed, 0x2c,
- 0x23, 0xeb, 0x23, 0xc5, 0x9d, 0xf5, 0xd1, 0x98, 0xf2, 0x90, 0x44, 0xbf, 0x69, 0x3d, 0x31, 0x7e,
- 0x90, 0x9f, 0xb3, 0x21, 0xfd, 0x2c, 0x84, 0x5c, 0xfb, 0x58, 0xeb, 0xe4, 0x3c, 0xd5, 0x78, 0xf1,
- 0xb6, 0x60, 0x25, 0xdd, 0x2c, 0x52, 0xdc, 0x59, 0x0d, 0x8d, 0x29, 0x0f, 0x7f, 0x12, 0xbd, 0xa7,
- 0x46, 0xc9, 0x66, 0x3e, 0xbb, 0xe7, 0x1d, 0x42, 0xf1, 0x84, 0x76, 0xbf, 0x83, 0x32, 0x83, 0x83,
- 0x92, 0xa9, 0xc1, 0xe7, 0xae, 0x57, 0x0f, 0x0d, 0x3d, 0xf7, 0xc2, 0x50, 0xcb, 0xf6, 0x2e, 0x64,
- 0x40, 0xda, 0x96, 0xc2, 0x0e, 0xdb, 0x1a, 0x52, 0xb6, 0xcb, 0xe8, 0x77, 0xf4, 0x63, 0xa9, 0xe7,
- 0x51, 0x21, 0xaf, 0x07, 0xe9, 0x75, 0xa2, 0xde, 0x36, 0xa4, 0x7d, 0x6d, 0xf4, 0x83, 0x5b, 0xf5,
- 0x51, 0x3d, 0xd0, 0x5f, 0x1f, 0xd4, 0xff, 0xee, 0x85, 0x21, 0x65, 0xfb, 0x1f, 0x07, 0xd1, 0x0f,
- 0x94, 0xec, 0x45, 0x1e, 0xbf, 0xc9, 0x40, 0x4c, 0x89, 0xc7, 0xc0, 0xaf, 0x58, 0x79, 0x39, 0x5e,
- 0xe5, 0x09, 0x31, 0xfd, 0xfb, 0xe1, 0x8e, 0xe9, 0x9f, 0x54, 0xb2, 0x32, 0x3e, 0x55, 0x51, 0xce,
- 0x0a, 0x9c, 0xf1, 0x35, 0x35, 0xe0, 0xac, 0xa0, 0x32, 0x3e, 0x17, 0x69, 0x59, 0x3d, 0xaa, 0x87,
- 0x4d, 0xbf, 0xd5, 0x23, 0x7b, 0x9c, 0xbc, 0x13, 0x42, 0xcc, 0xb0, 0xd5, 0x04, 0x30, 0xcb, 0xcf,
- 0xd3, 0xd9, 0x59, 0x31, 0xad, 0xc3, 0xf8, 0x91, 0x3f, 0x42, 0x2d, 0x84, 0x18, 0xb6, 0x08, 0x54,
- 0x79, 0xfb, 0x67, 0x93, 0x18, 0xa9, 0xae, 0xb4, 0x57, 0xb2, 0xf9, 0x21, 0xcc, 0xe2, 0x64, 0xa5,
- 0xfa, 0xff, 0x27, 0xa1, 0x8e, 0x87, 0x69, 0x5d, 0x88, 0x4f, 0xaf, 0xa9, 0xa5, 0xca, 0xf3, 0xdf,
- 0x83, 0xe8, 0x5e, 0x53, 0xfd, 0x8b, 0x38, 0x9f, 0x81, 0x6a, 0x4f, 0x59, 0xfa, 0xed, 0x7c, 0x7a,
- 0x0a, 0x15, 0x8f, 0x4b, 0x3e, 0xfc, 0xc2, 0x5f, 0xc9, 0x90, 0x8e, 0x2e, 0xdb, 0x8f, 0xbe, 0x95,
- 0xae, 0x69, 0xf5, 0x71, 0x3d, 0xb0, 0xa9, 0x21, 0xc0, 0x6d, 0x75, 0x21, 0xc1, 0x03, 0xc0, 0x9d,
- 0x10, 0x62, 0x5a, 0x5d, 0x08, 0x0e, 0xf2, 0x65, 0xca, 0x61, 0x1f, 0x72, 0x28, 0xdb, 0xad, 0x2e,
- 0x55, 0x5d, 0x84, 0x68, 0x75, 0x02, 0x35, 0x83, 0x8d, 0xe3, 0x4d, 0x4f, 0x8e, 0xeb, 0x01, 0x23,
- 0xad, 0xe9, 0x71, 0xa3, 0x1f, 0x6c, 0x56, 0x77, 0x96, 0xcf, 0x53, 0x58, 0xb2, 0x4b, 0xbc, 0xba,
- 0xb3, 0x4d, 0x48, 0x80, 0x58, 0xdd, 0x79, 0x41, 0x33, 0x83, 0x59, 0x7e, 0x5e, 0xa5, 0x70, 0x85,
- 0x66, 0x30, 0x5b, 0xb9, 0x16, 0x13, 0x33, 0x98, 0x07, 0x53, 0x1e, 0x8e, 0xa3, 0x5f, 0x13, 0xc2,
- 0x3f, 0x62, 0x69, 0x3e, 0xbc, 0xe9, 0x51, 0xaa, 0x05, 0xda, 0xea, 0x2d, 0x1a, 0x40, 0x25, 0xae,
- 0x7f, 0xdd, 0x89, 0xf3, 0x04, 0x32, 0x6f, 0x89, 0x8d, 0x38, 0x58, 0x62, 0x07, 0x33, 0xa9, 0x83,
- 0x10, 0xd6, 0xe3, 0xd7, 0xf8, 0x22, 0x2e, 0xd3, 0x7c, 0x36, 0xf4, 0xe9, 0x5a, 0x72, 0x22, 0x75,
- 0xf0, 0x71, 0x28, 0x84, 0x95, 0xe2, 0x76, 0x51, 0x94, 0xf5, 0xb0, 0xe8, 0x0b, 0x61, 0x17, 0x09,
- 0x86, 0x70, 0x0b, 0xf5, 0x7b, 0xdb, 0x85, 0x24, 0x4b, 0xf3, 0xa0, 0x37, 0x85, 0xf4, 0xf1, 0x66,
- 0x50, 0x14, 0xbc, 0x87, 0x10, 0x2f, 0xa1, 0xa9, 0x99, 0xef, 0xc9, 0xd8, 0x40, 0x30, 0x78, 0x11,
- 0x68, 0xd6, 0x69, 0x42, 0x7c, 0x14, 0x5f, 0x42, 0xfd, 0x80, 0xa1, 0x9e, 0xd7, 0x86, 0x3e, 0x7d,
- 0x87, 0x20, 0xd6, 0x69, 0x7e, 0x52, 0xb9, 0x5a, 0x44, 0x1f, 0x08, 0xf9, 0x49, 0x5c, 0xf2, 0x34,
- 0x49, 0x8b, 0x38, 0x6f, 0xf2, 0x7f, 0x5f, 0xbf, 0x6e, 0x51, 0xda, 0xe5, 0x66, 0x4f, 0x5a, 0xb9,
- 0xfd, 0xcf, 0x41, 0x74, 0x1b, 0xfb, 0x3d, 0x81, 0x72, 0x9e, 0x8a, 0x65, 0x64, 0x25, 0x07, 0xe1,
- 0xe1, 0xe7, 0x61, 0xa3, 0x2d, 0x05, 0x5d, 0x9a, 0x1f, 0x5e, 0x5f, 0x51, 0x15, 0xec, 0x8f, 0xa3,
- 0x48, 0x2e, 0x57, 0xc4, 0x92, 0xd2, 0xed, 0xb5, 0x6a, 0x1d, 0xe3, 0xac, 0x27, 0x6f, 0x07, 0x08,
- 0x33, 0x55, 0xc8, 0xdf, 0xc5, 0x4a, 0x79, 0xe8, 0xd5, 0x10, 0x22, 0x62, 0xaa, 0x40, 0x08, 0x2e,
- 0xe8, 0xf8, 0x82, 0x5d, 0xf9, 0x0b, 0x5a, 0x4b, 0xc2, 0x05, 0x55, 0x84, 0xd9, 0xbb, 0x52, 0x05,
- 0xf5, 0xed, 0x5d, 0x35, 0xc5, 0x08, 0xed, 0x5d, 0x61, 0x46, 0x19, 0x66, 0xd1, 0x6f, 0xdb, 0x86,
- 0x9f, 0x33, 0x76, 0x39, 0x8f, 0xcb, 0xcb, 0xe1, 0x63, 0x5a, 0xb9, 0x61, 0xb4, 0xa3, 0xf5, 0x5e,
- 0xac, 0x19, 0x16, 0x6c, 0x87, 0x75, 0xa2, 0x71, 0x56, 0x66, 0x68, 0x58, 0x70, 0x6c, 0x28, 0x84,
- 0x18, 0x16, 0x08, 0xd4, 0x24, 0xd0, 0xca, 0xdb, 0x45, 0x2c, 0xd6, 0xed, 0xfe, 0x87, 0x22, 0x85,
- 0x44, 0x02, 0xdd, 0x82, 0xcc, 0xac, 0x60, 0xd7, 0x64, 0x0c, 0x78, 0x25, 0xe6, 0x14, 0x6d, 0x0c,
- 0xd4, 0x4a, 0xcc, 0x83, 0xe1, 0xf0, 0xdc, 0x2f, 0xe3, 0xe2, 0xc2, 0x1f, 0x9e, 0x42, 0x14, 0x0e,
- 0xcf, 0x06, 0xc1, 0xb1, 0x34, 0x86, 0xb8, 0x4c, 0x2e, 0xfc, 0xb1, 0x24, 0x65, 0xe1, 0x58, 0xd2,
- 0x0c, 0x8e, 0x25, 0x29, 0x78, 0x9d, 0xf2, 0x8b, 0x23, 0xe0, 0xb1, 0x3f, 0x96, 0x5c, 0x26, 0x1c,
- 0x4b, 0x2d, 0xd6, 0x64, 0x49, 0xb6, 0xc3, 0xf1, 0xe2, 0x4d, 0x95, 0x94, 0xe9, 0x1b, 0x18, 0x06,
- 0xac, 0x68, 0x88, 0xc8, 0x92, 0x48, 0xd8, 0x4c, 0x00, 0xca, 0x67, 0x23, 0x3b, 0x98, 0x56, 0x68,
- 0x02, 0x68, 0x6c, 0x58, 0x04, 0x31, 0x01, 0xf8, 0x49, 0x5c, 0xbd, 0xfd, 0x92, 0x2d, 0x8a, 0xaa,
- 0xa3, 0x7a, 0x08, 0x0a, 0x57, 0xaf, 0x0d, 0x2b, 0x9f, 0x6f, 0xa3, 0xdf, 0xb5, 0x1f, 0xe9, 0x59,
- 0x5e, 0x69, 0xaf, 0x9b, 0xf4, 0x73, 0xb2, 0x30, 0x62, 0xcb, 0x2b, 0x80, 0x9b, 0x14, 0xa8, 0xf1,
- 0xcc, 0x77, 0x81, 0xc7, 0x69, 0x56, 0x0d, 0x1f, 0xf8, 0x6d, 0x34, 0x72, 0x22, 0x05, 0xf2, 0x71,
- 0xb8, 0xcf, 0xee, 0x2e, 0x8a, 0x2c, 0x4d, 0xda, 0x7b, 0x9f, 0x4a, 0x57, 0x8b, 0xc3, 0x7d, 0xd6,
- 0xc6, 0xf0, 0xf8, 0x36, 0x06, 0x2e, 0xff, 0x33, 0x59, 0x15, 0xe0, 0x1f, 0xdf, 0x1c, 0x24, 0x3c,
- 0xbe, 0x61, 0x14, 0xd7, 0x67, 0x0c, 0xfc, 0x30, 0x5e, 0xb1, 0x05, 0x31, 0x06, 0x69, 0x71, 0xb8,
- 0x3e, 0x36, 0x66, 0xb2, 0x10, 0xed, 0xe1, 0x20, 0xe7, 0x50, 0xe6, 0x71, 0xb6, 0x97, 0xc5, 0xb3,
- 0x6a, 0x48, 0xf4, 0x1b, 0x97, 0x22, 0xb2, 0x10, 0x9a, 0xf6, 0x3c, 0xc6, 0x83, 0x6a, 0x2f, 0x5e,
- 0xb2, 0x32, 0xe5, 0xf4, 0x63, 0x34, 0x48, 0xe7, 0x63, 0x74, 0x50, 0xaf, 0xb7, 0xed, 0x32, 0xb9,
- 0x48, 0x97, 0x30, 0x0d, 0x78, 0x6b, 0x90, 0x1e, 0xde, 0x2c, 0xd4, 0xd3, 0x68, 0x63, 0xb6, 0x28,
- 0x13, 0x20, 0x1b, 0x4d, 0x8a, 0x3b, 0x1b, 0x4d, 0x63, 0xca, 0xc3, 0xdf, 0x0e, 0xa2, 0xdf, 0x93,
- 0x52, 0x7b, 0x43, 0x72, 0x37, 0xae, 0x2e, 0xde, 0xb0, 0xb8, 0x9c, 0x0e, 0x3f, 0xf6, 0xd9, 0xf1,
- 0xa2, 0xda, 0xf5, 0xd3, 0xeb, 0xa8, 0xe0, 0xc7, 0x7a, 0x98, 0x56, 0x56, 0x8f, 0xf3, 0x3e, 0x56,
- 0x07, 0x09, 0x3f, 0x56, 0x8c, 0xe2, 0x01, 0x44, 0xc8, 0xe5, 0xe2, 0xff, 0x01, 0xa9, 0xef, 0xee,
- 0x00, 0xac, 0x75, 0x72, 0x78, 0x7c, 0xac, 0x85, 0x6e, 0xb4, 0x6c, 0x52, 0x36, 0xfc, 0x11, 0x33,
- 0xea, 0x8b, 0x93, 0x9e, 0x75, 0xaf, 0x08, 0x7b, 0x6e, 0xf5, 0x8c, 0x51, 0x5f, 0x9c, 0xf0, 0x6c,
- 0x0d, 0x6b, 0x21, 0xcf, 0x9e, 0xa1, 0x6d, 0xd4, 0x17, 0xc7, 0x19, 0x85, 0x62, 0x9a, 0x79, 0xe1,
- 0x71, 0xc0, 0x0e, 0x9e, 0x1b, 0xd6, 0x7b, 0xb1, 0xca, 0xe1, 0xdf, 0x0f, 0xa2, 0xef, 0x1b, 0x8f,
- 0x47, 0x6c, 0x9a, 0x9e, 0xaf, 0x24, 0xf4, 0x2a, 0xce, 0x16, 0x50, 0x0d, 0x9f, 0x52, 0xd6, 0xda,
- 0xac, 0x2e, 0xc1, 0xb3, 0x6b, 0xe9, 0xe0, 0xbe, 0xb3, 0x5d, 0x14, 0xd9, 0x6a, 0x02, 0xf3, 0x22,
- 0x23, 0xfb, 0x8e, 0x83, 0x84, 0xfb, 0x0e, 0x46, 0x71, 0xa6, 0x39, 0x61, 0x75, 0x1e, 0xeb, 0xcd,
- 0x34, 0x85, 0x28, 0x9c, 0x69, 0x36, 0x08, 0xce, 0x95, 0x26, 0x6c, 0x87, 0x65, 0x19, 0x24, 0xbc,
- 0x7d, 0xa8, 0xa9, 0x35, 0x0d, 0x11, 0xce, 0x95, 0x10, 0x69, 0xd6, 0xff, 0xcd, 0x9a, 0x2b, 0x2e,
- 0xe1, 0xf9, 0xea, 0x30, 0xcd, 0x2f, 0x87, 0xfe, 0xb4, 0xc0, 0x00, 0xc4, 0xfa, 0xdf, 0x0b, 0xe2,
- 0xb5, 0xdd, 0x59, 0x3e, 0x65, 0xfe, 0xb5, 0x5d, 0x2d, 0x09, 0xaf, 0xed, 0x14, 0x81, 0x4d, 0x9e,
- 0x02, 0x65, 0xb2, 0x96, 0x84, 0x4d, 0x2a, 0xc2, 0x37, 0x14, 0xaa, 0x5d, 0x62, 0x72, 0x28, 0x44,
- 0xfb, 0xc2, 0x6b, 0x9d, 0x1c, 0x8e, 0xd0, 0x66, 0x91, 0xb7, 0x07, 0x3c, 0xb9, 0xf0, 0x47, 0xa8,
- 0x83, 0x84, 0x23, 0x14, 0xa3, 0xb8, 0x4a, 0x13, 0xa6, 0x17, 0xa9, 0x0f, 0xfc, 0xf1, 0xd1, 0x5a,
- 0xa0, 0xae, 0x75, 0x72, 0x78, 0x69, 0x74, 0x30, 0x17, 0xcf, 0xcc, 0x1b, 0xe4, 0x52, 0x16, 0x5e,
- 0x1a, 0x69, 0x06, 0x97, 0x5e, 0x0a, 0xea, 0xc7, 0xe9, 0x2f, 0xbd, 0x91, 0x87, 0x4b, 0xef, 0x70,
- 0xca, 0xc9, 0xbf, 0x0f, 0xa2, 0x9b, 0xb6, 0x97, 0x63, 0x56, 0xf7, 0x91, 0x57, 0x71, 0x96, 0x4e,
- 0x63, 0x0e, 0x13, 0x76, 0x09, 0x39, 0xda, 0xb7, 0x71, 0x4b, 0x2b, 0xf9, 0x91, 0xa3, 0x40, 0xec,
- 0xdb, 0xf4, 0x52, 0xc4, 0x71, 0x22, 0xe9, 0xb3, 0x0a, 0x76, 0xe2, 0x8a, 0x18, 0xc9, 0x1c, 0x24,
- 0x1c, 0x27, 0x18, 0xc5, 0xf9, 0xaa, 0x94, 0xbf, 0x78, 0x5b, 0x40, 0x99, 0x42, 0x9e, 0x80, 0x3f,
- 0x5f, 0xc5, 0x54, 0x38, 0x5f, 0xf5, 0xd0, 0xad, 0x6d, 0x0d, 0x3d, 0x38, 0xb5, 0xef, 0x25, 0x60,
- 0x22, 0x70, 0x2f, 0x81, 0x40, 0x71, 0x25, 0x0d, 0xe0, 0xdd, 0x1a, 0x6c, 0x59, 0x09, 0x6e, 0x0d,
- 0xd2, 0x74, 0x6b, 0xb3, 0x48, 0x33, 0xe3, 0xba, 0x9b, 0x74, 0x14, 0x7d, 0x6c, 0x77, 0x97, 0xf5,
- 0x5e, 0xac, 0x7f, 0x77, 0xea, 0x14, 0xb2, 0x58, 0x4c, 0x21, 0x81, 0x2d, 0xa0, 0x86, 0xe9, 0xb3,
- 0x3b, 0x65, 0xb1, 0xca, 0xe1, 0x5f, 0x0f, 0xa2, 0x8f, 0x7c, 0x1e, 0x5f, 0x16, 0xc2, 0xef, 0x93,
- 0x6e, 0x5b, 0x92, 0x24, 0x2e, 0x5e, 0x84, 0x35, 0x54, 0x19, 0xfe, 0x3c, 0xfa, 0xb0, 0x11, 0x99,
- 0x7b, 0x19, 0xaa, 0x00, 0x6e, 0x02, 0xa5, 0xcb, 0x8f, 0x39, 0xed, 0x7e, 0xab, 0x37, 0x6f, 0xd6,
- 0x26, 0x6e, 0xb9, 0x2a, 0xb4, 0x36, 0xd1, 0x36, 0x94, 0x98, 0x58, 0x9b, 0x78, 0x30, 0x3c, 0x53,
- 0x37, 0x48, 0xdd, 0x4f, 0x7c, 0x63, 0x9c, 0x36, 0x61, 0xf7, 0x92, 0x87, 0xdd, 0x20, 0x8e, 0x9d,
- 0x46, 0xac, 0x96, 0x04, 0x8f, 0x43, 0x16, 0xd0, 0xb2, 0x60, 0xbd, 0x17, 0xab, 0x1c, 0xfe, 0x65,
- 0xf4, 0xbd, 0x56, 0xc5, 0xf6, 0x20, 0xe6, 0x8b, 0x12, 0xa6, 0xc3, 0xad, 0x8e, 0x72, 0x37, 0xa0,
- 0x76, 0xfd, 0xa4, 0xbf, 0x42, 0x2b, 0x77, 0x6d, 0x38, 0xd9, 0xc4, 0xba, 0x0c, 0x4f, 0x43, 0x26,
- 0x5d, 0x36, 0x98, 0xbb, 0xd2, 0x3a, 0xad, 0xe5, 0xa7, 0x1d, 0xc8, 0xdb, 0xcb, 0x38, 0xcd, 0xc4,
- 0x71, 0xc9, 0xc7, 0x21, 0xa3, 0x0e, 0x1a, 0x5c, 0x7e, 0x92, 0x2a, 0xad, 0x51, 0x52, 0xf4, 0x37,
- 0x6b, 0xd9, 0xb2, 0x41, 0xf7, 0x4a, 0xcf, 0xaa, 0x65, 0xb3, 0x27, 0xad, 0xdc, 0xf2, 0x66, 0xdb,
- 0xae, 0xfe, 0xd9, 0x0e, 0x72, 0x9f, 0x57, 0xa5, 0xea, 0x89, 0xf4, 0xcd, 0x9e, 0xb4, 0xf2, 0xfa,
- 0x17, 0xd1, 0x87, 0x6d, 0xaf, 0x6a, 0x52, 0xd8, 0xea, 0x34, 0x85, 0xe6, 0x85, 0x27, 0xfd, 0x15,
- 0x4c, 0xaa, 0xff, 0x65, 0x5a, 0x71, 0x56, 0xae, 0xc6, 0x17, 0xec, 0xaa, 0xb9, 0x7b, 0xec, 0xf6,
- 0x56, 0x05, 0x8c, 0x2c, 0x82, 0x48, 0xf5, 0xfd, 0x64, 0xcb, 0x95, 0xb9, 0xa3, 0x5c, 0x11, 0xae,
- 0x2c, 0xa2, 0xc3, 0x95, 0x4b, 0x9a, 0xb1, 0xaa, 0xa9, 0x95, 0xb9, 0x50, 0xbd, 0xe6, 0x2f, 0x6a,
- 0xfb, 0x52, 0xf5, 0xc3, 0x6e, 0xd0, 0x64, 0x0f, 0x4a, 0xbc, 0x9b, 0x9e, 0x9f, 0xeb, 0x3a, 0xf9,
- 0x4b, 0x6a, 0x23, 0x44, 0xf6, 0x40, 0xa0, 0x26, 0x19, 0xdd, 0x4b, 0x33, 0x10, 0x67, 0x6f, 0x2f,
- 0xcf, 0xcf, 0x33, 0x16, 0x4f, 0x51, 0x32, 0x5a, 0x8b, 0x47, 0xb6, 0x9c, 0x48, 0x46, 0x7d, 0x9c,
- 0x39, 0x79, 0xa9, 0xa5, 0xa7, 0x90, 0xb0, 0x3c, 0x49, 0x33, 0x7c, 0x15, 0x4b, 0x68, 0x6a, 0x21,
- 0x71, 0xf2, 0xd2, 0x82, 0xcc, 0x24, 0x55, 0x8b, 0xea, 0x6e, 0xdf, 0x94, 0xff, 0x7e, 0x5b, 0xd1,
- 0x12, 0x13, 0x93, 0x94, 0x07, 0x33, 0x6b, 0xb2, 0x5a, 0x78, 0x56, 0x08, 0xe3, 0xb7, 0xda, 0x5a,
- 0x52, 0x42, 0xac, 0xc9, 0x5c, 0xc2, 0xac, 0x2d, 0xea, 0xdf, 0x77, 0xd9, 0x55, 0x2e, 0x8c, 0xde,
- 0x69, 0xab, 0x34, 0x32, 0x62, 0x6d, 0x81, 0x19, 0x65, 0xf8, 0xc7, 0xd1, 0xaf, 0x0a, 0xc3, 0x25,
- 0x2b, 0x86, 0x37, 0x3c, 0x0a, 0xa5, 0x75, 0x6b, 0xea, 0x26, 0x29, 0x37, 0x97, 0xff, 0x74, 0x6c,
- 0x9c, 0x55, 0xf1, 0x0c, 0x86, 0xf7, 0x88, 0x16, 0x17, 0x52, 0xe2, 0xf2, 0x5f, 0x9b, 0x72, 0xa3,
- 0xe2, 0x98, 0x4d, 0x95, 0x75, 0x4f, 0x0d, 0xb5, 0x30, 0x14, 0x15, 0x36, 0x64, 0x8e, 0x4b, 0x8e,
- 0xe3, 0x65, 0x3a, 0xd3, 0x13, 0x8e, 0x1c, 0xb7, 0x2a, 0x74, 0x5c, 0x62, 0x98, 0x91, 0x05, 0x11,
- 0xc7, 0x25, 0x24, 0xac, 0x7c, 0xfe, 0xdb, 0x20, 0xba, 0x65, 0x98, 0xfd, 0x66, 0x17, 0xeb, 0x20,
- 0x3f, 0x67, 0xaf, 0x53, 0x7e, 0x71, 0x98, 0xe6, 0x97, 0xd5, 0xf0, 0x33, 0xca, 0xa4, 0x9f, 0xd7,
- 0x45, 0xf9, 0xfc, 0xda, 0x7a, 0x26, 0x83, 0x6c, 0xb6, 0x78, 0xcc, 0xb9, 0xa8, 0xd4, 0x40, 0x19,
- 0xa4, 0xde, 0x09, 0xc2, 0x1c, 0x91, 0x41, 0x86, 0x78, 0xd3, 0xc4, 0xda, 0x79, 0xc6, 0x72, 0xdc,
- 0xc4, 0xc6, 0x42, 0x2d, 0x24, 0x9a, 0xb8, 0x05, 0x99, 0xf1, 0xb8, 0x11, 0xc9, 0xdd, 0x88, 0xed,
- 0x2c, 0x43, 0xe3, 0xb1, 0x56, 0xd5, 0x00, 0x31, 0x1e, 0x7b, 0x41, 0xe5, 0xe7, 0x34, 0xfa, 0x4e,
- 0xfd, 0x48, 0x4f, 0x4a, 0x58, 0xa6, 0x80, 0x8f, 0xf0, 0x2d, 0x09, 0xd1, 0xff, 0x5d, 0xc2, 0xf4,
- 0xac, 0xb3, 0xbc, 0x2a, 0xb2, 0xb8, 0xba, 0x50, 0x07, 0xaf, 0x6e, 0x9d, 0x1b, 0x21, 0x3e, 0x7a,
- 0xbd, 0xdf, 0x41, 0x99, 0x41, 0xbd, 0x91, 0xe9, 0x21, 0xe6, 0x81, 0x5f, 0xb5, 0x35, 0xcc, 0xac,
- 0x75, 0x72, 0x66, 0x27, 0x78, 0x3f, 0xce, 0x32, 0x28, 0x57, 0x8d, 0xec, 0x28, 0xce, 0xd3, 0x73,
- 0xa8, 0x38, 0xda, 0x09, 0x56, 0xd4, 0x08, 0x63, 0xc4, 0x4e, 0x70, 0x00, 0x37, 0xd9, 0x3c, 0xf2,
- 0x7c, 0x90, 0x4f, 0xe1, 0x2d, 0xca, 0xe6, 0xb1, 0x1d, 0xc1, 0x10, 0xd9, 0x3c, 0xc5, 0x9a, 0x1d,
- 0xd1, 0xe7, 0x19, 0x4b, 0x2e, 0xd5, 0x14, 0xe0, 0x36, 0xb0, 0x90, 0xe0, 0x39, 0xe0, 0x4e, 0x08,
- 0x31, 0x93, 0x80, 0x10, 0x9c, 0x42, 0x91, 0xc5, 0x09, 0xbe, 0xc7, 0x21, 0x75, 0x94, 0x8c, 0x98,
- 0x04, 0x30, 0x83, 0x8a, 0xab, 0xee, 0x87, 0xf8, 0x8a, 0x8b, 0xae, 0x87, 0xdc, 0x09, 0x21, 0x66,
- 0x1a, 0x14, 0x82, 0x71, 0x91, 0xa5, 0x1c, 0x75, 0x03, 0xa9, 0x21, 0x24, 0x44, 0x37, 0x70, 0x09,
- 0x64, 0xf2, 0x08, 0xca, 0x19, 0x78, 0x4d, 0x0a, 0x49, 0xd0, 0x64, 0x43, 0x98, 0xeb, 0x7e, 0xb2,
- 0xee, 0xac, 0x58, 0xa1, 0xeb, 0x7e, 0xaa, 0x5a, 0xac, 0x58, 0x11, 0xd7, 0xfd, 0x1c, 0x00, 0x15,
- 0xf1, 0x24, 0xae, 0xb8, 0xbf, 0x88, 0x42, 0x12, 0x2c, 0x62, 0x43, 0x98, 0x39, 0x5a, 0x16, 0x71,
- 0xc1, 0xd1, 0x1c, 0xad, 0x0a, 0x60, 0x9d, 0xcc, 0xde, 0x24, 0xe5, 0x66, 0x24, 0x91, 0xad, 0x02,
- 0x7c, 0x2f, 0x85, 0x6c, 0x5a, 0xa1, 0x91, 0x44, 0x3d, 0xf7, 0x46, 0x4a, 0x8c, 0x24, 0x6d, 0x0a,
- 0x85, 0x92, 0xda, 0x37, 0xf6, 0xd5, 0x0e, 0x6d, 0x19, 0xdf, 0x09, 0x21, 0x66, 0x7c, 0x6a, 0x0a,
- 0xbd, 0x13, 0x97, 0x65, 0x5a, 0x4f, 0xfe, 0x0f, 0xfc, 0x05, 0x6a, 0xe4, 0xc4, 0xf8, 0xe4, 0xe3,
- 0x50, 0xf7, 0x6a, 0x06, 0x6e, 0x5f, 0xc1, 0xf0, 0xd0, 0x7d, 0x37, 0xc8, 0x98, 0x8c, 0x53, 0x48,
- 0xac, 0xa3, 0x45, 0xdf, 0xd3, 0xf4, 0x9c, 0x2c, 0x3e, 0xe8, 0xc2, 0xac, 0xeb, 0xf8, 0xda, 0xc5,
- 0x11, 0x5b, 0xc2, 0x84, 0xbd, 0x78, 0x9b, 0x56, 0x3c, 0xcd, 0x67, 0x6a, 0xe6, 0x7e, 0x46, 0x58,
- 0xf2, 0xc1, 0xc4, 0x75, 0xfc, 0x4e, 0x25, 0x93, 0x40, 0xa0, 0xb2, 0x1c, 0xc3, 0x95, 0x37, 0x81,
- 0xc0, 0x16, 0x35, 0x47, 0x24, 0x10, 0x21, 0xde, 0xec, 0xa3, 0x68, 0xe7, 0xea, 0x9d, 0xc5, 0x09,
- 0x6b, 0x72, 0x39, 0xca, 0x1a, 0x06, 0x89, 0xa5, 0x6c, 0x50, 0xc1, 0xac, 0x2f, 0xb5, 0x7f, 0xd3,
- 0xc5, 0x1e, 0x12, 0x76, 0xda, 0xdd, 0xec, 0x51, 0x0f, 0xd2, 0xe3, 0xca, 0x9c, 0x8f, 0x53, 0xae,
- 0xda, 0xc7, 0xe3, 0x8f, 0x7a, 0x90, 0xd6, 0x9e, 0x8c, 0x5d, 0xad, 0xe7, 0x71, 0x72, 0x39, 0x2b,
- 0xd9, 0x22, 0x9f, 0xee, 0xb0, 0x8c, 0x95, 0x68, 0x4f, 0xc6, 0x29, 0x35, 0x42, 0x89, 0x3d, 0x99,
- 0x0e, 0x15, 0x93, 0xc1, 0xd9, 0xa5, 0xd8, 0xce, 0xd2, 0x19, 0x5e, 0x51, 0x3b, 0x86, 0x04, 0x40,
- 0x64, 0x70, 0x5e, 0xd0, 0x13, 0x44, 0x72, 0xc5, 0xcd, 0xd3, 0x24, 0xce, 0xa4, 0xbf, 0x2d, 0xda,
- 0x8c, 0x03, 0x76, 0x06, 0x91, 0x47, 0xc1, 0x53, 0xcf, 0xc9, 0xa2, 0xcc, 0x0f, 0x72, 0xce, 0xc8,
- 0x7a, 0x36, 0x40, 0x67, 0x3d, 0x2d, 0x10, 0x0d, 0xab, 0x13, 0x78, 0x5b, 0x97, 0xa6, 0xfe, 0xc7,
- 0x37, 0xac, 0xd6, 0xbf, 0x8f, 0x94, 0x3c, 0x34, 0xac, 0x22, 0x0e, 0x55, 0x46, 0x39, 0x91, 0x01,
- 0x13, 0xd0, 0x76, 0xc3, 0xe4, 0x61, 0x37, 0xe8, 0xf7, 0x33, 0xe6, 0xab, 0x0c, 0x42, 0x7e, 0x04,
- 0xd0, 0xc7, 0x4f, 0x03, 0x9a, 0xed, 0x16, 0xa7, 0x3e, 0x17, 0x90, 0x5c, 0xb6, 0xae, 0xfb, 0xb8,
- 0x05, 0x95, 0x08, 0xb1, 0xdd, 0x42, 0xa0, 0xfe, 0x26, 0x3a, 0x48, 0x58, 0x1e, 0x6a, 0xa2, 0x5a,
- 0xde, 0xa7, 0x89, 0x14, 0x67, 0x16, 0xbf, 0x5a, 0xaa, 0x22, 0x53, 0x36, 0xd3, 0x3a, 0x61, 0xc1,
- 0x86, 0x88, 0xc5, 0x2f, 0x09, 0x9b, 0x9c, 0x1c, 0xfb, 0x3c, 0x6a, 0xdf, 0x1d, 0x6e, 0x59, 0x39,
- 0xa2, 0xef, 0x0e, 0x53, 0x2c, 0x5d, 0x49, 0x19, 0x23, 0x1d, 0x56, 0xdc, 0x38, 0xd9, 0xe8, 0x07,
- 0x9b, 0x25, 0x8f, 0xe3, 0x73, 0x27, 0x83, 0xb8, 0x94, 0x5e, 0x37, 0x03, 0x86, 0x0c, 0x46, 0x2c,
- 0x79, 0x02, 0x38, 0x1a, 0xc2, 0x1c, 0xcf, 0x3b, 0x2c, 0xe7, 0x90, 0x73, 0xdf, 0x10, 0xe6, 0x1a,
- 0x53, 0x60, 0x68, 0x08, 0xa3, 0x14, 0x50, 0xdc, 0x8a, 0xfd, 0x20, 0xe0, 0xc7, 0xf1, 0xdc, 0x9b,
- 0xb1, 0xc9, 0xbd, 0x1e, 0x29, 0x0f, 0xc5, 0x2d, 0xe2, 0xac, 0x03, 0x37, 0xdb, 0xcb, 0x24, 0x2e,
- 0x67, 0x7a, 0x77, 0x63, 0x3a, 0x7c, 0x42, 0xdb, 0x71, 0x49, 0xe2, 0xc0, 0x2d, 0xac, 0x81, 0x86,
- 0x9d, 0x83, 0x79, 0x3c, 0xd3, 0x35, 0xf5, 0xd4, 0x40, 0xc8, 0x5b, 0x55, 0x7d, 0xd8, 0x0d, 0x22,
- 0x3f, 0xaf, 0xd2, 0x29, 0xb0, 0x80, 0x1f, 0x21, 0xef, 0xe3, 0x07, 0x83, 0x28, 0x7b, 0xab, 0xeb,
- 0x2d, 0x57, 0x74, 0xdb, 0xf9, 0x54, 0xad, 0x63, 0x47, 0xc4, 0xe3, 0x41, 0x5c, 0x28, 0x7b, 0x23,
- 0x78, 0xd4, 0x47, 0x9b, 0x0d, 0xda, 0x50, 0x1f, 0xd5, 0xfb, 0xaf, 0x7d, 0xfa, 0xa8, 0x0f, 0x56,
- 0x3e, 0x7f, 0xaa, 0xfa, 0xe8, 0x6e, 0xcc, 0xe3, 0x3a, 0x6f, 0x7f, 0x95, 0xc2, 0x95, 0x5a, 0x08,
- 0x7b, 0xea, 0xdb, 0x50, 0x23, 0xf1, 0xd2, 0x18, 0x5a, 0x15, 0x6f, 0xf5, 0xe6, 0x03, 0xbe, 0xd5,
- 0x0a, 0xa1, 0xd3, 0x37, 0x5a, 0x2a, 0x6c, 0xf5, 0xe6, 0x03, 0xbe, 0xd5, 0xdb, 0xa8, 0x9d, 0xbe,
- 0xd1, 0x2b, 0xa9, 0x5b, 0xbd, 0x79, 0xe5, 0xfb, 0x6f, 0x9a, 0x8e, 0x6b, 0x3b, 0xaf, 0xf3, 0xb0,
- 0x84, 0xa7, 0x4b, 0xf0, 0xa5, 0x93, 0xae, 0x3d, 0x8d, 0x86, 0xd2, 0x49, 0x5a, 0xc5, 0xfa, 0x84,
- 0x89, 0xaf, 0x14, 0x27, 0xac, 0x4a, 0xc5, 0x81, 0xf9, 0xb3, 0x1e, 0x46, 0x1b, 0x38, 0xb4, 0x68,
- 0x0a, 0x29, 0x99, 0xe3, 0x46, 0x07, 0x35, 0xb7, 0x7b, 0x37, 0x02, 0xf6, 0xda, 0x97, 0x7c, 0x37,
- 0x7b, 0xd2, 0xe6, 0xe0, 0xcf, 0x61, 0xec, 0x13, 0xc7, 0x50, 0xab, 0x7a, 0x0f, 0x1d, 0x9f, 0xf4,
- 0x57, 0x50, 0xee, 0xff, 0xae, 0x59, 0x57, 0x60, 0xff, 0xaa, 0x13, 0x3c, 0xed, 0x63, 0x11, 0x75,
- 0x84, 0x67, 0xd7, 0xd2, 0x51, 0x05, 0xf9, 0xaf, 0x41, 0x74, 0xc7, 0x5b, 0x10, 0xf7, 0xec, 0xf9,
- 0xf7, 0xfb, 0xd8, 0xf6, 0x9f, 0x41, 0x7f, 0xf1, 0x6d, 0x54, 0x55, 0xe9, 0xfe, 0xa9, 0x59, 0xde,
- 0x37, 0x1a, 0xe2, 0x0d, 0x8c, 0x97, 0xe5, 0x14, 0x4a, 0xd5, 0x63, 0x43, 0x41, 0x67, 0x60, 0xdc,
- 0x6f, 0x3f, 0xbd, 0xa6, 0x96, 0xf5, 0xb9, 0x1d, 0x07, 0x56, 0x6f, 0xd6, 0x59, 0xe5, 0x09, 0x59,
- 0xb6, 0x68, 0x5c, 0xa0, 0xcf, 0xae, 0xab, 0x46, 0xf5, 0x64, 0x0b, 0x16, 0x6f, 0xef, 0x3f, 0xeb,
- 0x69, 0xd8, 0x79, 0x9f, 0xff, 0x93, 0xeb, 0x29, 0xa9, 0xb2, 0xfc, 0x7c, 0x10, 0xdd, 0x77, 0x58,
- 0x73, 0xda, 0x81, 0xf6, 0x64, 0x7e, 0x14, 0xb0, 0x4f, 0x29, 0xe9, 0xc2, 0xfd, 0xc1, 0xb7, 0x53,
- 0x36, 0xdf, 0xa6, 0x71, 0x54, 0xf6, 0xd2, 0x8c, 0x43, 0xd9, 0xfe, 0x36, 0x8d, 0x6b, 0x57, 0x52,
- 0x23, 0xfa, 0xdb, 0x34, 0x01, 0xdc, 0xfa, 0x36, 0x8d, 0xc7, 0xb3, 0xf7, 0xdb, 0x34, 0x5e, 0x6b,
- 0xc1, 0x6f, 0xd3, 0x84, 0x35, 0xa8, 0xc9, 0xa7, 0x29, 0x82, 0xdc, 0x55, 0xef, 0x65, 0xd1, 0xdd,
- 0x64, 0x7f, 0x7a, 0x1d, 0x15, 0x62, 0xfa, 0x95, 0x9c, 0xb8, 0x11, 0xd7, 0xe3, 0x99, 0x3a, 0xb7,
- 0xe2, 0xb6, 0x7a, 0xf3, 0xca, 0xf7, 0x4f, 0xd4, 0xda, 0x4b, 0x4f, 0x36, 0xac, 0x14, 0xef, 0x37,
- 0xae, 0x87, 0x26, 0x8f, 0xda, 0x82, 0xdd, 0xf2, 0x1b, 0xfd, 0x60, 0xa2, 0xba, 0x35, 0xa1, 0x1a,
- 0x7d, 0xd4, 0x65, 0x08, 0x35, 0xf9, 0x56, 0x6f, 0x9e, 0x98, 0xe4, 0xa4, 0x6f, 0xd9, 0xda, 0x3d,
- 0x8c, 0xb9, 0x6d, 0xfd, 0xa4, 0xbf, 0x82, 0x72, 0xbf, 0x54, 0x49, 0xad, 0xed, 0x5e, 0xb4, 0xf3,
- 0x66, 0x97, 0xa9, 0xb1, 0xd3, 0xcc, 0xa3, 0xbe, 0x78, 0x28, 0xbd, 0xb1, 0x27, 0xf8, 0xae, 0xf4,
- 0xc6, 0x3b, 0xc9, 0x7f, 0x72, 0x3d, 0x25, 0x55, 0x96, 0x7f, 0x1d, 0x44, 0x37, 0xc9, 0xb2, 0xa8,
- 0x38, 0xf8, 0xac, 0xaf, 0x65, 0x14, 0x0f, 0x9f, 0x5f, 0x5b, 0x4f, 0x15, 0xea, 0x3f, 0x06, 0xd1,
- 0xad, 0x40, 0xa1, 0x64, 0x80, 0x5c, 0xc3, 0xba, 0x1b, 0x28, 0x3f, 0xbc, 0xbe, 0x22, 0x35, 0xdd,
- 0xdb, 0xf8, 0xb8, 0xfd, 0xd1, 0x96, 0x80, 0xed, 0x31, 0xfd, 0xd1, 0x96, 0x6e, 0x2d, 0xbc, 0x05,
- 0x55, 0x27, 0x25, 0x6a, 0x65, 0xe4, 0xdb, 0x82, 0x12, 0x39, 0x0b, 0x5a, 0x11, 0xad, 0x75, 0x72,
- 0x3e, 0x27, 0x2f, 0xde, 0x16, 0x71, 0x3e, 0xa5, 0x9d, 0x48, 0x79, 0xb7, 0x13, 0xcd, 0xe1, 0xad,
- 0xbb, 0x5a, 0x7a, 0xca, 0x9a, 0x65, 0xde, 0x23, 0x4a, 0x5f, 0x23, 0xc1, 0xad, 0xbb, 0x16, 0x4a,
- 0x78, 0x53, 0x39, 0x6d, 0xc8, 0x1b, 0x4a, 0x65, 0x1f, 0xf7, 0x41, 0xd1, 0x02, 0x42, 0x7b, 0xd3,
- 0x27, 0x02, 0x1b, 0x21, 0x2b, 0xad, 0x53, 0x81, 0xcd, 0x9e, 0x34, 0xe1, 0x76, 0x0c, 0xfc, 0x4b,
- 0x88, 0xa7, 0x50, 0x06, 0xdd, 0x6a, 0xaa, 0x97, 0x5b, 0x9b, 0xf6, 0xb9, 0xdd, 0x61, 0xd9, 0x62,
- 0x9e, 0xab, 0xc6, 0x24, 0xdd, 0xda, 0x54, 0xb7, 0x5b, 0x44, 0xe3, 0x4d, 0x4b, 0xe3, 0x56, 0xa4,
- 0x97, 0x8f, 0xc3, 0x66, 0x9c, 0xac, 0x72, 0xbd, 0x17, 0x4b, 0xd7, 0x53, 0x85, 0x51, 0x47, 0x3d,
- 0x51, 0x24, 0x6d, 0xf6, 0xa4, 0xf1, 0xee, 0xa1, 0xe5, 0x56, 0xc7, 0xd3, 0x56, 0x87, 0xad, 0x56,
- 0x48, 0x3d, 0xe9, 0xaf, 0x80, 0xf7, 0x6a, 0x55, 0x54, 0xd5, 0xeb, 0xa2, 0xbd, 0x34, 0xcb, 0x86,
- 0xeb, 0x81, 0x30, 0x69, 0xa0, 0xe0, 0x5e, 0xad, 0x07, 0x26, 0x22, 0xb9, 0xd9, 0xdb, 0xcc, 0x87,
- 0x5d, 0x76, 0x04, 0xd5, 0x2b, 0x92, 0x6d, 0x1a, 0xed, 0xb7, 0x59, 0x8f, 0x5a, 0xd7, 0x76, 0x14,
- 0x7e, 0x70, 0xad, 0x0a, 0x6f, 0xf5, 0xe6, 0xd1, 0x65, 0x00, 0x41, 0x89, 0x99, 0xe5, 0x1e, 0x65,
- 0xc2, 0x99, 0x49, 0xee, 0x77, 0x50, 0x68, 0xcf, 0x52, 0x76, 0xa3, 0xd7, 0xe9, 0x74, 0x06, 0xdc,
- 0x7b, 0x8e, 0x65, 0x03, 0xc1, 0x73, 0x2c, 0x04, 0xa2, 0xa6, 0x93, 0xbf, 0xeb, 0xcd, 0xda, 0x83,
- 0xa9, 0xaf, 0xe9, 0x94, 0xb2, 0x45, 0x85, 0x9a, 0xce, 0x4b, 0xa3, 0xd1, 0x40, 0xbb, 0x55, 0x2f,
- 0xd1, 0x3f, 0x0e, 0x99, 0x41, 0x6f, 0xd2, 0xaf, 0xf7, 0x62, 0xd1, 0x8c, 0x62, 0x1c, 0xa6, 0xf3,
- 0x94, 0xfb, 0x66, 0x14, 0xcb, 0x46, 0x8d, 0x84, 0x66, 0x94, 0x36, 0x4a, 0x55, 0xaf, 0xce, 0x11,
- 0x0e, 0xa6, 0xe1, 0xea, 0x49, 0xa6, 0x5f, 0xf5, 0x34, 0xdb, 0x3a, 0x76, 0xcd, 0x75, 0xc8, 0xf0,
- 0x0b, 0xb5, 0x58, 0xf6, 0xc4, 0xb6, 0x78, 0xb9, 0x12, 0x83, 0xa1, 0x51, 0x87, 0x52, 0xc0, 0xc7,
- 0x09, 0x35, 0xd7, 0x9c, 0x0c, 0x17, 0x05, 0xc4, 0x65, 0x9c, 0x27, 0xde, 0xc5, 0xa9, 0x30, 0xd8,
- 0x22, 0x43, 0x8b, 0x53, 0x52, 0x03, 0x1d, 0xea, 0xbb, 0xaf, 0x45, 0x7a, 0xba, 0x82, 0x7e, 0xff,
- 0xd0, 0x7d, 0x2b, 0xf2, 0x51, 0x0f, 0x12, 0x1f, 0xea, 0x37, 0x80, 0xde, 0x96, 0x97, 0x4e, 0x3f,
- 0x0e, 0x98, 0x72, 0xd1, 0xd0, 0x42, 0x98, 0x56, 0x41, 0x41, 0xad, 0x13, 0x5c, 0xe0, 0x3f, 0x86,
- 0x95, 0x2f, 0xa8, 0x4d, 0x7e, 0x2a, 0x90, 0x50, 0x50, 0xb7, 0x51, 0x94, 0x67, 0xda, 0xeb, 0xa0,
- 0x07, 0x01, 0x7d, 0x7b, 0xe9, 0xb3, 0xd6, 0xc9, 0xa1, 0x9e, 0xb3, 0x9b, 0x2e, 0x9d, 0x53, 0x0c,
- 0x4f, 0x41, 0x77, 0xd3, 0xa5, 0xff, 0x10, 0x63, 0xbd, 0x17, 0x8b, 0x2f, 0x0c, 0xc4, 0x1c, 0xde,
- 0x36, 0x27, 0xf9, 0x9e, 0xe2, 0x0a, 0x79, 0xeb, 0x28, 0xff, 0x61, 0x37, 0x68, 0xae, 0xe7, 0x9e,
- 0x94, 0x2c, 0x81, 0xaa, 0x52, 0x5f, 0xb2, 0x73, 0xef, 0x3f, 0x29, 0xd9, 0x08, 0x7d, 0xc7, 0xee,
- 0x5e, 0x18, 0x52, 0xb6, 0xbf, 0x8c, 0xde, 0x3d, 0x64, 0xb3, 0x31, 0xe4, 0xd3, 0xe1, 0x0f, 0xdc,
- 0x0b, 0xb1, 0x6c, 0x36, 0xaa, 0x7f, 0xd6, 0xf6, 0x6e, 0x50, 0x62, 0x73, 0xa5, 0x6f, 0x17, 0xde,
- 0x2c, 0x66, 0x63, 0x1e, 0x73, 0x74, 0xa5, 0x4f, 0xfc, 0x3e, 0xaa, 0x05, 0xc4, 0x95, 0x3e, 0x07,
- 0x40, 0xf6, 0x26, 0x25, 0x80, 0xd7, 0x5e, 0x2d, 0x08, 0xda, 0x53, 0x80, 0x99, 0x75, 0xb5, 0xbd,
- 0x3a, 0xb1, 0xc5, 0x57, 0xf0, 0x8c, 0x8e, 0x90, 0x12, 0xb3, 0x6e, 0x9b, 0x32, 0xc1, 0x20, 0xab,
- 0x2f, 0xbe, 0xad, 0xb1, 0x98, 0xcf, 0xe3, 0x72, 0x85, 0x82, 0x41, 0xd5, 0xd2, 0x02, 0x88, 0x60,
- 0xf0, 0x82, 0x26, 0xca, 0x9b, 0xc7, 0x9c, 0x5c, 0xee, 0xb3, 0x92, 0x2d, 0x78, 0x9a, 0x03, 0xfe,
- 0xbe, 0x82, 0x7e, 0xa0, 0x36, 0x43, 0x44, 0x39, 0xc5, 0x9a, 0xac, 0x50, 0x10, 0xf2, 0x76, 0xa0,
- 0xf8, 0x1e, 0x6c, 0xc5, 0x59, 0x89, 0x4f, 0x07, 0xa5, 0x15, 0x0c, 0x11, 0x59, 0x21, 0x09, 0xa3,
- 0xb6, 0x3f, 0x49, 0xf3, 0x99, 0xb7, 0xed, 0x4f, 0xec, 0xaf, 0x29, 0xde, 0xa2, 0x01, 0x33, 0xbe,
- 0xcb, 0x87, 0x26, 0xbf, 0x61, 0xa4, 0xde, 0x92, 0xf4, 0x3e, 0x74, 0x9b, 0x20, 0xc6, 0x77, 0x3f,
- 0x89, 0x5c, 0xbd, 0x2c, 0x20, 0x87, 0x69, 0x73, 0x07, 0xce, 0xe7, 0xca, 0x21, 0x82, 0xae, 0x30,
- 0x69, 0x46, 0x55, 0x21, 0x3f, 0x5d, 0xe4, 0x27, 0x25, 0x3b, 0x4f, 0x33, 0x28, 0xd1, 0xa8, 0x2a,
- 0xd5, 0x2d, 0x39, 0x31, 0xaa, 0xfa, 0x38, 0x73, 0x99, 0x42, 0x48, 0x9d, 0x8f, 0x1a, 0x4f, 0xca,
- 0x38, 0xc1, 0x97, 0x29, 0xa4, 0x8d, 0x36, 0x46, 0xec, 0xa4, 0x05, 0x70, 0x13, 0xe9, 0x47, 0xc0,
- 0xcb, 0x34, 0xa9, 0xc6, 0xc0, 0x4f, 0xe2, 0x32, 0x9e, 0x03, 0x87, 0x12, 0x47, 0xba, 0x42, 0x46,
- 0x0e, 0x43, 0x44, 0x3a, 0xc5, 0x2a, 0x87, 0x7f, 0x18, 0xbd, 0x5f, 0x0f, 0xf4, 0x90, 0xab, 0xef,
- 0xef, 0xbf, 0x10, 0x7f, 0xb8, 0x63, 0xf8, 0x81, 0xb6, 0x31, 0xe6, 0x25, 0xc4, 0xf3, 0xc6, 0xf6,
- 0x7b, 0xfa, 0x77, 0x01, 0x3e, 0x19, 0xd4, 0x0d, 0x72, 0xcc, 0x78, 0x7a, 0x5e, 0xaf, 0xab, 0xd4,
- 0x29, 0x16, 0x6a, 0x10, 0x5b, 0x3c, 0x0a, 0x7c, 0x32, 0xc0, 0xc7, 0x99, 0x81, 0xc6, 0x96, 0x9e,
- 0x42, 0x91, 0xe1, 0x81, 0xc6, 0xd1, 0x16, 0x00, 0x31, 0xd0, 0x78, 0x41, 0x13, 0x5d, 0xb6, 0x78,
- 0x02, 0xe1, 0xca, 0x4c, 0xa0, 0x5f, 0x65, 0x26, 0xce, 0x3b, 0x02, 0x59, 0xf4, 0xfe, 0x11, 0xcc,
- 0xdf, 0x40, 0x59, 0x5d, 0xa4, 0xc5, 0x7e, 0x3d, 0xc3, 0xc6, 0x7c, 0x81, 0xdf, 0xa2, 0x33, 0xc4,
- 0x48, 0x23, 0x44, 0x1a, 0x42, 0xa0, 0x66, 0x28, 0x33, 0xc0, 0x41, 0x75, 0x1c, 0xcf, 0x41, 0x7c,
- 0x00, 0x61, 0xb8, 0x4e, 0x19, 0xb1, 0x20, 0x62, 0x28, 0x23, 0x61, 0xeb, 0x75, 0x23, 0xc3, 0x9c,
- 0xc2, 0xac, 0x8e, 0xb0, 0xf2, 0x24, 0x5e, 0xcd, 0x21, 0xe7, 0xca, 0x24, 0xda, 0x84, 0xb5, 0x4c,
- 0xfa, 0x79, 0x62, 0x13, 0xb6, 0x8f, 0x9e, 0x95, 0x74, 0x3b, 0x0f, 0xfe, 0x84, 0x95, 0x5c, 0xfe,
- 0x75, 0x8d, 0xb3, 0x32, 0x43, 0x49, 0xb7, 0xfb, 0x50, 0x1d, 0x92, 0x48, 0xba, 0xc3, 0x1a, 0xd6,
- 0x67, 0xa9, 0x9d, 0x32, 0xbc, 0x82, 0x52, 0xc7, 0xc9, 0x8b, 0x79, 0x9c, 0x66, 0x2a, 0x1a, 0xbe,
- 0x08, 0xd8, 0x26, 0x74, 0x88, 0xcf, 0x52, 0xf7, 0xd5, 0xb5, 0x3e, 0xe4, 0x1d, 0x2e, 0x21, 0xda,
- 0x13, 0xee, 0xb0, 0x4f, 0xec, 0x09, 0x77, 0x6b, 0x99, 0xa5, 0x9a, 0x61, 0x05, 0xb7, 0x12, 0xc4,
- 0x0e, 0x9b, 0xe2, 0x0d, 0x22, 0xcb, 0x26, 0x02, 0x89, 0xa5, 0x5a, 0x50, 0xc1, 0xcc, 0x6d, 0x06,
- 0xdb, 0x4b, 0xf3, 0x38, 0x4b, 0x7f, 0x8a, 0xef, 0x3e, 0x5b, 0x76, 0x1a, 0x82, 0x98, 0xdb, 0xfc,
- 0xa4, 0xcf, 0xd5, 0x3e, 0xf0, 0x49, 0x5a, 0x0f, 0xfd, 0x0f, 0x03, 0xcf, 0x4d, 0x10, 0xdd, 0xae,
- 0x2c, 0x52, 0xb9, 0xfa, 0xd9, 0x20, 0xba, 0x89, 0x1f, 0xeb, 0x76, 0x51, 0x8c, 0xeb, 0x94, 0xe4,
- 0x14, 0x12, 0x48, 0x0b, 0x3e, 0xfc, 0x34, 0xfc, 0xac, 0x10, 0x4e, 0x9c, 0xac, 0xf7, 0x50, 0xb3,
- 0xce, 0x6b, 0xeb, 0xb1, 0x64, 0x2c, 0xff, 0xec, 0xd4, 0x59, 0x05, 0xa5, 0x9a, 0x29, 0xf7, 0x81,
- 0xa3, 0xde, 0x69, 0x71, 0x23, 0x0b, 0xac, 0x2b, 0x4a, 0xf4, 0xce, 0xb0, 0x86, 0xd9, 0xdd, 0xb1,
- 0xb8, 0x53, 0xa8, 0x58, 0xb6, 0x04, 0x71, 0xfd, 0x6d, 0x83, 0x34, 0x66, 0x51, 0xc4, 0xee, 0x0e,
- 0x4d, 0x9b, 0x74, 0xa3, 0xed, 0x76, 0x3b, 0x5f, 0x1d, 0xe0, 0x33, 0x72, 0x8f, 0x25, 0x81, 0x11,
- 0xe9, 0x46, 0x00, 0xb7, 0x76, 0x3f, 0x4b, 0x16, 0x4f, 0x93, 0xb8, 0xe2, 0x27, 0xf1, 0x2a, 0x63,
- 0xf1, 0x54, 0xcc, 0xeb, 0x78, 0xf7, 0xb3, 0x61, 0x46, 0x36, 0x44, 0xed, 0x7e, 0x52, 0xb0, 0x59,
- 0xd9, 0xa9, 0xbf, 0xa6, 0xa5, 0xae, 0x16, 0xde, 0x45, 0x39, 0x92, 0x28, 0x2f, 0xbe, 0x56, 0x78,
- 0x2f, 0x0c, 0x99, 0x57, 0xa2, 0xa4, 0x48, 0xa4, 0x21, 0xb7, 0x7c, 0x3a, 0x4e, 0x02, 0x72, 0x3b,
- 0x40, 0x98, 0xcf, 0x24, 0xc8, 0xdf, 0x9b, 0x3f, 0x08, 0xc1, 0xd5, 0x47, 0x74, 0x37, 0x7c, 0xba,
- 0x36, 0x34, 0xb2, 0xbf, 0x43, 0xb6, 0xd9, 0x93, 0x36, 0x0b, 0x37, 0xf5, 0x21, 0xdf, 0x23, 0xa8,
- 0x3c, 0xef, 0x37, 0xd7, 0xc2, 0x91, 0x91, 0x12, 0x0b, 0xb7, 0x36, 0x65, 0x02, 0xbd, 0x96, 0xbd,
- 0x98, 0xa6, 0x5c, 0xc9, 0x9a, 0x0b, 0xbb, 0x1b, 0x6d, 0x03, 0x6d, 0x8a, 0xa8, 0x15, 0x4d, 0x9b,
- 0xb1, 0xbc, 0x66, 0x26, 0x6c, 0x36, 0xcb, 0x40, 0x41, 0xa7, 0x10, 0xcb, 0xef, 0xad, 0x6d, 0xb5,
- 0x6d, 0x79, 0x41, 0x62, 0x2c, 0x0f, 0x2a, 0x98, 0x34, 0xb2, 0xc6, 0xe4, 0x19, 0x44, 0xf3, 0x60,
- 0xd7, 0xda, 0x66, 0x1c, 0x80, 0x48, 0x23, 0xbd, 0xa0, 0x79, 0x0d, 0xab, 0x16, 0xef, 0x43, 0xf3,
- 0x24, 0xf0, 0xd7, 0x69, 0x84, 0xb2, 0x25, 0x26, 0x5e, 0xc3, 0xf2, 0x60, 0x66, 0x9d, 0x80, 0x3c,
- 0x3c, 0x5f, 0x1d, 0x4c, 0xf1, 0x3a, 0x01, 0xeb, 0x0b, 0x86, 0x58, 0x27, 0x50, 0xac, 0xdb, 0x74,
- 0xfa, 0x53, 0xbc, 0x87, 0x71, 0x65, 0x2a, 0xe7, 0x69, 0x3a, 0x2f, 0x18, 0x6a, 0x3a, 0x4a, 0xc1,
- 0x7d, 0xa4, 0xf6, 0x87, 0x7e, 0x3d, 0x8f, 0xd4, 0xf7, 0x81, 0xdf, 0x07, 0x5d, 0x98, 0xf4, 0xf0,
- 0xfc, 0xf6, 0xff, 0x7c, 0x7d, 0x63, 0xf0, 0x8b, 0xaf, 0x6f, 0x0c, 0xfe, 0xef, 0xeb, 0x1b, 0x83,
- 0x9f, 0x7d, 0x73, 0xe3, 0x9d, 0x5f, 0x7c, 0x73, 0xe3, 0x9d, 0xff, 0xfd, 0xe6, 0xc6, 0x3b, 0x5f,
- 0xbd, 0xab, 0xfe, 0x12, 0xe2, 0x9b, 0x5f, 0x11, 0x7f, 0xcf, 0xf0, 0xd9, 0x2f, 0x03, 0x00, 0x00,
- 0xff, 0xff, 0x51, 0x6f, 0x77, 0xac, 0x2d, 0x71, 0x00, 0x00,
+ 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0x8f, 0x7b, 0xe1, 0x01, 0x89,
+ 0xbf, 0x86, 0xc7, 0x7d, 0xe4, 0x11, 0xed, 0xfe, 0x23, 0xa8, 0x32, 0xb3, 0xf2, 0x23, 0x2a, 0x23,
+ 0xab, 0xbc, 0x4f, 0x33, 0xea, 0xf8, 0x45, 0x44, 0x66, 0x65, 0x64, 0x66, 0xe4, 0x47, 0x95, 0xa3,
+ 0x9b, 0xc5, 0x9b, 0xad, 0xa2, 0x64, 0x9c, 0x55, 0x5b, 0x15, 0x94, 0xcb, 0x34, 0x81, 0xe6, 0xdf,
+ 0x91, 0xf8, 0x79, 0xf8, 0x6e, 0x9c, 0xaf, 0xf8, 0xaa, 0x80, 0x8f, 0x3e, 0x34, 0x64, 0xc2, 0xe6,
+ 0xf3, 0x38, 0x9f, 0x56, 0x12, 0xf9, 0xe8, 0x03, 0x23, 0x81, 0x25, 0xe4, 0x5c, 0xfd, 0xfe, 0xf4,
+ 0x97, 0xdf, 0x0c, 0xa2, 0xf7, 0x76, 0xb2, 0x14, 0x72, 0xbe, 0xa3, 0x34, 0x86, 0x5f, 0x45, 0xdf,
+ 0xdf, 0x2e, 0x8a, 0x7d, 0xe0, 0xaf, 0xa0, 0xac, 0x52, 0x96, 0x0f, 0xef, 0x8e, 0x94, 0x83, 0xd1,
+ 0x69, 0x91, 0x8c, 0xb6, 0x8b, 0x62, 0x64, 0x84, 0xa3, 0x53, 0xf8, 0xd9, 0x02, 0x2a, 0xfe, 0xd1,
+ 0xbd, 0x30, 0x54, 0x15, 0x2c, 0xaf, 0x60, 0x78, 0x1e, 0xfd, 0xd6, 0x76, 0x51, 0x8c, 0x81, 0xef,
+ 0x42, 0x5d, 0x81, 0x31, 0x8f, 0x39, 0x0c, 0xd7, 0x5a, 0xaa, 0x2e, 0xa0, 0x7d, 0x3c, 0xec, 0x06,
+ 0x95, 0x9f, 0x49, 0xf4, 0xbd, 0xda, 0xcf, 0xc5, 0x82, 0x4f, 0xd9, 0x55, 0x3e, 0xbc, 0xdd, 0x56,
+ 0x54, 0x22, 0x6d, 0xfb, 0x4e, 0x08, 0x51, 0x56, 0x5f, 0x47, 0xbf, 0xfe, 0x3a, 0xce, 0x32, 0xe0,
+ 0x3b, 0x25, 0xd4, 0x05, 0x77, 0x75, 0xa4, 0x68, 0x24, 0x65, 0xda, 0xee, 0xdd, 0x20, 0xa3, 0x0c,
+ 0x7f, 0x15, 0x7d, 0x5f, 0x4a, 0x4e, 0x21, 0x61, 0x4b, 0x28, 0x87, 0x5e, 0x2d, 0x25, 0x24, 0x1e,
+ 0x79, 0x0b, 0xc2, 0xb6, 0x77, 0x58, 0xbe, 0x84, 0x92, 0xfb, 0x6d, 0x2b, 0x61, 0xd8, 0xb6, 0x81,
+ 0x94, 0xed, 0x7f, 0x18, 0x44, 0x3f, 0xdc, 0x4e, 0x12, 0xb6, 0xc8, 0xf9, 0x21, 0x4b, 0xe2, 0xec,
+ 0x30, 0xcd, 0x2f, 0x8f, 0xe1, 0x6a, 0xe7, 0xa2, 0xe6, 0xf3, 0x19, 0x0c, 0x9f, 0xb9, 0x4f, 0x55,
+ 0xa2, 0x23, 0xcd, 0x8e, 0x6c, 0x58, 0xfb, 0xfe, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x32, 0x88,
+ 0x6e, 0xe0, 0xb2, 0x8c, 0x59, 0xb6, 0x04, 0x53, 0x9a, 0x4f, 0x3b, 0x0c, 0xbb, 0xb8, 0x2e, 0xcf,
+ 0x67, 0xd7, 0x55, 0x53, 0x25, 0xca, 0xa2, 0xf7, 0xed, 0x70, 0x19, 0x43, 0x25, 0xba, 0xd3, 0x23,
+ 0x3a, 0x22, 0x14, 0xa2, 0x3d, 0x3f, 0xee, 0x83, 0x2a, 0x6f, 0x69, 0x34, 0x54, 0xde, 0x32, 0x56,
+ 0x69, 0x67, 0x0f, 0xbd, 0x16, 0x2c, 0x42, 0xfb, 0x7a, 0xd4, 0x83, 0x54, 0xae, 0xfe, 0x34, 0xfa,
+ 0x8d, 0xd7, 0xac, 0xbc, 0xac, 0x8a, 0x38, 0x01, 0xd5, 0x15, 0xee, 0xbb, 0xda, 0x8d, 0x14, 0xf7,
+ 0x86, 0x07, 0x5d, 0x98, 0x15, 0xb4, 0x8d, 0xf0, 0x65, 0x01, 0x78, 0x0c, 0x32, 0x8a, 0xb5, 0x90,
+ 0x0a, 0x5a, 0x0c, 0x29, 0xdb, 0x97, 0xd1, 0xd0, 0xd8, 0x7e, 0xf3, 0x67, 0x90, 0xf0, 0xed, 0xe9,
+ 0x14, 0xb7, 0x8a, 0xd1, 0x15, 0xc4, 0x68, 0x7b, 0x3a, 0xa5, 0x5a, 0xc5, 0x8f, 0x2a, 0x67, 0x57,
+ 0xd1, 0x07, 0xc8, 0xd9, 0x61, 0x5a, 0x09, 0x87, 0x9b, 0x61, 0x2b, 0x0a, 0xd3, 0x4e, 0x47, 0x7d,
+ 0x71, 0xe5, 0xf8, 0xaf, 0x06, 0xd1, 0x0f, 0x3c, 0x9e, 0x4f, 0x61, 0xce, 0x96, 0x30, 0x7c, 0xd2,
+ 0x6d, 0x4d, 0x92, 0xda, 0xff, 0xc7, 0xd7, 0xd0, 0xf0, 0x84, 0xc9, 0x18, 0x32, 0x48, 0x38, 0x19,
+ 0x26, 0x52, 0xdc, 0x19, 0x26, 0x1a, 0xb3, 0x7a, 0x58, 0x23, 0xdc, 0x07, 0xbe, 0xb3, 0x28, 0x4b,
+ 0xc8, 0x39, 0xd9, 0x96, 0x06, 0xe9, 0x6c, 0x4b, 0x07, 0xf5, 0xd4, 0x67, 0x1f, 0xf8, 0x76, 0x96,
+ 0x91, 0xf5, 0x91, 0xe2, 0xce, 0xfa, 0x68, 0x4c, 0x79, 0x48, 0xa2, 0xdf, 0xb4, 0x9e, 0x18, 0x3f,
+ 0xc8, 0xcf, 0xd9, 0x90, 0x7e, 0x16, 0x42, 0xae, 0x7d, 0xac, 0x75, 0x72, 0x9e, 0x6a, 0xbc, 0x78,
+ 0x5b, 0xb0, 0x92, 0x6e, 0x16, 0x29, 0xee, 0xac, 0x86, 0xc6, 0x94, 0x87, 0x3f, 0x89, 0xde, 0x53,
+ 0xa3, 0x64, 0x33, 0x9f, 0xdd, 0xf3, 0x0e, 0xa1, 0x78, 0x42, 0xbb, 0xdf, 0x41, 0x99, 0xc1, 0x41,
+ 0xc9, 0xd4, 0xe0, 0x73, 0xd7, 0xab, 0x87, 0x86, 0x9e, 0x7b, 0x61, 0xa8, 0x65, 0x7b, 0x17, 0x32,
+ 0x20, 0x6d, 0x4b, 0x61, 0x87, 0x6d, 0x0d, 0x29, 0xdb, 0x65, 0xf4, 0x3b, 0xfa, 0xb1, 0xd4, 0xf3,
+ 0xa8, 0x90, 0xd7, 0x83, 0xf4, 0x3a, 0x51, 0x6f, 0x1b, 0xd2, 0xbe, 0x36, 0xfa, 0xc1, 0xad, 0xfa,
+ 0xa8, 0x1e, 0xe8, 0xaf, 0x0f, 0xea, 0x7f, 0xf7, 0xc2, 0x90, 0xb2, 0xfd, 0x8f, 0x83, 0xe8, 0x47,
+ 0x4a, 0xf6, 0x22, 0x8f, 0xdf, 0x64, 0x20, 0xa6, 0xc4, 0x63, 0xe0, 0x57, 0xac, 0xbc, 0x1c, 0xaf,
+ 0xf2, 0x84, 0x98, 0xfe, 0xfd, 0x70, 0xc7, 0xf4, 0x4f, 0x2a, 0x59, 0x19, 0x9f, 0xaa, 0x28, 0x67,
+ 0x05, 0xce, 0xf8, 0x9a, 0x1a, 0x70, 0x56, 0x50, 0x19, 0x9f, 0x8b, 0xb4, 0xac, 0x1e, 0xd5, 0xc3,
+ 0xa6, 0xdf, 0xea, 0x91, 0x3d, 0x4e, 0xde, 0x09, 0x21, 0x66, 0xd8, 0x6a, 0x02, 0x98, 0xe5, 0xe7,
+ 0xe9, 0xec, 0xac, 0x98, 0xd6, 0x61, 0xfc, 0xc8, 0x1f, 0xa1, 0x16, 0x42, 0x0c, 0x5b, 0x04, 0xaa,
+ 0xbc, 0xfd, 0xb3, 0x49, 0x8c, 0x54, 0x57, 0xda, 0x2b, 0xd9, 0xfc, 0x10, 0x66, 0x71, 0xb2, 0x52,
+ 0xfd, 0xff, 0x93, 0x50, 0xc7, 0xc3, 0xb4, 0x2e, 0xc4, 0xa7, 0xd7, 0xd4, 0x52, 0xe5, 0xf9, 0xaf,
+ 0x41, 0x74, 0xaf, 0xa9, 0xfe, 0x45, 0x9c, 0xcf, 0x40, 0xb5, 0xa7, 0x2c, 0xfd, 0x76, 0x3e, 0x3d,
+ 0x85, 0x8a, 0xc7, 0x25, 0x1f, 0x7e, 0xe1, 0xaf, 0x64, 0x48, 0x47, 0x97, 0xed, 0x27, 0xdf, 0x49,
+ 0xd7, 0xb4, 0xfa, 0xb8, 0x1e, 0xd8, 0xd4, 0x10, 0xe0, 0xb6, 0xba, 0x90, 0xe0, 0x01, 0xe0, 0x4e,
+ 0x08, 0x31, 0xad, 0x2e, 0x04, 0x07, 0xf9, 0x32, 0xe5, 0xb0, 0x0f, 0x39, 0x94, 0xed, 0x56, 0x97,
+ 0xaa, 0x2e, 0x42, 0xb4, 0x3a, 0x81, 0x9a, 0xc1, 0xc6, 0xf1, 0xa6, 0x27, 0xc7, 0xf5, 0x80, 0x91,
+ 0xd6, 0xf4, 0xb8, 0xd1, 0x0f, 0x36, 0xab, 0x3b, 0xcb, 0xe7, 0x29, 0x2c, 0xd9, 0x25, 0x5e, 0xdd,
+ 0xd9, 0x26, 0x24, 0x40, 0xac, 0xee, 0xbc, 0xa0, 0x99, 0xc1, 0x2c, 0x3f, 0xaf, 0x52, 0xb8, 0x42,
+ 0x33, 0x98, 0xad, 0x5c, 0x8b, 0x89, 0x19, 0xcc, 0x83, 0x29, 0x0f, 0xc7, 0xd1, 0xaf, 0x09, 0xe1,
+ 0x1f, 0xb1, 0x34, 0x1f, 0xde, 0xf4, 0x28, 0xd5, 0x02, 0x6d, 0xf5, 0x16, 0x0d, 0xa0, 0x12, 0xd7,
+ 0xbf, 0xee, 0xc4, 0x79, 0x02, 0x99, 0xb7, 0xc4, 0x46, 0x1c, 0x2c, 0xb1, 0x83, 0x99, 0xd4, 0x41,
+ 0x08, 0xeb, 0xf1, 0x6b, 0x7c, 0x11, 0x97, 0x69, 0x3e, 0x1b, 0xfa, 0x74, 0x2d, 0x39, 0x91, 0x3a,
+ 0xf8, 0x38, 0x14, 0xc2, 0x4a, 0x71, 0xbb, 0x28, 0xca, 0x7a, 0x58, 0xf4, 0x85, 0xb0, 0x8b, 0x04,
+ 0x43, 0xb8, 0x85, 0xfa, 0xbd, 0xed, 0x42, 0x92, 0xa5, 0x79, 0xd0, 0x9b, 0x42, 0xfa, 0x78, 0x33,
+ 0x28, 0x0a, 0xde, 0x43, 0x88, 0x97, 0xd0, 0xd4, 0xcc, 0xf7, 0x64, 0x6c, 0x20, 0x18, 0xbc, 0x08,
+ 0x34, 0xeb, 0x34, 0x21, 0x3e, 0x8a, 0x2f, 0xa1, 0x7e, 0xc0, 0x50, 0xcf, 0x6b, 0x43, 0x9f, 0xbe,
+ 0x43, 0x10, 0xeb, 0x34, 0x3f, 0xa9, 0x5c, 0x2d, 0xa2, 0x0f, 0x84, 0xfc, 0x24, 0x2e, 0x79, 0x9a,
+ 0xa4, 0x45, 0x9c, 0x37, 0xf9, 0xbf, 0xaf, 0x5f, 0xb7, 0x28, 0xed, 0x72, 0xb3, 0x27, 0xad, 0xdc,
+ 0xfe, 0x72, 0x10, 0xdd, 0xc6, 0x7e, 0x4f, 0xa0, 0x9c, 0xa7, 0x62, 0x19, 0x59, 0xc9, 0x41, 0x78,
+ 0xf8, 0x79, 0xd8, 0x68, 0x4b, 0x41, 0x97, 0xe6, 0xc7, 0xd7, 0x57, 0x54, 0x05, 0xfb, 0xe3, 0x28,
+ 0x92, 0xcb, 0x15, 0xb1, 0xa4, 0x74, 0x7b, 0xad, 0x5a, 0xc7, 0x38, 0xeb, 0xc9, 0xdb, 0x01, 0xc2,
+ 0x4c, 0x15, 0xf2, 0x77, 0xb1, 0x52, 0x1e, 0x7a, 0x35, 0x84, 0x88, 0x98, 0x2a, 0x10, 0x82, 0x0b,
+ 0x3a, 0xbe, 0x60, 0x57, 0xfe, 0x82, 0xd6, 0x92, 0x70, 0x41, 0x15, 0x61, 0xf6, 0xae, 0x54, 0x41,
+ 0x7d, 0x7b, 0x57, 0x4d, 0x31, 0x42, 0x7b, 0x57, 0x98, 0x51, 0x86, 0x59, 0xf4, 0xdb, 0xb6, 0xe1,
+ 0xe7, 0x8c, 0x5d, 0xce, 0xe3, 0xf2, 0x72, 0xf8, 0x98, 0x56, 0x6e, 0x18, 0xed, 0x68, 0xbd, 0x17,
+ 0x6b, 0x86, 0x05, 0xdb, 0x61, 0x9d, 0x68, 0x9c, 0x95, 0x19, 0x1a, 0x16, 0x1c, 0x1b, 0x0a, 0x21,
+ 0x86, 0x05, 0x02, 0x35, 0x09, 0xb4, 0xf2, 0x76, 0x11, 0x8b, 0x75, 0xbb, 0xff, 0xa1, 0x48, 0x21,
+ 0x91, 0x40, 0xb7, 0x20, 0x33, 0x2b, 0xd8, 0x35, 0x19, 0x03, 0x5e, 0x89, 0x39, 0x45, 0x1b, 0x03,
+ 0xb5, 0x12, 0xf3, 0x60, 0x38, 0x3c, 0xf7, 0xcb, 0xb8, 0xb8, 0xf0, 0x87, 0xa7, 0x10, 0x85, 0xc3,
+ 0xb3, 0x41, 0x70, 0x2c, 0x8d, 0x21, 0x2e, 0x93, 0x0b, 0x7f, 0x2c, 0x49, 0x59, 0x38, 0x96, 0x34,
+ 0x83, 0x63, 0x49, 0x0a, 0x5e, 0xa7, 0xfc, 0xe2, 0x08, 0x78, 0xec, 0x8f, 0x25, 0x97, 0x09, 0xc7,
+ 0x52, 0x8b, 0x35, 0x59, 0x92, 0xed, 0x70, 0xbc, 0x78, 0x53, 0x25, 0x65, 0xfa, 0x06, 0x86, 0x01,
+ 0x2b, 0x1a, 0x22, 0xb2, 0x24, 0x12, 0x36, 0x13, 0x80, 0xf2, 0xd9, 0xc8, 0x0e, 0xa6, 0x15, 0x9a,
+ 0x00, 0x1a, 0x1b, 0x16, 0x41, 0x4c, 0x00, 0x7e, 0x12, 0x57, 0x6f, 0xbf, 0x64, 0x8b, 0xa2, 0xea,
+ 0xa8, 0x1e, 0x82, 0xc2, 0xd5, 0x6b, 0xc3, 0xca, 0xe7, 0xdb, 0xe8, 0x77, 0xed, 0x47, 0x7a, 0x96,
+ 0x57, 0xda, 0xeb, 0x26, 0xfd, 0x9c, 0x2c, 0x8c, 0xd8, 0xf2, 0x0a, 0xe0, 0x26, 0x05, 0x6a, 0x3c,
+ 0xf3, 0x5d, 0xe0, 0x71, 0x9a, 0x55, 0xc3, 0x07, 0x7e, 0x1b, 0x8d, 0x9c, 0x48, 0x81, 0x7c, 0x1c,
+ 0xee, 0xb3, 0xbb, 0x8b, 0x22, 0x4b, 0x93, 0xf6, 0xde, 0xa7, 0xd2, 0xd5, 0xe2, 0x70, 0x9f, 0xb5,
+ 0x31, 0x3c, 0xbe, 0x8d, 0x81, 0xcb, 0xff, 0x4c, 0x56, 0x05, 0xf8, 0xc7, 0x37, 0x07, 0x09, 0x8f,
+ 0x6f, 0x18, 0xc5, 0xf5, 0x19, 0x03, 0x3f, 0x8c, 0x57, 0x6c, 0x41, 0x8c, 0x41, 0x5a, 0x1c, 0xae,
+ 0x8f, 0x8d, 0x99, 0x2c, 0x44, 0x7b, 0x38, 0xc8, 0x39, 0x94, 0x79, 0x9c, 0xed, 0x65, 0xf1, 0xac,
+ 0x1a, 0x12, 0xfd, 0xc6, 0xa5, 0x88, 0x2c, 0x84, 0xa6, 0x3d, 0x8f, 0xf1, 0xa0, 0xda, 0x8b, 0x97,
+ 0xac, 0x4c, 0x39, 0xfd, 0x18, 0x0d, 0xd2, 0xf9, 0x18, 0x1d, 0xd4, 0xeb, 0x6d, 0xbb, 0x4c, 0x2e,
+ 0xd2, 0x25, 0x4c, 0x03, 0xde, 0x1a, 0xa4, 0x87, 0x37, 0x0b, 0xf5, 0x34, 0xda, 0x98, 0x2d, 0xca,
+ 0x04, 0xc8, 0x46, 0x93, 0xe2, 0xce, 0x46, 0xd3, 0x98, 0xf2, 0xf0, 0xb7, 0x83, 0xe8, 0xf7, 0xa4,
+ 0xd4, 0xde, 0x90, 0xdc, 0x8d, 0xab, 0x8b, 0x37, 0x2c, 0x2e, 0xa7, 0xc3, 0x8f, 0x7d, 0x76, 0xbc,
+ 0xa8, 0x76, 0xfd, 0xf4, 0x3a, 0x2a, 0xf8, 0xb1, 0x1e, 0xa6, 0x95, 0xd5, 0xe3, 0xbc, 0x8f, 0xd5,
+ 0x41, 0xc2, 0x8f, 0x15, 0xa3, 0x78, 0x00, 0x11, 0x72, 0xb9, 0xf8, 0x7f, 0x40, 0xea, 0xbb, 0x3b,
+ 0x00, 0x6b, 0x9d, 0x1c, 0x1e, 0x1f, 0x6b, 0xa1, 0x1b, 0x2d, 0x9b, 0x94, 0x0d, 0x7f, 0xc4, 0x8c,
+ 0xfa, 0xe2, 0xa4, 0x67, 0xdd, 0x2b, 0xc2, 0x9e, 0x5b, 0x3d, 0x63, 0xd4, 0x17, 0x27, 0x3c, 0x5b,
+ 0xc3, 0x5a, 0xc8, 0xb3, 0x67, 0x68, 0x1b, 0xf5, 0xc5, 0x71, 0x46, 0xa1, 0x98, 0x66, 0x5e, 0x78,
+ 0x1c, 0xb0, 0x83, 0xe7, 0x86, 0xf5, 0x5e, 0xac, 0x72, 0xf8, 0xf7, 0x83, 0xe8, 0x87, 0xc6, 0xe3,
+ 0x11, 0x9b, 0xa6, 0xe7, 0x2b, 0x09, 0xbd, 0x8a, 0xb3, 0x05, 0x54, 0xc3, 0xa7, 0x94, 0xb5, 0x36,
+ 0xab, 0x4b, 0xf0, 0xec, 0x5a, 0x3a, 0xb8, 0xef, 0x6c, 0x17, 0x45, 0xb6, 0x9a, 0xc0, 0xbc, 0xc8,
+ 0xc8, 0xbe, 0xe3, 0x20, 0xe1, 0xbe, 0x83, 0x51, 0x9c, 0x69, 0x4e, 0x58, 0x9d, 0xc7, 0x7a, 0x33,
+ 0x4d, 0x21, 0x0a, 0x67, 0x9a, 0x0d, 0x82, 0x73, 0xa5, 0x09, 0xdb, 0x61, 0x59, 0x06, 0x09, 0x6f,
+ 0x1f, 0x6a, 0x6a, 0x4d, 0x43, 0x84, 0x73, 0x25, 0x44, 0x9a, 0xf5, 0x7f, 0xb3, 0xe6, 0x8a, 0x4b,
+ 0x78, 0xbe, 0x3a, 0x4c, 0xf3, 0xcb, 0xa1, 0x3f, 0x2d, 0x30, 0x00, 0xb1, 0xfe, 0xf7, 0x82, 0x78,
+ 0x6d, 0x77, 0x96, 0x4f, 0x99, 0x7f, 0x6d, 0x57, 0x4b, 0xc2, 0x6b, 0x3b, 0x45, 0x60, 0x93, 0xa7,
+ 0x40, 0x99, 0xac, 0x25, 0x61, 0x93, 0x8a, 0xf0, 0x0d, 0x85, 0x6a, 0x97, 0x98, 0x1c, 0x0a, 0xd1,
+ 0xbe, 0xf0, 0x5a, 0x27, 0x87, 0x23, 0xb4, 0x59, 0xe4, 0xed, 0x01, 0x4f, 0x2e, 0xfc, 0x11, 0xea,
+ 0x20, 0xe1, 0x08, 0xc5, 0x28, 0xae, 0xd2, 0x84, 0xe9, 0x45, 0xea, 0x03, 0x7f, 0x7c, 0xb4, 0x16,
+ 0xa8, 0x6b, 0x9d, 0x1c, 0x5e, 0x1a, 0x1d, 0xcc, 0xc5, 0x33, 0xf3, 0x06, 0xb9, 0x94, 0x85, 0x97,
+ 0x46, 0x9a, 0xc1, 0xa5, 0x97, 0x82, 0xfa, 0x71, 0xfa, 0x4b, 0x6f, 0xe4, 0xe1, 0xd2, 0x3b, 0x9c,
+ 0x72, 0xf2, 0xef, 0x83, 0xe8, 0xa6, 0xed, 0xe5, 0x98, 0xd5, 0x7d, 0xe4, 0x55, 0x9c, 0xa5, 0xd3,
+ 0x98, 0xc3, 0x84, 0x5d, 0x42, 0x8e, 0xf6, 0x6d, 0xdc, 0xd2, 0x4a, 0x7e, 0xe4, 0x28, 0x10, 0xfb,
+ 0x36, 0xbd, 0x14, 0x71, 0x9c, 0x48, 0xfa, 0xac, 0x82, 0x9d, 0xb8, 0x22, 0x46, 0x32, 0x07, 0x09,
+ 0xc7, 0x09, 0x46, 0x71, 0xbe, 0x2a, 0xe5, 0x2f, 0xde, 0x16, 0x50, 0xa6, 0x90, 0x27, 0xe0, 0xcf,
+ 0x57, 0x31, 0x15, 0xce, 0x57, 0x3d, 0x74, 0x6b, 0x5b, 0x43, 0x0f, 0x4e, 0xed, 0x7b, 0x09, 0x98,
+ 0x08, 0xdc, 0x4b, 0x20, 0x50, 0x5c, 0x49, 0x03, 0x78, 0xb7, 0x06, 0x5b, 0x56, 0x82, 0x5b, 0x83,
+ 0x34, 0xdd, 0xda, 0x2c, 0xd2, 0xcc, 0xb8, 0xee, 0x26, 0x1d, 0x45, 0x1f, 0xdb, 0xdd, 0x65, 0xbd,
+ 0x17, 0xeb, 0xdf, 0x9d, 0x3a, 0x85, 0x2c, 0x16, 0x53, 0x48, 0x60, 0x0b, 0xa8, 0x61, 0xfa, 0xec,
+ 0x4e, 0x59, 0xac, 0x72, 0xf8, 0xd7, 0x83, 0xe8, 0x23, 0x9f, 0xc7, 0x97, 0x85, 0xf0, 0xfb, 0xa4,
+ 0xdb, 0x96, 0x24, 0x89, 0x8b, 0x17, 0x61, 0x0d, 0x55, 0x86, 0x3f, 0x8f, 0x3e, 0x6c, 0x44, 0xe6,
+ 0x5e, 0x86, 0x2a, 0x80, 0x9b, 0x40, 0xe9, 0xf2, 0x63, 0x4e, 0xbb, 0xdf, 0xea, 0xcd, 0x9b, 0xb5,
+ 0x89, 0x5b, 0xae, 0x0a, 0xad, 0x4d, 0xb4, 0x0d, 0x25, 0x26, 0xd6, 0x26, 0x1e, 0xcc, 0xec, 0x6a,
+ 0xd8, 0xd5, 0x7b, 0x9d, 0xf2, 0x0b, 0x91, 0xfb, 0xa0, 0x5d, 0x0d, 0xa7, 0xac, 0x1a, 0x22, 0x76,
+ 0x35, 0x48, 0x18, 0x67, 0x07, 0x0d, 0x58, 0xf7, 0x4d, 0xdf, 0xb8, 0xaa, 0x0d, 0xd9, 0x3d, 0xf3,
+ 0x61, 0x37, 0x88, 0xe3, 0xb5, 0x11, 0xab, 0x65, 0xc8, 0xe3, 0x90, 0x05, 0xb4, 0x14, 0x59, 0xef,
+ 0xc5, 0x2a, 0x87, 0x7f, 0x19, 0xfd, 0xa0, 0x55, 0xb1, 0x3d, 0x88, 0xf9, 0xa2, 0x84, 0xe9, 0x70,
+ 0xab, 0xa3, 0xdc, 0x0d, 0xa8, 0x5d, 0x3f, 0xe9, 0xaf, 0xd0, 0xca, 0x97, 0x1b, 0x4e, 0x86, 0x95,
+ 0x2e, 0xc3, 0xd3, 0x90, 0x49, 0x97, 0x0d, 0xe6, 0xcb, 0xb4, 0x4e, 0x6b, 0xc9, 0x6b, 0x47, 0xd7,
+ 0xf6, 0x32, 0x4e, 0x33, 0x71, 0x44, 0xf3, 0x71, 0xc8, 0xa8, 0x83, 0x06, 0x97, 0xbc, 0xa4, 0x4a,
+ 0x6b, 0x64, 0x16, 0x7d, 0xdc, 0x5a, 0x2a, 0x6d, 0xd0, 0x23, 0x81, 0x67, 0xa5, 0xb4, 0xd9, 0x93,
+ 0x56, 0x6e, 0x79, 0xb3, 0x55, 0x58, 0xff, 0x6c, 0x07, 0xb9, 0xcf, 0xab, 0x52, 0xf5, 0x44, 0xfa,
+ 0x66, 0x4f, 0x5a, 0x79, 0xfd, 0x8b, 0xe8, 0xc3, 0xb6, 0x57, 0x35, 0x11, 0x6d, 0x75, 0x9a, 0x42,
+ 0x73, 0xd1, 0x93, 0xfe, 0x0a, 0x66, 0x79, 0xf1, 0x65, 0x5a, 0x71, 0x56, 0xae, 0xc6, 0x17, 0xec,
+ 0xaa, 0xb9, 0xef, 0xec, 0xf6, 0x56, 0x05, 0x8c, 0x2c, 0x82, 0x58, 0x5e, 0xf8, 0xc9, 0x96, 0x2b,
+ 0x73, 0x2f, 0xba, 0x22, 0x5c, 0x59, 0x44, 0x87, 0x2b, 0x97, 0x34, 0x63, 0x55, 0x53, 0x2b, 0x73,
+ 0x89, 0x7b, 0xcd, 0x5f, 0xd4, 0xf6, 0x45, 0xee, 0x87, 0xdd, 0xa0, 0xc9, 0x58, 0x94, 0x78, 0x37,
+ 0x3d, 0x3f, 0xd7, 0x75, 0xf2, 0x97, 0xd4, 0x46, 0x88, 0x8c, 0x85, 0x40, 0x4d, 0x02, 0xbc, 0x97,
+ 0x66, 0x20, 0xce, 0xfb, 0x5e, 0x9e, 0x9f, 0x67, 0x2c, 0x9e, 0xa2, 0x04, 0xb8, 0x16, 0x8f, 0x6c,
+ 0x39, 0x91, 0x00, 0xfb, 0x38, 0x73, 0xda, 0x53, 0x4b, 0x4f, 0x21, 0x61, 0x79, 0x92, 0x66, 0xf8,
+ 0xfa, 0x97, 0xd0, 0xd4, 0x42, 0xe2, 0xb4, 0xa7, 0x05, 0x99, 0x89, 0xb1, 0x16, 0xd5, 0xdd, 0xbe,
+ 0x29, 0xff, 0xfd, 0xb6, 0xa2, 0x25, 0x26, 0x26, 0x46, 0x0f, 0x66, 0xd6, 0x81, 0xb5, 0xf0, 0xac,
+ 0x10, 0xc6, 0x6f, 0xb5, 0xb5, 0xa4, 0x84, 0x58, 0x07, 0xba, 0x84, 0x59, 0xcf, 0xd4, 0xbf, 0xef,
+ 0xb2, 0xab, 0x5c, 0x18, 0xbd, 0xd3, 0x56, 0x69, 0x64, 0xc4, 0x7a, 0x06, 0x33, 0xca, 0xf0, 0x4f,
+ 0xa3, 0x5f, 0x15, 0x86, 0x4b, 0x56, 0x0c, 0x6f, 0x78, 0x14, 0x4a, 0xeb, 0xa6, 0xd6, 0x4d, 0x52,
+ 0x6e, 0x2e, 0x1c, 0xea, 0xd8, 0x38, 0xab, 0xe2, 0x19, 0x0c, 0xef, 0x11, 0x2d, 0x2e, 0xa4, 0xc4,
+ 0x85, 0xc3, 0x36, 0xe5, 0x46, 0xc5, 0x31, 0x9b, 0x2a, 0xeb, 0x9e, 0x1a, 0x6a, 0x61, 0x28, 0x2a,
+ 0x6c, 0xc8, 0x24, 0x33, 0xc7, 0xf1, 0x32, 0x9d, 0xe9, 0x09, 0x47, 0x8e, 0x5b, 0x15, 0x4a, 0x66,
+ 0x0c, 0x33, 0xb2, 0x20, 0x22, 0x99, 0x21, 0x61, 0xe5, 0xf3, 0xdf, 0x06, 0xd1, 0x2d, 0xc3, 0xec,
+ 0x37, 0x3b, 0x67, 0x07, 0xf9, 0x39, 0xab, 0x53, 0x9f, 0xc3, 0x34, 0xbf, 0xac, 0x86, 0x9f, 0x51,
+ 0x26, 0xfd, 0xbc, 0x2e, 0xca, 0xe7, 0xd7, 0xd6, 0x33, 0x59, 0x6b, 0xb3, 0xad, 0x64, 0xce, 0x62,
+ 0xa5, 0x06, 0xca, 0x5a, 0xf5, 0xee, 0x13, 0xe6, 0x88, 0xac, 0x35, 0xc4, 0x9b, 0x26, 0xd6, 0xce,
+ 0x33, 0x96, 0xe3, 0x26, 0x36, 0x16, 0x6a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0x8c, 0xc7, 0x8d, 0x48,
+ 0xee, 0x80, 0x6c, 0x67, 0x19, 0x1a, 0x8f, 0xb5, 0xaa, 0x06, 0x88, 0xf1, 0xd8, 0x0b, 0x2a, 0x3f,
+ 0xa7, 0xd1, 0xf7, 0xea, 0x47, 0x7a, 0x52, 0xc2, 0x32, 0x05, 0x7c, 0x6d, 0xc0, 0x92, 0x10, 0xfd,
+ 0xdf, 0x25, 0x4c, 0xcf, 0x3a, 0xcb, 0xab, 0x22, 0x8b, 0xab, 0x0b, 0x75, 0xd8, 0xeb, 0xd6, 0xb9,
+ 0x11, 0xe2, 0xe3, 0xde, 0xfb, 0x1d, 0x94, 0x19, 0xd4, 0x1b, 0x99, 0x1e, 0x62, 0x1e, 0xf8, 0x55,
+ 0x5b, 0xc3, 0xcc, 0x5a, 0x27, 0x67, 0x76, 0x9f, 0xf7, 0xe3, 0x2c, 0x83, 0x72, 0xd5, 0xc8, 0x8e,
+ 0xe2, 0x3c, 0x3d, 0x87, 0x8a, 0xa3, 0xdd, 0x67, 0x45, 0x8d, 0x30, 0x46, 0xec, 0x3e, 0x07, 0x70,
+ 0x93, 0xcd, 0x23, 0xcf, 0x07, 0xf9, 0x14, 0xde, 0xa2, 0x6c, 0x1e, 0xdb, 0x11, 0x0c, 0x91, 0xcd,
+ 0x53, 0xac, 0xd9, 0x85, 0x7d, 0x9e, 0xb1, 0xe4, 0x52, 0x4d, 0x01, 0x6e, 0x03, 0x0b, 0x09, 0x9e,
+ 0x03, 0xee, 0x84, 0x10, 0x33, 0x09, 0x08, 0xc1, 0x29, 0x14, 0x59, 0x9c, 0xe0, 0xbb, 0x23, 0x52,
+ 0x47, 0xc9, 0x88, 0x49, 0x00, 0x33, 0xa8, 0xb8, 0xea, 0x4e, 0x8a, 0xaf, 0xb8, 0xe8, 0x4a, 0xca,
+ 0x9d, 0x10, 0x62, 0xa6, 0x41, 0x21, 0x18, 0x17, 0x59, 0xca, 0x51, 0x37, 0x90, 0x1a, 0x42, 0x42,
+ 0x74, 0x03, 0x97, 0x40, 0x26, 0x8f, 0xa0, 0x9c, 0x81, 0xd7, 0xa4, 0x90, 0x04, 0x4d, 0x36, 0x84,
+ 0xb9, 0x62, 0x28, 0xeb, 0xce, 0x8a, 0x15, 0xba, 0x62, 0xa8, 0xaa, 0xc5, 0x8a, 0x15, 0x71, 0xc5,
+ 0xd0, 0x01, 0x50, 0x11, 0x4f, 0xe2, 0x8a, 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0x36, 0x84, 0x99,
+ 0xa3, 0x65, 0x11, 0x17, 0x1c, 0xcd, 0xd1, 0xaa, 0x00, 0xd6, 0x69, 0xf0, 0x4d, 0x52, 0x6e, 0x46,
+ 0x12, 0xd9, 0x2a, 0xc0, 0xf7, 0x52, 0xc8, 0xa6, 0x15, 0x1a, 0x49, 0xd4, 0x73, 0x6f, 0xa4, 0xc4,
+ 0x48, 0xd2, 0xa6, 0x50, 0x28, 0xa9, 0xbd, 0x6a, 0x5f, 0xed, 0xd0, 0x36, 0xf5, 0x9d, 0x10, 0x62,
+ 0xc6, 0xa7, 0xa6, 0xd0, 0x3b, 0x71, 0x59, 0xa6, 0xf5, 0xe4, 0xff, 0xc0, 0x5f, 0xa0, 0x46, 0x4e,
+ 0x8c, 0x4f, 0x3e, 0x0e, 0x75, 0xaf, 0x66, 0xe0, 0xf6, 0x15, 0x0c, 0x0f, 0xdd, 0x77, 0x83, 0x8c,
+ 0xc9, 0x38, 0x85, 0xc4, 0x3a, 0xce, 0xf4, 0x3d, 0x4d, 0xcf, 0x69, 0xe6, 0x83, 0x2e, 0xcc, 0x7a,
+ 0x05, 0x40, 0xbb, 0x38, 0x62, 0x4b, 0x98, 0xb0, 0x17, 0x6f, 0xd3, 0x8a, 0xa7, 0xf9, 0x4c, 0xcd,
+ 0xdc, 0xcf, 0x08, 0x4b, 0x3e, 0x98, 0x78, 0x05, 0xa0, 0x53, 0xc9, 0x24, 0x10, 0xa8, 0x2c, 0xc7,
+ 0x70, 0xe5, 0x4d, 0x20, 0xb0, 0x45, 0xcd, 0x11, 0x09, 0x44, 0x88, 0x37, 0xfb, 0x28, 0xda, 0xb9,
+ 0x7a, 0x4f, 0x72, 0xc2, 0x9a, 0x5c, 0x8e, 0xb2, 0x86, 0x41, 0x62, 0x29, 0x1b, 0x54, 0x30, 0xeb,
+ 0x4b, 0xed, 0xdf, 0x74, 0xb1, 0x87, 0x84, 0x9d, 0x76, 0x37, 0x7b, 0xd4, 0x83, 0xf4, 0xb8, 0x32,
+ 0x67, 0xf2, 0x94, 0xab, 0xf6, 0x91, 0xfc, 0xa3, 0x1e, 0xa4, 0xb5, 0x27, 0x63, 0x57, 0xeb, 0x79,
+ 0x9c, 0x5c, 0xce, 0x4a, 0xb6, 0xc8, 0xa7, 0x3b, 0x2c, 0x63, 0x25, 0xda, 0x93, 0x71, 0x4a, 0x8d,
+ 0x50, 0x62, 0x4f, 0xa6, 0x43, 0xc5, 0x64, 0x70, 0x76, 0x29, 0xb6, 0xb3, 0x74, 0x86, 0x57, 0xd4,
+ 0x8e, 0x21, 0x01, 0x10, 0x19, 0x9c, 0x17, 0xf4, 0x04, 0x91, 0x5c, 0x71, 0xf3, 0x34, 0x89, 0x33,
+ 0xe9, 0x6f, 0x8b, 0x36, 0xe3, 0x80, 0x9d, 0x41, 0xe4, 0x51, 0xf0, 0xd4, 0x73, 0xb2, 0x28, 0xf3,
+ 0x83, 0x9c, 0x33, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x0b, 0x44, 0xc3, 0xea, 0x04, 0xde, 0xd6,
+ 0xa5, 0xa9, 0xff, 0xf1, 0x0d, 0xab, 0xf5, 0xef, 0x23, 0x25, 0x0f, 0x0d, 0xab, 0x88, 0x43, 0x95,
+ 0x51, 0x4e, 0x64, 0xc0, 0x04, 0xb4, 0xdd, 0x30, 0x79, 0xd8, 0x0d, 0xfa, 0xfd, 0x8c, 0xf9, 0x2a,
+ 0x83, 0x90, 0x1f, 0x01, 0xf4, 0xf1, 0xd3, 0x80, 0x66, 0xbb, 0xc5, 0xa9, 0xcf, 0x05, 0x24, 0x97,
+ 0xad, 0x2b, 0x46, 0x6e, 0x41, 0x25, 0x42, 0x6c, 0xb7, 0x10, 0xa8, 0xbf, 0x89, 0x0e, 0x12, 0x96,
+ 0x87, 0x9a, 0xa8, 0x96, 0xf7, 0x69, 0x22, 0xc5, 0x99, 0xc5, 0xaf, 0x96, 0xaa, 0xc8, 0x94, 0xcd,
+ 0xb4, 0x4e, 0x58, 0xb0, 0x21, 0x62, 0xf1, 0x4b, 0xc2, 0x26, 0x27, 0xc7, 0x3e, 0x8f, 0xda, 0xf7,
+ 0x95, 0x5b, 0x56, 0x8e, 0xe8, 0xfb, 0xca, 0x14, 0x4b, 0x57, 0x52, 0xc6, 0x48, 0x87, 0x15, 0x37,
+ 0x4e, 0x36, 0xfa, 0xc1, 0x66, 0xc9, 0xe3, 0xf8, 0xdc, 0xc9, 0x20, 0x2e, 0xa5, 0xd7, 0xcd, 0x80,
+ 0x21, 0x83, 0x11, 0x4b, 0x9e, 0x00, 0x8e, 0x86, 0x30, 0xc7, 0xf3, 0x0e, 0xcb, 0x39, 0xe4, 0xdc,
+ 0x37, 0x84, 0xb9, 0xc6, 0x14, 0x18, 0x1a, 0xc2, 0x28, 0x05, 0x14, 0xb7, 0x62, 0x3f, 0x08, 0xf8,
+ 0x71, 0x3c, 0xf7, 0x66, 0x6c, 0x72, 0xaf, 0x47, 0xca, 0x43, 0x71, 0x8b, 0x38, 0xeb, 0x90, 0xcf,
+ 0xf6, 0x32, 0x89, 0xcb, 0x99, 0xde, 0xdd, 0x98, 0x0e, 0x9f, 0xd0, 0x76, 0x5c, 0x92, 0x38, 0xe4,
+ 0x0b, 0x6b, 0xa0, 0x61, 0xe7, 0x60, 0x1e, 0xcf, 0x74, 0x4d, 0x3d, 0x35, 0x10, 0xf2, 0x56, 0x55,
+ 0x1f, 0x76, 0x83, 0xc8, 0xcf, 0xab, 0x74, 0x0a, 0x2c, 0xe0, 0x47, 0xc8, 0xfb, 0xf8, 0xc1, 0x20,
+ 0xca, 0xde, 0xea, 0x7a, 0xcb, 0x15, 0xdd, 0x76, 0x3e, 0x55, 0xeb, 0xd8, 0x11, 0xf1, 0x78, 0x10,
+ 0x17, 0xca, 0xde, 0x08, 0x1e, 0xf5, 0xd1, 0x66, 0x83, 0x36, 0xd4, 0x47, 0xf5, 0xfe, 0x6b, 0x9f,
+ 0x3e, 0xea, 0x83, 0x95, 0xcf, 0x9f, 0xab, 0x3e, 0xba, 0x1b, 0xf3, 0xb8, 0xce, 0xdb, 0x5f, 0xa5,
+ 0x70, 0xa5, 0x16, 0xc2, 0x9e, 0xfa, 0x36, 0xd4, 0x48, 0xbc, 0xa8, 0x86, 0x56, 0xc5, 0x5b, 0xbd,
+ 0xf9, 0x80, 0x6f, 0xb5, 0x42, 0xe8, 0xf4, 0x8d, 0x96, 0x0a, 0x5b, 0xbd, 0xf9, 0x80, 0x6f, 0xf5,
+ 0x06, 0x6c, 0xa7, 0x6f, 0xf4, 0x1a, 0xec, 0x56, 0x6f, 0x5e, 0xf9, 0xfe, 0x9b, 0xa6, 0xe3, 0xda,
+ 0xce, 0xeb, 0x3c, 0x2c, 0xe1, 0xe9, 0x12, 0x7c, 0xe9, 0xa4, 0x6b, 0x4f, 0xa3, 0xa1, 0x74, 0x92,
+ 0x56, 0xb1, 0x3e, 0x9b, 0xe2, 0x2b, 0xc5, 0x09, 0xab, 0x52, 0x71, 0x48, 0xff, 0xac, 0x87, 0xd1,
+ 0x06, 0x0e, 0x2d, 0x9a, 0x42, 0x4a, 0xe6, 0xb8, 0xd1, 0x41, 0xcd, 0x8d, 0xe2, 0x8d, 0x80, 0xbd,
+ 0xf6, 0xc5, 0xe2, 0xcd, 0x9e, 0xb4, 0x39, 0xf8, 0x73, 0x18, 0xfb, 0xc4, 0x31, 0xd4, 0xaa, 0xde,
+ 0x43, 0xc7, 0x27, 0xfd, 0x15, 0x94, 0xfb, 0xbf, 0x6b, 0xd6, 0x15, 0xd8, 0xbf, 0xea, 0x04, 0x4f,
+ 0xfb, 0x58, 0x44, 0x1d, 0xe1, 0xd9, 0xb5, 0x74, 0x54, 0x41, 0xfe, 0x73, 0x10, 0xdd, 0xf1, 0x16,
+ 0xc4, 0x3d, 0x7b, 0xfe, 0xfd, 0x3e, 0xb6, 0xfd, 0x67, 0xd0, 0x5f, 0x7c, 0x17, 0x55, 0x55, 0xba,
+ 0x7f, 0x6a, 0x96, 0xf7, 0x8d, 0x86, 0x78, 0xeb, 0xe3, 0x65, 0x39, 0x85, 0x52, 0xf5, 0xd8, 0x50,
+ 0xd0, 0x19, 0x18, 0xf7, 0xdb, 0x4f, 0xaf, 0xa9, 0x65, 0x7d, 0xe2, 0xc7, 0x81, 0xd5, 0xdb, 0x7c,
+ 0x56, 0x79, 0x42, 0x96, 0x2d, 0x1a, 0x17, 0xe8, 0xb3, 0xeb, 0xaa, 0x51, 0x3d, 0xd9, 0x82, 0xc5,
+ 0x17, 0x03, 0x9e, 0xf5, 0x34, 0xec, 0x7c, 0x43, 0xe0, 0x93, 0xeb, 0x29, 0xa9, 0xb2, 0xfc, 0xf7,
+ 0x20, 0xba, 0xef, 0xb0, 0xe6, 0xb4, 0x03, 0xed, 0xc9, 0xfc, 0x24, 0x60, 0x9f, 0x52, 0xd2, 0x85,
+ 0xfb, 0x83, 0xef, 0xa6, 0x6c, 0xbe, 0x87, 0xe3, 0xa8, 0xec, 0xa5, 0x19, 0x87, 0xb2, 0xfd, 0x3d,
+ 0x1c, 0xd7, 0xae, 0xa4, 0x46, 0xf4, 0xf7, 0x70, 0x02, 0xb8, 0xf5, 0x3d, 0x1c, 0x8f, 0x67, 0xef,
+ 0xf7, 0x70, 0xbc, 0xd6, 0x82, 0xdf, 0xc3, 0x09, 0x6b, 0x50, 0x93, 0x4f, 0x53, 0x04, 0xb9, 0xab,
+ 0xde, 0xcb, 0xa2, 0xbb, 0xc9, 0xfe, 0xf4, 0x3a, 0x2a, 0xc4, 0xf4, 0x2b, 0x39, 0x71, 0x0b, 0xaf,
+ 0xc7, 0x33, 0x75, 0x6e, 0xe2, 0x6d, 0xf5, 0xe6, 0x95, 0xef, 0x9f, 0xa9, 0xb5, 0x97, 0x9e, 0x6c,
+ 0x58, 0x29, 0xde, 0xa9, 0x5c, 0x0f, 0x4d, 0x1e, 0xb5, 0x05, 0xbb, 0xe5, 0x37, 0xfa, 0xc1, 0x44,
+ 0x75, 0x6b, 0x42, 0x35, 0xfa, 0xa8, 0xcb, 0x10, 0x6a, 0xf2, 0xad, 0xde, 0x3c, 0x31, 0xc9, 0x49,
+ 0xdf, 0xb2, 0xb5, 0x7b, 0x18, 0x73, 0xdb, 0xfa, 0x49, 0x7f, 0x05, 0xe5, 0x7e, 0xa9, 0x92, 0x5a,
+ 0xdb, 0xbd, 0x68, 0xe7, 0xcd, 0x2e, 0x53, 0x63, 0xa7, 0x99, 0x47, 0x7d, 0xf1, 0x50, 0x7a, 0x63,
+ 0x4f, 0xf0, 0x5d, 0xe9, 0x8d, 0x77, 0x92, 0xff, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x3a, 0x88,
+ 0x6e, 0x92, 0x65, 0x51, 0x71, 0xf0, 0x59, 0x5f, 0xcb, 0x28, 0x1e, 0x3e, 0xbf, 0xb6, 0x9e, 0x2a,
+ 0xd4, 0x7f, 0x0c, 0xa2, 0x5b, 0x81, 0x42, 0xc9, 0x00, 0xb9, 0x86, 0x75, 0x37, 0x50, 0x7e, 0x7c,
+ 0x7d, 0x45, 0x6a, 0xba, 0xb7, 0xf1, 0x71, 0xfb, 0x43, 0x31, 0x01, 0xdb, 0x63, 0xfa, 0x43, 0x31,
+ 0xdd, 0x5a, 0x78, 0x0b, 0xaa, 0x4e, 0x4a, 0xd4, 0xca, 0xc8, 0xb7, 0x05, 0x25, 0x72, 0x16, 0xb4,
+ 0x22, 0x5a, 0xeb, 0xe4, 0x7c, 0x4e, 0x5e, 0xbc, 0x2d, 0xe2, 0x7c, 0x4a, 0x3b, 0x91, 0xf2, 0x6e,
+ 0x27, 0x9a, 0xc3, 0x5b, 0x77, 0xb5, 0xf4, 0x94, 0x35, 0xcb, 0xbc, 0x47, 0x94, 0xbe, 0x46, 0x82,
+ 0x5b, 0x77, 0x2d, 0x94, 0xf0, 0xa6, 0x72, 0xda, 0x90, 0x37, 0x94, 0xca, 0x3e, 0xee, 0x83, 0xa2,
+ 0x05, 0x84, 0xf6, 0xa6, 0x4f, 0x04, 0x36, 0x42, 0x56, 0x5a, 0xa7, 0x02, 0x9b, 0x3d, 0x69, 0xc2,
+ 0xed, 0x18, 0xf8, 0x97, 0x10, 0x4f, 0xa1, 0x0c, 0xba, 0xd5, 0x54, 0x2f, 0xb7, 0x36, 0xed, 0x73,
+ 0xbb, 0xc3, 0xb2, 0xc5, 0x3c, 0x57, 0x8d, 0x49, 0xba, 0xb5, 0xa9, 0x6e, 0xb7, 0x88, 0xc6, 0x9b,
+ 0x96, 0xc6, 0xad, 0x48, 0x2f, 0x1f, 0x87, 0xcd, 0x38, 0x59, 0xe5, 0x7a, 0x2f, 0x96, 0xae, 0xa7,
+ 0x0a, 0xa3, 0x8e, 0x7a, 0xa2, 0x48, 0xda, 0xec, 0x49, 0xe3, 0xdd, 0x43, 0xcb, 0xad, 0x8e, 0xa7,
+ 0xad, 0x0e, 0x5b, 0xad, 0x90, 0x7a, 0xd2, 0x5f, 0x01, 0xef, 0xd5, 0xaa, 0xa8, 0xaa, 0xd7, 0x45,
+ 0x7b, 0x69, 0x96, 0x0d, 0xd7, 0x03, 0x61, 0xd2, 0x40, 0xc1, 0xbd, 0x5a, 0x0f, 0x4c, 0x44, 0x72,
+ 0xb3, 0xb7, 0x99, 0x0f, 0xbb, 0xec, 0x08, 0xaa, 0x57, 0x24, 0xdb, 0x34, 0xda, 0x6f, 0xb3, 0x1e,
+ 0xb5, 0xae, 0xed, 0x28, 0xfc, 0xe0, 0x5a, 0x15, 0xde, 0xea, 0xcd, 0xa3, 0xcb, 0x00, 0x82, 0x12,
+ 0x33, 0xcb, 0x3d, 0xca, 0x84, 0x33, 0x93, 0xdc, 0xef, 0xa0, 0xd0, 0x9e, 0xa5, 0xec, 0x46, 0xaf,
+ 0xd3, 0xe9, 0x0c, 0xb8, 0xf7, 0x1c, 0xcb, 0x06, 0x82, 0xe7, 0x58, 0x08, 0x44, 0x4d, 0x27, 0x7f,
+ 0xd7, 0x9b, 0xb5, 0x07, 0x53, 0x5f, 0xd3, 0x29, 0x65, 0x8b, 0x0a, 0x35, 0x9d, 0x97, 0x46, 0xa3,
+ 0x81, 0x76, 0xab, 0x5e, 0xdc, 0x7f, 0x1c, 0x32, 0x83, 0xde, 0xde, 0x5f, 0xef, 0xc5, 0xa2, 0x19,
+ 0xc5, 0x38, 0x4c, 0xe7, 0x29, 0xf7, 0xcd, 0x28, 0x96, 0x8d, 0x1a, 0x09, 0xcd, 0x28, 0x6d, 0x94,
+ 0xaa, 0x5e, 0x9d, 0x23, 0x1c, 0x4c, 0xc3, 0xd5, 0x93, 0x4c, 0xbf, 0xea, 0x69, 0xb6, 0x75, 0xec,
+ 0x9a, 0xeb, 0x90, 0xe1, 0x17, 0x6a, 0xb1, 0xec, 0x89, 0x6d, 0xf1, 0x42, 0x27, 0x06, 0x43, 0xa3,
+ 0x0e, 0xa5, 0x80, 0x8f, 0x13, 0x6a, 0xae, 0x39, 0x19, 0x2e, 0x0a, 0x88, 0xcb, 0x38, 0x4f, 0xbc,
+ 0x8b, 0x53, 0x61, 0xb0, 0x45, 0x86, 0x16, 0xa7, 0xa4, 0x06, 0x3a, 0xd4, 0x77, 0x5f, 0xc5, 0xf4,
+ 0x74, 0x05, 0xfd, 0xce, 0xa3, 0xfb, 0x26, 0xe6, 0xa3, 0x1e, 0x24, 0x3e, 0xd4, 0x6f, 0x00, 0xbd,
+ 0x2d, 0x2f, 0x9d, 0x7e, 0x1c, 0x30, 0xe5, 0xa2, 0xa1, 0x85, 0x30, 0xad, 0x82, 0x82, 0x5a, 0x27,
+ 0xb8, 0xc0, 0x7f, 0x0a, 0x2b, 0x5f, 0x50, 0x9b, 0xfc, 0x54, 0x20, 0xa1, 0xa0, 0x6e, 0xa3, 0x28,
+ 0xcf, 0xb4, 0xd7, 0x41, 0x0f, 0x02, 0xfa, 0xf6, 0xd2, 0x67, 0xad, 0x93, 0x43, 0x3d, 0x67, 0x37,
+ 0x5d, 0x3a, 0xa7, 0x18, 0x9e, 0x82, 0xee, 0xa6, 0x4b, 0xff, 0x21, 0xc6, 0x7a, 0x2f, 0x16, 0x5f,
+ 0x18, 0x88, 0x39, 0xbc, 0x6d, 0x4e, 0xf2, 0x3d, 0xc5, 0x15, 0xf2, 0xd6, 0x51, 0xfe, 0xc3, 0x6e,
+ 0xd0, 0x5c, 0xcf, 0x3d, 0x29, 0x59, 0x02, 0x55, 0xa5, 0xbe, 0x9e, 0xe7, 0xde, 0x7f, 0x52, 0xb2,
+ 0x11, 0xfa, 0x76, 0xde, 0xbd, 0x30, 0xa4, 0x6c, 0x7f, 0x19, 0xbd, 0x7b, 0xc8, 0x66, 0x63, 0xc8,
+ 0xa7, 0xc3, 0x1f, 0xb9, 0x17, 0x62, 0xd9, 0x6c, 0x54, 0xff, 0xac, 0xed, 0xdd, 0xa0, 0xc4, 0xe6,
+ 0x4a, 0xdf, 0x2e, 0xbc, 0x59, 0xcc, 0xc6, 0x3c, 0xe6, 0xe8, 0x4a, 0x9f, 0xf8, 0x7d, 0x54, 0x0b,
+ 0x88, 0x2b, 0x7d, 0x0e, 0x80, 0xec, 0x4d, 0x4a, 0x00, 0xaf, 0xbd, 0x5a, 0x10, 0xb4, 0xa7, 0x00,
+ 0x33, 0xeb, 0x6a, 0x7b, 0x75, 0x62, 0x8b, 0xaf, 0xe0, 0x19, 0x1d, 0x21, 0x25, 0x66, 0xdd, 0x36,
+ 0x65, 0x82, 0x41, 0x56, 0x5f, 0x7c, 0xcf, 0x63, 0x31, 0x9f, 0xc7, 0xe5, 0x0a, 0x05, 0x83, 0xaa,
+ 0xa5, 0x05, 0x10, 0xc1, 0xe0, 0x05, 0x4d, 0x94, 0x37, 0x8f, 0x39, 0xb9, 0xdc, 0x67, 0x25, 0x5b,
+ 0xf0, 0x34, 0x07, 0xfc, 0x4d, 0x07, 0xfd, 0x40, 0x6d, 0x86, 0x88, 0x72, 0x8a, 0x35, 0x59, 0xa1,
+ 0x20, 0xe4, 0xed, 0x40, 0xf1, 0x0d, 0xda, 0x8a, 0xb3, 0x12, 0x9f, 0x0e, 0x4a, 0x2b, 0x18, 0x22,
+ 0xb2, 0x42, 0x12, 0x46, 0x6d, 0x7f, 0x92, 0xe6, 0x33, 0x6f, 0xdb, 0x9f, 0xd8, 0x5f, 0x70, 0xbc,
+ 0x45, 0x03, 0x66, 0x7c, 0x97, 0x0f, 0x4d, 0x7e, 0x37, 0x49, 0xbd, 0x99, 0xe9, 0x7d, 0xe8, 0x36,
+ 0x41, 0x8c, 0xef, 0x7e, 0x12, 0xb9, 0x7a, 0x59, 0x40, 0x0e, 0xd3, 0xe6, 0x0e, 0x9c, 0xcf, 0x95,
+ 0x43, 0x04, 0x5d, 0x61, 0xd2, 0x8c, 0xaa, 0x42, 0x7e, 0xba, 0xc8, 0x4f, 0x4a, 0x76, 0x9e, 0x66,
+ 0x50, 0xa2, 0x51, 0x55, 0xaa, 0x5b, 0x72, 0x62, 0x54, 0xf5, 0x71, 0xe6, 0x32, 0x85, 0x90, 0x3a,
+ 0x1f, 0x52, 0x9e, 0x94, 0x71, 0x82, 0x2f, 0x53, 0x48, 0x1b, 0x6d, 0x8c, 0xd8, 0x49, 0x0b, 0xe0,
+ 0x26, 0xd2, 0x8f, 0x80, 0x97, 0x69, 0x52, 0x8d, 0x81, 0x9f, 0xc4, 0x65, 0x3c, 0x07, 0x0e, 0x25,
+ 0x8e, 0x74, 0x85, 0x8c, 0x1c, 0x86, 0x88, 0x74, 0x8a, 0x55, 0x0e, 0xff, 0x30, 0x7a, 0xbf, 0x1e,
+ 0xe8, 0x21, 0x57, 0xdf, 0xfc, 0x7f, 0x21, 0xfe, 0x58, 0xc8, 0xf0, 0x03, 0x6d, 0x63, 0xcc, 0x4b,
+ 0x88, 0xe7, 0x8d, 0xed, 0xf7, 0xf4, 0xef, 0x02, 0x7c, 0x32, 0xa8, 0x1b, 0xe4, 0x98, 0xf1, 0xf4,
+ 0xbc, 0x5e, 0x57, 0xa9, 0x53, 0x2c, 0xd4, 0x20, 0xb6, 0x78, 0x14, 0xf8, 0x4c, 0x81, 0x8f, 0x33,
+ 0x03, 0x8d, 0x2d, 0x3d, 0x85, 0x22, 0xc3, 0x03, 0x8d, 0xa3, 0x2d, 0x00, 0x62, 0xa0, 0xf1, 0x82,
+ 0x26, 0xba, 0x6c, 0xf1, 0x04, 0xc2, 0x95, 0x99, 0x40, 0xbf, 0xca, 0x4c, 0x9c, 0x77, 0x04, 0xb2,
+ 0xe8, 0xfd, 0x23, 0x98, 0xbf, 0x81, 0xb2, 0xba, 0x48, 0x8b, 0xfd, 0x7a, 0x86, 0x8d, 0xf9, 0x02,
+ 0xbf, 0x45, 0x67, 0x88, 0x91, 0x46, 0x88, 0x34, 0x84, 0x40, 0xcd, 0x50, 0x66, 0x80, 0x83, 0xea,
+ 0x38, 0x9e, 0x83, 0xf8, 0xe8, 0xc2, 0x70, 0x9d, 0x32, 0x62, 0x41, 0xc4, 0x50, 0x46, 0xc2, 0xd6,
+ 0xeb, 0x46, 0x86, 0x39, 0x85, 0x59, 0x1d, 0x61, 0xe5, 0x49, 0xbc, 0x9a, 0x43, 0xce, 0x95, 0x49,
+ 0xb4, 0x09, 0x6b, 0x99, 0xf4, 0xf3, 0xc4, 0x26, 0x6c, 0x1f, 0x3d, 0x2b, 0xe9, 0x76, 0x1e, 0xfc,
+ 0x09, 0x2b, 0xb9, 0xfc, 0x8b, 0x1e, 0x67, 0x65, 0x86, 0x92, 0x6e, 0xf7, 0xa1, 0x3a, 0x24, 0x91,
+ 0x74, 0x87, 0x35, 0xac, 0x4f, 0x61, 0x3b, 0x65, 0x78, 0x05, 0xa5, 0x8e, 0x93, 0x17, 0xf3, 0x38,
+ 0xcd, 0x54, 0x34, 0x7c, 0x11, 0xb0, 0x4d, 0xe8, 0x10, 0x9f, 0xc2, 0xee, 0xab, 0x6b, 0x7d, 0x3c,
+ 0x3c, 0x5c, 0x42, 0xb4, 0x27, 0xdc, 0x61, 0x9f, 0xd8, 0x13, 0xee, 0xd6, 0x32, 0x4b, 0x35, 0xc3,
+ 0x0a, 0x6e, 0x25, 0x88, 0x1d, 0x36, 0xc5, 0x1b, 0x44, 0x96, 0x4d, 0x04, 0x12, 0x4b, 0xb5, 0xa0,
+ 0x82, 0x99, 0xdb, 0x0c, 0xb6, 0x97, 0xe6, 0x71, 0x96, 0xfe, 0x1c, 0xdf, 0x7d, 0xb6, 0xec, 0x34,
+ 0x04, 0x31, 0xb7, 0xf9, 0x49, 0x9f, 0xab, 0x7d, 0xe0, 0x93, 0xb4, 0x1e, 0xfa, 0x1f, 0x06, 0x9e,
+ 0x9b, 0x20, 0xba, 0x5d, 0x59, 0xa4, 0x72, 0xf5, 0x8b, 0x41, 0x74, 0x13, 0x3f, 0xd6, 0xed, 0xa2,
+ 0x18, 0xd7, 0x29, 0xc9, 0x29, 0x24, 0x90, 0x16, 0x7c, 0xf8, 0x69, 0xf8, 0x59, 0x21, 0x9c, 0x38,
+ 0x59, 0xef, 0xa1, 0x66, 0x9d, 0xd7, 0xd6, 0x63, 0xc9, 0x58, 0xfe, 0xa9, 0xab, 0xb3, 0x0a, 0x4a,
+ 0x35, 0x53, 0xee, 0x03, 0x47, 0xbd, 0xd3, 0xe2, 0x46, 0x16, 0x58, 0x57, 0x94, 0xe8, 0x9d, 0x61,
+ 0x0d, 0xb3, 0xbb, 0x63, 0x71, 0xa7, 0x50, 0xb1, 0x6c, 0x09, 0xe2, 0xfa, 0xdb, 0x06, 0x69, 0xcc,
+ 0xa2, 0x88, 0xdd, 0x1d, 0x9a, 0x36, 0xe9, 0x46, 0xdb, 0xed, 0x76, 0xbe, 0x3a, 0xc0, 0x67, 0xe4,
+ 0x1e, 0x4b, 0x02, 0x23, 0xd2, 0x8d, 0x00, 0x6e, 0xed, 0x7e, 0x96, 0x2c, 0x9e, 0x26, 0x71, 0xc5,
+ 0x4f, 0xe2, 0x55, 0xc6, 0xe2, 0xa9, 0x98, 0xd7, 0xf1, 0xee, 0x67, 0xc3, 0x8c, 0x6c, 0x88, 0xda,
+ 0xfd, 0xa4, 0x60, 0xb3, 0xb2, 0x53, 0x7f, 0xc1, 0x4b, 0x5d, 0x2d, 0xbc, 0x8b, 0x72, 0x24, 0x51,
+ 0x5e, 0x7c, 0xad, 0xf0, 0x5e, 0x18, 0x32, 0xaf, 0x44, 0x49, 0x91, 0x48, 0x43, 0x6e, 0xf9, 0x74,
+ 0x9c, 0x04, 0xe4, 0x76, 0x80, 0x30, 0x9f, 0x49, 0x90, 0xbf, 0x37, 0x7f, 0x84, 0x82, 0xab, 0x0f,
+ 0xf7, 0x6e, 0xf8, 0x74, 0x6d, 0x68, 0x64, 0x7f, 0xfb, 0x6c, 0xb3, 0x27, 0x6d, 0x16, 0x6e, 0xea,
+ 0xe3, 0xc1, 0x47, 0x50, 0x79, 0xde, 0x6f, 0xae, 0x85, 0x23, 0x23, 0x25, 0x16, 0x6e, 0x6d, 0xca,
+ 0x04, 0x7a, 0x2d, 0x7b, 0x31, 0x4d, 0xb9, 0x92, 0x35, 0x17, 0x76, 0x37, 0xda, 0x06, 0xda, 0x14,
+ 0x51, 0x2b, 0x9a, 0x36, 0x63, 0x79, 0xcd, 0x4c, 0xd8, 0x6c, 0x96, 0x81, 0x82, 0x4e, 0x21, 0x96,
+ 0xdf, 0x78, 0xdb, 0x6a, 0xdb, 0xf2, 0x82, 0xc4, 0x58, 0x1e, 0x54, 0x30, 0x69, 0x64, 0x8d, 0xc9,
+ 0x33, 0x88, 0xe6, 0xc1, 0xae, 0xb5, 0xcd, 0x38, 0x00, 0x91, 0x46, 0x7a, 0x41, 0xf3, 0x1a, 0x56,
+ 0x2d, 0xde, 0x87, 0xe6, 0x49, 0xe0, 0x2f, 0xe2, 0x08, 0x65, 0x4b, 0x4c, 0xbc, 0x86, 0xe5, 0xc1,
+ 0xcc, 0x3a, 0x01, 0x79, 0x78, 0xbe, 0x3a, 0x98, 0xe2, 0x75, 0x02, 0xd6, 0x17, 0x0c, 0xb1, 0x4e,
+ 0xa0, 0x58, 0xb7, 0xe9, 0xf4, 0xe7, 0x7f, 0x0f, 0xe3, 0xca, 0x54, 0xce, 0xd3, 0x74, 0x5e, 0x30,
+ 0xd4, 0x74, 0x94, 0x82, 0xfb, 0x48, 0xed, 0x8f, 0x0b, 0x7b, 0x1e, 0xa9, 0xef, 0xa3, 0xc2, 0x0f,
+ 0xba, 0x30, 0xe9, 0xe1, 0xf9, 0xed, 0xff, 0xf9, 0xe6, 0xc6, 0xe0, 0xeb, 0x6f, 0x6e, 0x0c, 0xfe,
+ 0xef, 0x9b, 0x1b, 0x83, 0x5f, 0x7c, 0x7b, 0xe3, 0x9d, 0xaf, 0xbf, 0xbd, 0xf1, 0xce, 0xff, 0x7e,
+ 0x7b, 0xe3, 0x9d, 0xaf, 0xde, 0x55, 0x7f, 0x7d, 0xf1, 0xcd, 0xaf, 0x88, 0xbf, 0xa1, 0xf8, 0xec,
+ 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x4f, 0x9f, 0x53, 0xa1, 0x71, 0x00, 0x00,
}
// This is a compile-time assertion to ensure that this generated file
@@ -469,6 +470,7 @@ type ClientCommandsHandler interface {
ObjectCreateRelationOption(context.Context, *pb.RpcObjectCreateRelationOptionRequest) *pb.RpcObjectCreateRelationOptionResponse
RelationListRemoveOption(context.Context, *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse
RelationOptions(context.Context, *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse
+ RelationListWithValue(context.Context, *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse
// Object Relations
// ***
ObjectRelationAdd(context.Context, *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse
@@ -2621,6 +2623,26 @@ func RelationOptions(b []byte) (resp []byte) {
return resp
}
+func RelationListWithValue(b []byte) (resp []byte) {
+ defer func() {
+ if PanicHandler != nil {
+ if r := recover(); r != nil {
+ resp, _ = (&pb.RpcRelationListWithValueResponse{Error: &pb.RpcRelationListWithValueResponseError{Code: pb.RpcRelationListWithValueResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
+ PanicHandler(r)
+ }
+ }
+ }()
+
+ in := new(pb.RpcRelationListWithValueRequest)
+ if err := in.Unmarshal(b); err != nil {
+ resp, _ = (&pb.RpcRelationListWithValueResponse{Error: &pb.RpcRelationListWithValueResponseError{Code: pb.RpcRelationListWithValueResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
+ return resp
+ }
+
+ resp, _ = clientCommandsHandler.RelationListWithValue(context.Background(), in).Marshal()
+ return resp
+}
+
func ObjectRelationAdd(b []byte) (resp []byte) {
defer func() {
if PanicHandler != nil {
@@ -6061,6 +6083,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
cd = RelationListRemoveOption(data)
case "RelationOptions":
cd = RelationOptions(data)
+ case "RelationListWithValue":
+ cd = RelationListWithValue(data)
case "ObjectRelationAdd":
cd = ObjectRelationAdd(data)
case "ObjectRelationDelete":
@@ -7765,6 +7789,20 @@ func (h *ClientCommandsHandlerProxy) RelationOptions(ctx context.Context, req *p
call, _ := actualCall(ctx, req)
return call.(*pb.RpcRelationOptionsResponse)
}
+func (h *ClientCommandsHandlerProxy) RelationListWithValue(ctx context.Context, req *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse {
+ actualCall := func(ctx context.Context, req any) (any, error) {
+ return h.client.RelationListWithValue(ctx, req.(*pb.RpcRelationListWithValueRequest)), nil
+ }
+ for _, interceptor := range h.interceptors {
+ toCall := actualCall
+ currentInterceptor := interceptor
+ actualCall = func(ctx context.Context, req any) (any, error) {
+ return currentInterceptor(ctx, req, "RelationListWithValue", toCall)
+ }
+ }
+ call, _ := actualCall(ctx, req)
+ return call.(*pb.RpcRelationListWithValueResponse)
+}
func (h *ClientCommandsHandlerProxy) ObjectRelationAdd(ctx context.Context, req *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse {
actualCall := func(ctx context.Context, req any) (any, error) {
return h.client.ObjectRelationAdd(ctx, req.(*pb.RpcObjectRelationAddRequest)), nil
diff --git a/core/anytype/bootstrap.go b/core/anytype/bootstrap.go
index f0683fc5f..5e266f4d6 100644
--- a/core/anytype/bootstrap.go
+++ b/core/anytype/bootstrap.go
@@ -38,6 +38,7 @@ import (
"github.com/anyproto/anytype-heart/core/block/bookmark"
decorator "github.com/anyproto/anytype-heart/core/block/bookmark/bookmarkimporter"
"github.com/anyproto/anytype-heart/core/block/collection"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/block/editor"
"github.com/anyproto/anytype-heart/core/block/editor/converter"
"github.com/anyproto/anytype-heart/core/block/editor/lastused"
@@ -267,6 +268,7 @@ func Bootstrap(a *app.App, components ...app.Component) {
Register(core.New()).
Register(core.NewTempDirService()).
Register(treemanager.New()).
+ Register(detailservice.New()).
Register(block.New()).
Register(indexer.New()).
Register(detailsupdater.New()).
diff --git a/core/application/account_create.go b/core/application/account_create.go
index 2204d0cd8..53c63b19b 100644
--- a/core/application/account_create.go
+++ b/core/application/account_create.go
@@ -13,6 +13,7 @@ import (
"github.com/anyproto/anytype-heart/core/anytype/account"
"github.com/anyproto/anytype-heart/core/anytype/config"
"github.com/anyproto/anytype-heart/core/block"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
@@ -150,14 +151,15 @@ func (s *Service) setAccountAndProfileDetails(ctx context.Context, req *pb.RpcAc
}
accountObjects := spc.DerivedIDs()
- if err := bs.SetDetails(nil,
+ ds := app.MustComponent[detailservice.Service](s.app)
+ if err := ds.SetDetails(nil,
accountObjects.Profile,
profileDetails,
); err != nil {
return errors.Join(ErrSetDetails, err)
}
- if err := bs.SetDetails(nil,
+ if err := ds.SetDetails(nil,
accountObjects.Workspace,
commonDetails,
); err != nil {
diff --git a/core/application/account_create_from_export.go b/core/application/account_create_from_export.go
index 7d9077953..a4000e6a7 100644
--- a/core/application/account_create_from_export.go
+++ b/core/application/account_create_from_export.go
@@ -16,7 +16,7 @@ import (
"github.com/anyproto/anytype-heart/core/anytype"
"github.com/anyproto/anytype-heart/core/anytype/account"
"github.com/anyproto/anytype-heart/core/anytype/config"
- "github.com/anyproto/anytype-heart/core/block"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/metrics"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
@@ -160,7 +160,7 @@ func (s *Service) getBootstrapConfig(req *pb.RpcAccountRecoverFromLegacyExportRe
func (s *Service) setDetails(profile *pb.Profile, icon int64) error {
profileDetails, accountDetails := buildDetails(profile, icon)
- bs := s.app.MustComponent(block.CName).(*block.Service)
+ ds := app.MustComponent[detailservice.Service](s.app)
spaceService := app.MustComponent[space.Service](s.app)
spc, err := spaceService.GetPersonalSpace(context.Background())
@@ -169,13 +169,13 @@ func (s *Service) setDetails(profile *pb.Profile, icon int64) error {
}
accountObjects := spc.DerivedIDs()
- if err := bs.SetDetails(nil,
+ if err := ds.SetDetails(nil,
accountObjects.Profile,
profileDetails,
); err != nil {
return err
}
- if err := bs.SetDetails(nil,
+ if err := ds.SetDetails(nil,
accountObjects.Workspace,
accountDetails,
); err != nil {
diff --git a/core/block.go b/core/block.go
index 2f804fe82..17d9f9cd8 100644
--- a/core/block.go
+++ b/core/block.go
@@ -416,40 +416,6 @@ func (mw *Middleware) ObjectListDelete(cctx context.Context, req *pb.RpcObjectLi
return response(pb.RpcObjectListDeleteResponseError_NULL, nil)
}
-func (mw *Middleware) ObjectListSetIsArchived(cctx context.Context, req *pb.RpcObjectListSetIsArchivedRequest) *pb.RpcObjectListSetIsArchivedResponse {
- ctx := mw.newContext(cctx)
- response := func(code pb.RpcObjectListSetIsArchivedResponseErrorCode, err error) *pb.RpcObjectListSetIsArchivedResponse {
- m := &pb.RpcObjectListSetIsArchivedResponse{Error: &pb.RpcObjectListSetIsArchivedResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetPagesIsArchived(ctx, *req)
- })
- if err != nil {
- return response(pb.RpcObjectListSetIsArchivedResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectListSetIsArchivedResponseError_NULL, nil)
-}
-func (mw *Middleware) ObjectListSetIsFavorite(cctx context.Context, req *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse {
- response := func(code pb.RpcObjectListSetIsFavoriteResponseErrorCode, err error) *pb.RpcObjectListSetIsFavoriteResponse {
- m := &pb.RpcObjectListSetIsFavoriteResponse{Error: &pb.RpcObjectListSetIsFavoriteResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetPagesIsFavorite(*req)
- })
- if err != nil {
- return response(pb.RpcObjectListSetIsFavoriteResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectListSetIsFavoriteResponseError_NULL, nil)
-}
-
func (mw *Middleware) BlockReplace(cctx context.Context, req *pb.RpcBlockReplaceRequest) *pb.RpcBlockReplaceResponse {
ctx := mw.newContext(cctx)
response := func(code pb.RpcBlockReplaceResponseErrorCode, blockId string, err error) *pb.RpcBlockReplaceResponse {
diff --git a/core/block/collection/service.go b/core/block/collection/service.go
index a20530326..1f557af07 100644
--- a/core/block/collection/service.go
+++ b/core/block/collection/service.go
@@ -192,7 +192,7 @@ func (s *Service) CreateCollection(details *types.Struct, flags []*model.Interna
tmpls := []template.StateTransformer{}
- blockContent := template.MakeCollectionDataviewContent()
+ blockContent := template.MakeDataviewContent(true, nil, nil)
tmpls = append(tmpls,
template.WithDataview(blockContent, false),
)
diff --git a/core/block/delete.go b/core/block/delete.go
index 364db8b3b..20cfda5cf 100644
--- a/core/block/delete.go
+++ b/core/block/delete.go
@@ -128,16 +128,12 @@ func (s *Service) DeleteObject(objectId string) (err error) {
}
func (s *Service) OnDelete(id domain.FullID, workspaceRemove func() error) error {
- var (
- isFavorite bool
- )
-
err := s.DoFullId(id, func(b smartblock.SmartBlock) error {
b.ObjectCloseAllSessions()
st := b.NewState()
- isFavorite = pbtypes.GetBool(st.LocalDetails(), bundle.RelationKeyIsFavorite.String())
- if isFavorite {
- _ = s.SetPageIsFavorite(pb.RpcObjectSetIsFavoriteRequest{IsFavorite: false, ContextId: id.ObjectID})
+ isFavorite := pbtypes.GetBool(st.LocalDetails(), bundle.RelationKeyIsFavorite.String())
+ if err := s.detailsService.SetIsFavorite(id.ObjectID, isFavorite); err != nil {
+ log.With("objectId", id).Errorf("failed to favorite object: %v", err)
}
b.SetIsDeleted()
if workspaceRemove != nil {
diff --git a/core/block/details_test.go b/core/block/detailservice/details_test.go
similarity index 99%
rename from core/block/details_test.go
rename to core/block/detailservice/details_test.go
index 01791fd85..453e30d75 100644
--- a/core/block/details_test.go
+++ b/core/block/detailservice/details_test.go
@@ -1,4 +1,4 @@
-package block
+package detailservice
import (
"testing"
diff --git a/core/block/detailservice/mock_detailservice/mock_Service.go b/core/block/detailservice/mock_detailservice/mock_Service.go
new file mode 100644
index 000000000..3ff60d154
--- /dev/null
+++ b/core/block/detailservice/mock_detailservice/mock_Service.go
@@ -0,0 +1,1001 @@
+// Code generated by mockery. DO NOT EDIT.
+
+package mock_detailservice
+
+import (
+ context "context"
+
+ app "github.com/anyproto/any-sync/app"
+
+ domain "github.com/anyproto/anytype-heart/core/domain"
+
+ mock "github.com/stretchr/testify/mock"
+
+ model "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+
+ pb "github.com/anyproto/anytype-heart/pb"
+
+ session "github.com/anyproto/anytype-heart/core/session"
+
+ smartblock "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
+
+ types "github.com/gogo/protobuf/types"
+)
+
+// MockService is an autogenerated mock type for the Service type
+type MockService struct {
+ mock.Mock
+}
+
+type MockService_Expecter struct {
+ mock *mock.Mock
+}
+
+func (_m *MockService) EXPECT() *MockService_Expecter {
+ return &MockService_Expecter{mock: &_m.Mock}
+}
+
+// GetObject provides a mock function with given fields: ctx, objectID
+func (_m *MockService) GetObject(ctx context.Context, objectID string) (smartblock.SmartBlock, error) {
+ ret := _m.Called(ctx, objectID)
+
+ if len(ret) == 0 {
+ panic("no return value specified for GetObject")
+ }
+
+ var r0 smartblock.SmartBlock
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) (smartblock.SmartBlock, error)); ok {
+ return rf(ctx, objectID)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string) smartblock.SmartBlock); ok {
+ r0 = rf(ctx, objectID)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(smartblock.SmartBlock)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
+ r1 = rf(ctx, objectID)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// MockService_GetObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObject'
+type MockService_GetObject_Call struct {
+ *mock.Call
+}
+
+// GetObject is a helper method to define mock.On call
+// - ctx context.Context
+// - objectID string
+func (_e *MockService_Expecter) GetObject(ctx interface{}, objectID interface{}) *MockService_GetObject_Call {
+ return &MockService_GetObject_Call{Call: _e.mock.On("GetObject", ctx, objectID)}
+}
+
+func (_c *MockService_GetObject_Call) Run(run func(ctx context.Context, objectID string)) *MockService_GetObject_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *MockService_GetObject_Call) Return(sb smartblock.SmartBlock, err error) *MockService_GetObject_Call {
+ _c.Call.Return(sb, err)
+ return _c
+}
+
+func (_c *MockService_GetObject_Call) RunAndReturn(run func(context.Context, string) (smartblock.SmartBlock, error)) *MockService_GetObject_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// GetObjectByFullID provides a mock function with given fields: ctx, id
+func (_m *MockService) GetObjectByFullID(ctx context.Context, id domain.FullID) (smartblock.SmartBlock, error) {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for GetObjectByFullID")
+ }
+
+ var r0 smartblock.SmartBlock
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) (smartblock.SmartBlock, error)); ok {
+ return rf(ctx, id)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) smartblock.SmartBlock); ok {
+ r0 = rf(ctx, id)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(smartblock.SmartBlock)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, domain.FullID) error); ok {
+ r1 = rf(ctx, id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// MockService_GetObjectByFullID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObjectByFullID'
+type MockService_GetObjectByFullID_Call struct {
+ *mock.Call
+}
+
+// GetObjectByFullID is a helper method to define mock.On call
+// - ctx context.Context
+// - id domain.FullID
+func (_e *MockService_Expecter) GetObjectByFullID(ctx interface{}, id interface{}) *MockService_GetObjectByFullID_Call {
+ return &MockService_GetObjectByFullID_Call{Call: _e.mock.On("GetObjectByFullID", ctx, id)}
+}
+
+func (_c *MockService_GetObjectByFullID_Call) Run(run func(ctx context.Context, id domain.FullID)) *MockService_GetObjectByFullID_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(domain.FullID))
+ })
+ return _c
+}
+
+func (_c *MockService_GetObjectByFullID_Call) Return(sb smartblock.SmartBlock, err error) *MockService_GetObjectByFullID_Call {
+ _c.Call.Return(sb, err)
+ return _c
+}
+
+func (_c *MockService_GetObjectByFullID_Call) RunAndReturn(run func(context.Context, domain.FullID) (smartblock.SmartBlock, error)) *MockService_GetObjectByFullID_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// Init provides a mock function with given fields: a
+func (_m *MockService) Init(a *app.App) error {
+ ret := _m.Called(a)
+
+ if len(ret) == 0 {
+ panic("no return value specified for Init")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(*app.App) error); ok {
+ r0 = rf(a)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init'
+type MockService_Init_Call struct {
+ *mock.Call
+}
+
+// Init is a helper method to define mock.On call
+// - a *app.App
+func (_e *MockService_Expecter) Init(a interface{}) *MockService_Init_Call {
+ return &MockService_Init_Call{Call: _e.mock.On("Init", a)}
+}
+
+func (_c *MockService_Init_Call) Run(run func(a *app.App)) *MockService_Init_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(*app.App))
+ })
+ return _c
+}
+
+func (_c *MockService_Init_Call) Return(err error) *MockService_Init_Call {
+ _c.Call.Return(err)
+ return _c
+}
+
+func (_c *MockService_Init_Call) RunAndReturn(run func(*app.App) error) *MockService_Init_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// ListRelationsWithValue provides a mock function with given fields: spaceId, value
+func (_m *MockService) ListRelationsWithValue(spaceId string, value *types.Value) ([]string, []int64, error) {
+ ret := _m.Called(spaceId, value)
+
+ if len(ret) == 0 {
+ panic("no return value specified for ListRelationsWithValue")
+ }
+
+ var r0 []string
+ var r1 []int64
+ var r2 error
+ if rf, ok := ret.Get(0).(func(string, *types.Value) ([]string, []int64, error)); ok {
+ return rf(spaceId, value)
+ }
+ if rf, ok := ret.Get(0).(func(string, *types.Value) []string); ok {
+ r0 = rf(spaceId, value)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).([]string)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(string, *types.Value) []int64); ok {
+ r1 = rf(spaceId, value)
+ } else {
+ if ret.Get(1) != nil {
+ r1 = ret.Get(1).([]int64)
+ }
+ }
+
+ if rf, ok := ret.Get(2).(func(string, *types.Value) error); ok {
+ r2 = rf(spaceId, value)
+ } else {
+ r2 = ret.Error(2)
+ }
+
+ return r0, r1, r2
+}
+
+// MockService_ListRelationsWithValue_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListRelationsWithValue'
+type MockService_ListRelationsWithValue_Call struct {
+ *mock.Call
+}
+
+// ListRelationsWithValue is a helper method to define mock.On call
+// - spaceId string
+// - value *types.Value
+func (_e *MockService_Expecter) ListRelationsWithValue(spaceId interface{}, value interface{}) *MockService_ListRelationsWithValue_Call {
+ return &MockService_ListRelationsWithValue_Call{Call: _e.mock.On("ListRelationsWithValue", spaceId, value)}
+}
+
+func (_c *MockService_ListRelationsWithValue_Call) Run(run func(spaceId string, value *types.Value)) *MockService_ListRelationsWithValue_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(string), args[1].(*types.Value))
+ })
+ return _c
+}
+
+func (_c *MockService_ListRelationsWithValue_Call) Return(keys []string, counters []int64, err error) *MockService_ListRelationsWithValue_Call {
+ _c.Call.Return(keys, counters, err)
+ return _c
+}
+
+func (_c *MockService_ListRelationsWithValue_Call) RunAndReturn(run func(string, *types.Value) ([]string, []int64, error)) *MockService_ListRelationsWithValue_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// ModifyDetails provides a mock function with given fields: objectId, modifier
+func (_m *MockService) ModifyDetails(objectId string, modifier func(*types.Struct) (*types.Struct, error)) error {
+ ret := _m.Called(objectId, modifier)
+
+ if len(ret) == 0 {
+ panic("no return value specified for ModifyDetails")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(string, func(*types.Struct) (*types.Struct, error)) error); ok {
+ r0 = rf(objectId, modifier)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_ModifyDetails_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ModifyDetails'
+type MockService_ModifyDetails_Call struct {
+ *mock.Call
+}
+
+// ModifyDetails is a helper method to define mock.On call
+// - objectId string
+// - modifier func(*types.Struct)(*types.Struct , error)
+func (_e *MockService_Expecter) ModifyDetails(objectId interface{}, modifier interface{}) *MockService_ModifyDetails_Call {
+ return &MockService_ModifyDetails_Call{Call: _e.mock.On("ModifyDetails", objectId, modifier)}
+}
+
+func (_c *MockService_ModifyDetails_Call) Run(run func(objectId string, modifier func(*types.Struct) (*types.Struct, error))) *MockService_ModifyDetails_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(string), args[1].(func(*types.Struct) (*types.Struct, error)))
+ })
+ return _c
+}
+
+func (_c *MockService_ModifyDetails_Call) Return(_a0 error) *MockService_ModifyDetails_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_ModifyDetails_Call) RunAndReturn(run func(string, func(*types.Struct) (*types.Struct, error)) error) *MockService_ModifyDetails_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// ModifyDetailsList provides a mock function with given fields: req
+func (_m *MockService) ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) error {
+ ret := _m.Called(req)
+
+ if len(ret) == 0 {
+ panic("no return value specified for ModifyDetailsList")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(*pb.RpcObjectListModifyDetailValuesRequest) error); ok {
+ r0 = rf(req)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_ModifyDetailsList_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ModifyDetailsList'
+type MockService_ModifyDetailsList_Call struct {
+ *mock.Call
+}
+
+// ModifyDetailsList is a helper method to define mock.On call
+// - req *pb.RpcObjectListModifyDetailValuesRequest
+func (_e *MockService_Expecter) ModifyDetailsList(req interface{}) *MockService_ModifyDetailsList_Call {
+ return &MockService_ModifyDetailsList_Call{Call: _e.mock.On("ModifyDetailsList", req)}
+}
+
+func (_c *MockService_ModifyDetailsList_Call) Run(run func(req *pb.RpcObjectListModifyDetailValuesRequest)) *MockService_ModifyDetailsList_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(*pb.RpcObjectListModifyDetailValuesRequest))
+ })
+ return _c
+}
+
+func (_c *MockService_ModifyDetailsList_Call) Return(_a0 error) *MockService_ModifyDetailsList_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_ModifyDetailsList_Call) RunAndReturn(run func(*pb.RpcObjectListModifyDetailValuesRequest) error) *MockService_ModifyDetailsList_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// Name provides a mock function with given fields:
+func (_m *MockService) Name() string {
+ ret := _m.Called()
+
+ if len(ret) == 0 {
+ panic("no return value specified for Name")
+ }
+
+ var r0 string
+ if rf, ok := ret.Get(0).(func() string); ok {
+ r0 = rf()
+ } else {
+ r0 = ret.Get(0).(string)
+ }
+
+ return r0
+}
+
+// MockService_Name_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Name'
+type MockService_Name_Call struct {
+ *mock.Call
+}
+
+// Name is a helper method to define mock.On call
+func (_e *MockService_Expecter) Name() *MockService_Name_Call {
+ return &MockService_Name_Call{Call: _e.mock.On("Name")}
+}
+
+func (_c *MockService_Name_Call) Run(run func()) *MockService_Name_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run()
+ })
+ return _c
+}
+
+func (_c *MockService_Name_Call) Return(name string) *MockService_Name_Call {
+ _c.Call.Return(name)
+ return _c
+}
+
+func (_c *MockService_Name_Call) RunAndReturn(run func() string) *MockService_Name_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// ObjectTypeAddRelations provides a mock function with given fields: ctx, objectTypeId, relationKeys
+func (_m *MockService) ObjectTypeAddRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error {
+ ret := _m.Called(ctx, objectTypeId, relationKeys)
+
+ if len(ret) == 0 {
+ panic("no return value specified for ObjectTypeAddRelations")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(context.Context, string, []domain.RelationKey) error); ok {
+ r0 = rf(ctx, objectTypeId, relationKeys)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_ObjectTypeAddRelations_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectTypeAddRelations'
+type MockService_ObjectTypeAddRelations_Call struct {
+ *mock.Call
+}
+
+// ObjectTypeAddRelations is a helper method to define mock.On call
+// - ctx context.Context
+// - objectTypeId string
+// - relationKeys []domain.RelationKey
+func (_e *MockService_Expecter) ObjectTypeAddRelations(ctx interface{}, objectTypeId interface{}, relationKeys interface{}) *MockService_ObjectTypeAddRelations_Call {
+ return &MockService_ObjectTypeAddRelations_Call{Call: _e.mock.On("ObjectTypeAddRelations", ctx, objectTypeId, relationKeys)}
+}
+
+func (_c *MockService_ObjectTypeAddRelations_Call) Run(run func(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey)) *MockService_ObjectTypeAddRelations_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string), args[2].([]domain.RelationKey))
+ })
+ return _c
+}
+
+func (_c *MockService_ObjectTypeAddRelations_Call) Return(_a0 error) *MockService_ObjectTypeAddRelations_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_ObjectTypeAddRelations_Call) RunAndReturn(run func(context.Context, string, []domain.RelationKey) error) *MockService_ObjectTypeAddRelations_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// ObjectTypeRemoveRelations provides a mock function with given fields: ctx, objectTypeId, relationKeys
+func (_m *MockService) ObjectTypeRemoveRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error {
+ ret := _m.Called(ctx, objectTypeId, relationKeys)
+
+ if len(ret) == 0 {
+ panic("no return value specified for ObjectTypeRemoveRelations")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(context.Context, string, []domain.RelationKey) error); ok {
+ r0 = rf(ctx, objectTypeId, relationKeys)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_ObjectTypeRemoveRelations_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ObjectTypeRemoveRelations'
+type MockService_ObjectTypeRemoveRelations_Call struct {
+ *mock.Call
+}
+
+// ObjectTypeRemoveRelations is a helper method to define mock.On call
+// - ctx context.Context
+// - objectTypeId string
+// - relationKeys []domain.RelationKey
+func (_e *MockService_Expecter) ObjectTypeRemoveRelations(ctx interface{}, objectTypeId interface{}, relationKeys interface{}) *MockService_ObjectTypeRemoveRelations_Call {
+ return &MockService_ObjectTypeRemoveRelations_Call{Call: _e.mock.On("ObjectTypeRemoveRelations", ctx, objectTypeId, relationKeys)}
+}
+
+func (_c *MockService_ObjectTypeRemoveRelations_Call) Run(run func(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey)) *MockService_ObjectTypeRemoveRelations_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string), args[2].([]domain.RelationKey))
+ })
+ return _c
+}
+
+func (_c *MockService_ObjectTypeRemoveRelations_Call) Return(_a0 error) *MockService_ObjectTypeRemoveRelations_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_ObjectTypeRemoveRelations_Call) RunAndReturn(run func(context.Context, string, []domain.RelationKey) error) *MockService_ObjectTypeRemoveRelations_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetDetails provides a mock function with given fields: ctx, objectId, details
+func (_m *MockService) SetDetails(ctx session.Context, objectId string, details []*model.Detail) error {
+ ret := _m.Called(ctx, objectId, details)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetDetails")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(session.Context, string, []*model.Detail) error); ok {
+ r0 = rf(ctx, objectId, details)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetDetails_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetDetails'
+type MockService_SetDetails_Call struct {
+ *mock.Call
+}
+
+// SetDetails is a helper method to define mock.On call
+// - ctx session.Context
+// - objectId string
+// - details []*model.Detail
+func (_e *MockService_Expecter) SetDetails(ctx interface{}, objectId interface{}, details interface{}) *MockService_SetDetails_Call {
+ return &MockService_SetDetails_Call{Call: _e.mock.On("SetDetails", ctx, objectId, details)}
+}
+
+func (_c *MockService_SetDetails_Call) Run(run func(ctx session.Context, objectId string, details []*model.Detail)) *MockService_SetDetails_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(session.Context), args[1].(string), args[2].([]*model.Detail))
+ })
+ return _c
+}
+
+func (_c *MockService_SetDetails_Call) Return(_a0 error) *MockService_SetDetails_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetDetails_Call) RunAndReturn(run func(session.Context, string, []*model.Detail) error) *MockService_SetDetails_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetDetailsAndUpdateLastUsed provides a mock function with given fields: ctx, objectId, details
+func (_m *MockService) SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []*model.Detail) error {
+ ret := _m.Called(ctx, objectId, details)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetDetailsAndUpdateLastUsed")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(session.Context, string, []*model.Detail) error); ok {
+ r0 = rf(ctx, objectId, details)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetDetailsAndUpdateLastUsed_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetDetailsAndUpdateLastUsed'
+type MockService_SetDetailsAndUpdateLastUsed_Call struct {
+ *mock.Call
+}
+
+// SetDetailsAndUpdateLastUsed is a helper method to define mock.On call
+// - ctx session.Context
+// - objectId string
+// - details []*model.Detail
+func (_e *MockService_Expecter) SetDetailsAndUpdateLastUsed(ctx interface{}, objectId interface{}, details interface{}) *MockService_SetDetailsAndUpdateLastUsed_Call {
+ return &MockService_SetDetailsAndUpdateLastUsed_Call{Call: _e.mock.On("SetDetailsAndUpdateLastUsed", ctx, objectId, details)}
+}
+
+func (_c *MockService_SetDetailsAndUpdateLastUsed_Call) Run(run func(ctx session.Context, objectId string, details []*model.Detail)) *MockService_SetDetailsAndUpdateLastUsed_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(session.Context), args[1].(string), args[2].([]*model.Detail))
+ })
+ return _c
+}
+
+func (_c *MockService_SetDetailsAndUpdateLastUsed_Call) Return(_a0 error) *MockService_SetDetailsAndUpdateLastUsed_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetDetailsAndUpdateLastUsed_Call) RunAndReturn(run func(session.Context, string, []*model.Detail) error) *MockService_SetDetailsAndUpdateLastUsed_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetDetailsList provides a mock function with given fields: ctx, objectIds, details
+func (_m *MockService) SetDetailsList(ctx session.Context, objectIds []string, details []*model.Detail) error {
+ ret := _m.Called(ctx, objectIds, details)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetDetailsList")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(session.Context, []string, []*model.Detail) error); ok {
+ r0 = rf(ctx, objectIds, details)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetDetailsList_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetDetailsList'
+type MockService_SetDetailsList_Call struct {
+ *mock.Call
+}
+
+// SetDetailsList is a helper method to define mock.On call
+// - ctx session.Context
+// - objectIds []string
+// - details []*model.Detail
+func (_e *MockService_Expecter) SetDetailsList(ctx interface{}, objectIds interface{}, details interface{}) *MockService_SetDetailsList_Call {
+ return &MockService_SetDetailsList_Call{Call: _e.mock.On("SetDetailsList", ctx, objectIds, details)}
+}
+
+func (_c *MockService_SetDetailsList_Call) Run(run func(ctx session.Context, objectIds []string, details []*model.Detail)) *MockService_SetDetailsList_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(session.Context), args[1].([]string), args[2].([]*model.Detail))
+ })
+ return _c
+}
+
+func (_c *MockService_SetDetailsList_Call) Return(_a0 error) *MockService_SetDetailsList_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetDetailsList_Call) RunAndReturn(run func(session.Context, []string, []*model.Detail) error) *MockService_SetDetailsList_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetIsArchived provides a mock function with given fields: objectId, isArchived
+func (_m *MockService) SetIsArchived(objectId string, isArchived bool) error {
+ ret := _m.Called(objectId, isArchived)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetIsArchived")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(string, bool) error); ok {
+ r0 = rf(objectId, isArchived)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetIsArchived_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetIsArchived'
+type MockService_SetIsArchived_Call struct {
+ *mock.Call
+}
+
+// SetIsArchived is a helper method to define mock.On call
+// - objectId string
+// - isArchived bool
+func (_e *MockService_Expecter) SetIsArchived(objectId interface{}, isArchived interface{}) *MockService_SetIsArchived_Call {
+ return &MockService_SetIsArchived_Call{Call: _e.mock.On("SetIsArchived", objectId, isArchived)}
+}
+
+func (_c *MockService_SetIsArchived_Call) Run(run func(objectId string, isArchived bool)) *MockService_SetIsArchived_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(string), args[1].(bool))
+ })
+ return _c
+}
+
+func (_c *MockService_SetIsArchived_Call) Return(_a0 error) *MockService_SetIsArchived_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetIsArchived_Call) RunAndReturn(run func(string, bool) error) *MockService_SetIsArchived_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetIsFavorite provides a mock function with given fields: objectId, isFavorite
+func (_m *MockService) SetIsFavorite(objectId string, isFavorite bool) error {
+ ret := _m.Called(objectId, isFavorite)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetIsFavorite")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(string, bool) error); ok {
+ r0 = rf(objectId, isFavorite)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetIsFavorite_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetIsFavorite'
+type MockService_SetIsFavorite_Call struct {
+ *mock.Call
+}
+
+// SetIsFavorite is a helper method to define mock.On call
+// - objectId string
+// - isFavorite bool
+func (_e *MockService_Expecter) SetIsFavorite(objectId interface{}, isFavorite interface{}) *MockService_SetIsFavorite_Call {
+ return &MockService_SetIsFavorite_Call{Call: _e.mock.On("SetIsFavorite", objectId, isFavorite)}
+}
+
+func (_c *MockService_SetIsFavorite_Call) Run(run func(objectId string, isFavorite bool)) *MockService_SetIsFavorite_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(string), args[1].(bool))
+ })
+ return _c
+}
+
+func (_c *MockService_SetIsFavorite_Call) Return(_a0 error) *MockService_SetIsFavorite_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetIsFavorite_Call) RunAndReturn(run func(string, bool) error) *MockService_SetIsFavorite_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetListIsArchived provides a mock function with given fields: objectIds, isArchived
+func (_m *MockService) SetListIsArchived(objectIds []string, isArchived bool) error {
+ ret := _m.Called(objectIds, isArchived)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetListIsArchived")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func([]string, bool) error); ok {
+ r0 = rf(objectIds, isArchived)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetListIsArchived_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetListIsArchived'
+type MockService_SetListIsArchived_Call struct {
+ *mock.Call
+}
+
+// SetListIsArchived is a helper method to define mock.On call
+// - objectIds []string
+// - isArchived bool
+func (_e *MockService_Expecter) SetListIsArchived(objectIds interface{}, isArchived interface{}) *MockService_SetListIsArchived_Call {
+ return &MockService_SetListIsArchived_Call{Call: _e.mock.On("SetListIsArchived", objectIds, isArchived)}
+}
+
+func (_c *MockService_SetListIsArchived_Call) Run(run func(objectIds []string, isArchived bool)) *MockService_SetListIsArchived_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].([]string), args[1].(bool))
+ })
+ return _c
+}
+
+func (_c *MockService_SetListIsArchived_Call) Return(_a0 error) *MockService_SetListIsArchived_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetListIsArchived_Call) RunAndReturn(run func([]string, bool) error) *MockService_SetListIsArchived_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetListIsFavorite provides a mock function with given fields: objectIds, isFavorite
+func (_m *MockService) SetListIsFavorite(objectIds []string, isFavorite bool) error {
+ ret := _m.Called(objectIds, isFavorite)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetListIsFavorite")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func([]string, bool) error); ok {
+ r0 = rf(objectIds, isFavorite)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetListIsFavorite_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetListIsFavorite'
+type MockService_SetListIsFavorite_Call struct {
+ *mock.Call
+}
+
+// SetListIsFavorite is a helper method to define mock.On call
+// - objectIds []string
+// - isFavorite bool
+func (_e *MockService_Expecter) SetListIsFavorite(objectIds interface{}, isFavorite interface{}) *MockService_SetListIsFavorite_Call {
+ return &MockService_SetListIsFavorite_Call{Call: _e.mock.On("SetListIsFavorite", objectIds, isFavorite)}
+}
+
+func (_c *MockService_SetListIsFavorite_Call) Run(run func(objectIds []string, isFavorite bool)) *MockService_SetListIsFavorite_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].([]string), args[1].(bool))
+ })
+ return _c
+}
+
+func (_c *MockService_SetListIsFavorite_Call) Return(_a0 error) *MockService_SetListIsFavorite_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetListIsFavorite_Call) RunAndReturn(run func([]string, bool) error) *MockService_SetListIsFavorite_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetSource provides a mock function with given fields: ctx, objectId, source
+func (_m *MockService) SetSource(ctx session.Context, objectId string, source []string) error {
+ ret := _m.Called(ctx, objectId, source)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetSource")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(session.Context, string, []string) error); ok {
+ r0 = rf(ctx, objectId, source)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetSource_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetSource'
+type MockService_SetSource_Call struct {
+ *mock.Call
+}
+
+// SetSource is a helper method to define mock.On call
+// - ctx session.Context
+// - objectId string
+// - source []string
+func (_e *MockService_Expecter) SetSource(ctx interface{}, objectId interface{}, source interface{}) *MockService_SetSource_Call {
+ return &MockService_SetSource_Call{Call: _e.mock.On("SetSource", ctx, objectId, source)}
+}
+
+func (_c *MockService_SetSource_Call) Run(run func(ctx session.Context, objectId string, source []string)) *MockService_SetSource_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(session.Context), args[1].(string), args[2].([]string))
+ })
+ return _c
+}
+
+func (_c *MockService_SetSource_Call) Return(_a0 error) *MockService_SetSource_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetSource_Call) RunAndReturn(run func(session.Context, string, []string) error) *MockService_SetSource_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetSpaceInfo provides a mock function with given fields: spaceId, details
+func (_m *MockService) SetSpaceInfo(spaceId string, details *types.Struct) error {
+ ret := _m.Called(spaceId, details)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetSpaceInfo")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(string, *types.Struct) error); ok {
+ r0 = rf(spaceId, details)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockService_SetSpaceInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetSpaceInfo'
+type MockService_SetSpaceInfo_Call struct {
+ *mock.Call
+}
+
+// SetSpaceInfo is a helper method to define mock.On call
+// - spaceId string
+// - details *types.Struct
+func (_e *MockService_Expecter) SetSpaceInfo(spaceId interface{}, details interface{}) *MockService_SetSpaceInfo_Call {
+ return &MockService_SetSpaceInfo_Call{Call: _e.mock.On("SetSpaceInfo", spaceId, details)}
+}
+
+func (_c *MockService_SetSpaceInfo_Call) Run(run func(spaceId string, details *types.Struct)) *MockService_SetSpaceInfo_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(string), args[1].(*types.Struct))
+ })
+ return _c
+}
+
+func (_c *MockService_SetSpaceInfo_Call) Return(_a0 error) *MockService_SetSpaceInfo_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockService_SetSpaceInfo_Call) RunAndReturn(run func(string, *types.Struct) error) *MockService_SetSpaceInfo_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// SetWorkspaceDashboardId provides a mock function with given fields: ctx, workspaceId, id
+func (_m *MockService) SetWorkspaceDashboardId(ctx session.Context, workspaceId string, id string) (string, error) {
+ ret := _m.Called(ctx, workspaceId, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for SetWorkspaceDashboardId")
+ }
+
+ var r0 string
+ var r1 error
+ if rf, ok := ret.Get(0).(func(session.Context, string, string) (string, error)); ok {
+ return rf(ctx, workspaceId, id)
+ }
+ if rf, ok := ret.Get(0).(func(session.Context, string, string) string); ok {
+ r0 = rf(ctx, workspaceId, id)
+ } else {
+ r0 = ret.Get(0).(string)
+ }
+
+ if rf, ok := ret.Get(1).(func(session.Context, string, string) error); ok {
+ r1 = rf(ctx, workspaceId, id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// MockService_SetWorkspaceDashboardId_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetWorkspaceDashboardId'
+type MockService_SetWorkspaceDashboardId_Call struct {
+ *mock.Call
+}
+
+// SetWorkspaceDashboardId is a helper method to define mock.On call
+// - ctx session.Context
+// - workspaceId string
+// - id string
+func (_e *MockService_Expecter) SetWorkspaceDashboardId(ctx interface{}, workspaceId interface{}, id interface{}) *MockService_SetWorkspaceDashboardId_Call {
+ return &MockService_SetWorkspaceDashboardId_Call{Call: _e.mock.On("SetWorkspaceDashboardId", ctx, workspaceId, id)}
+}
+
+func (_c *MockService_SetWorkspaceDashboardId_Call) Run(run func(ctx session.Context, workspaceId string, id string)) *MockService_SetWorkspaceDashboardId_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(session.Context), args[1].(string), args[2].(string))
+ })
+ return _c
+}
+
+func (_c *MockService_SetWorkspaceDashboardId_Call) Return(setId string, err error) *MockService_SetWorkspaceDashboardId_Call {
+ _c.Call.Return(setId, err)
+ return _c
+}
+
+func (_c *MockService_SetWorkspaceDashboardId_Call) RunAndReturn(run func(session.Context, string, string) (string, error)) *MockService_SetWorkspaceDashboardId_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
+// NewMockService creates a new instance of MockService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func NewMockService(t interface {
+ mock.TestingT
+ Cleanup(func())
+}) *MockService {
+ mock := &MockService{}
+ mock.Mock.Test(t)
+
+ t.Cleanup(func() { mock.AssertExpectations(t) })
+
+ return mock
+}
diff --git a/core/block/detailservice/relations.go b/core/block/detailservice/relations.go
new file mode 100644
index 000000000..af0181e93
--- /dev/null
+++ b/core/block/detailservice/relations.go
@@ -0,0 +1,146 @@
+package detailservice
+
+import (
+ "context"
+ "fmt"
+ "slices"
+ "strings"
+ "time"
+
+ "github.com/gogo/protobuf/types"
+ "go.uber.org/zap"
+ "golang.org/x/exp/maps"
+
+ "github.com/anyproto/anytype-heart/core/block/cache"
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
+ "github.com/anyproto/anytype-heart/core/domain"
+ "github.com/anyproto/anytype-heart/pkg/lib/bundle"
+ coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
+ "github.com/anyproto/anytype-heart/pkg/lib/database"
+ "github.com/anyproto/anytype-heart/pkg/lib/localstore/addr"
+ "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+ "github.com/anyproto/anytype-heart/space/spacecore/typeprovider"
+ "github.com/anyproto/anytype-heart/util/pbtypes"
+ "github.com/anyproto/anytype-heart/util/slice"
+)
+
+var ErrBundledTypeIsReadonly = fmt.Errorf("can't modify bundled object type")
+
+func (s *service) ObjectTypeAddRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error {
+ if strings.HasPrefix(objectTypeId, bundle.TypePrefix) {
+ return ErrBundledTypeIsReadonly
+ }
+ return cache.Do(s, objectTypeId, func(b smartblock.SmartBlock) error {
+ st := b.NewState()
+ list := pbtypes.GetStringList(st.Details(), bundle.RelationKeyRecommendedRelations.String())
+ for _, relKey := range relationKeys {
+ relId, err := b.Space().GetRelationIdByKey(ctx, relKey)
+ if err != nil {
+ return err
+ }
+ if !slices.Contains(list, relId) {
+ list = append(list, relId)
+ }
+ }
+ st.SetDetailAndBundledRelation(bundle.RelationKeyRecommendedRelations, pbtypes.StringList(list))
+ return b.Apply(st)
+ })
+}
+
+func (s *service) ObjectTypeRemoveRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error {
+ if strings.HasPrefix(objectTypeId, bundle.TypePrefix) {
+ return ErrBundledTypeIsReadonly
+ }
+ return cache.Do(s, objectTypeId, func(b smartblock.SmartBlock) error {
+ st := b.NewState()
+ list := pbtypes.GetStringList(st.Details(), bundle.RelationKeyRecommendedRelations.String())
+ for _, relKey := range relationKeys {
+ relId, err := b.Space().GetRelationIdByKey(ctx, relKey)
+ if err != nil {
+ return fmt.Errorf("get relation id by key %s: %w", relKey, err)
+ }
+ list = slice.RemoveMut(list, relId)
+ }
+ st.SetDetailAndBundledRelation(bundle.RelationKeyRecommendedRelations, pbtypes.StringList(list))
+ return b.Apply(st)
+ })
+}
+
+func (s *service) ListRelationsWithValue(spaceId string, value *types.Value) (keys []string, counters []int64, err error) {
+ countersByKeys := make(map[string]int64)
+ detailHandlesValue := generateFilter(value)
+
+ err = s.store.QueryIterate(database.Query{Filters: []*model.BlockContentDataviewFilter{{
+ RelationKey: bundle.RelationKeySpaceId.String(),
+ Condition: model.BlockContentDataviewFilter_Equal,
+ Value: pbtypes.String(spaceId),
+ }}}, func(details *types.Struct) {
+ for key, valueToCheck := range details.Fields {
+ if detailHandlesValue(valueToCheck) {
+ if counter, ok := countersByKeys[key]; ok {
+ countersByKeys[key] = counter + 1
+ } else {
+ countersByKeys[key] = 1
+ }
+ }
+ }
+ })
+
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to query objects: %w", err)
+ }
+
+ keys = maps.Keys(countersByKeys)
+ slices.Sort(keys)
+
+ for _, key := range keys {
+ counters = append(counters, countersByKeys[key])
+ }
+
+ return keys, counters, nil
+}
+
+func generateFilter(value *types.Value) func(v *types.Value) bool {
+ equalFilter := func(v *types.Value) bool {
+ return v.Equal(value)
+ }
+
+ stringValue := value.GetStringValue()
+ if stringValue == "" {
+ return equalFilter
+ }
+
+ sbt, err := typeprovider.SmartblockTypeFromID(stringValue)
+ if err != nil {
+ log.Error("failed to determine smartblock type", zap.Error(err))
+ }
+
+ if sbt != coresb.SmartBlockTypeDate {
+ return equalFilter
+ }
+
+ start, err := dateIDToDayStart(stringValue)
+ if err != nil {
+ log.Error("failed to convert date id to day start", zap.Error(err))
+ return equalFilter
+ }
+
+ end := start.Add(24 * time.Hour)
+ startTimestamp := start.Unix()
+ endTimestamp := end.Unix()
+
+ return func(v *types.Value) bool {
+ numberValue := int64(v.GetNumberValue())
+ if numberValue >= startTimestamp && numberValue < endTimestamp {
+ return true
+ }
+ return equalFilter(v)
+ }
+}
+
+func dateIDToDayStart(id string) (time.Time, error) {
+ if !strings.HasPrefix(id, addr.DatePrefix) {
+ return time.Time{}, fmt.Errorf("invalid id: date prefix not found")
+ }
+ return time.Parse("2006-01-02", strings.TrimPrefix(id, addr.DatePrefix))
+}
diff --git a/core/block/detailservice/relations_test.go b/core/block/detailservice/relations_test.go
new file mode 100644
index 000000000..5db077243
--- /dev/null
+++ b/core/block/detailservice/relations_test.go
@@ -0,0 +1,210 @@
+package detailservice
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/gogo/protobuf/types"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
+
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest"
+ "github.com/anyproto/anytype-heart/core/block/editor/state"
+ "github.com/anyproto/anytype-heart/core/domain"
+ "github.com/anyproto/anytype-heart/pkg/lib/bundle"
+ "github.com/anyproto/anytype-heart/pkg/lib/localstore/addr"
+ "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
+ "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+ "github.com/anyproto/anytype-heart/util/pbtypes"
+)
+
+func relationObject(key domain.RelationKey, format model.RelationFormat) objectstore.TestObject {
+ return objectstore.TestObject{
+ bundle.RelationKeyId: pbtypes.String(key.URL()),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyLayout: pbtypes.Float64(float64(model.ObjectType_relation)),
+ bundle.RelationKeyRelationKey: pbtypes.String(key.String()),
+ bundle.RelationKeyRelationFormat: pbtypes.Int64(int64(format)),
+ }
+}
+
+func TestService_ListRelationsWithValue(t *testing.T) {
+ store := objectstore.NewStoreFixture(t)
+ store.AddObjects(t, []objectstore.TestObject{
+ // relations
+ relationObject(bundle.RelationKeyLastModifiedDate, model.RelationFormat_date),
+ relationObject(bundle.RelationKeyAddedDate, model.RelationFormat_date),
+ relationObject(bundle.RelationKeyCreatedDate, model.RelationFormat_date),
+ relationObject(bundle.RelationKeyLinks, model.RelationFormat_object),
+ relationObject(bundle.RelationKeyName, model.RelationFormat_longtext),
+ relationObject(bundle.RelationKeyIsHidden, model.RelationFormat_checkbox),
+ relationObject(bundle.RelationKeyIsFavorite, model.RelationFormat_checkbox),
+ relationObject("daysTillSummer", model.RelationFormat_number),
+ relationObject(bundle.RelationKeyCoverX, model.RelationFormat_number),
+ {
+ bundle.RelationKeyId: pbtypes.String("obj1"),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyCreatedDate: pbtypes.Int64(time.Now().Add(-5 * time.Minute).Unix()),
+ bundle.RelationKeyAddedDate: pbtypes.Int64(time.Now().Add(-3 * time.Minute).Unix()),
+ bundle.RelationKeyLastModifiedDate: pbtypes.Int64(time.Now().Add(-1 * time.Minute).Unix()),
+ bundle.RelationKeyIsFavorite: pbtypes.Bool(true),
+ "daysTillSummer": pbtypes.Int64(300),
+ bundle.RelationKeyLinks: pbtypes.StringList([]string{"obj2", "obj3"}),
+ },
+ {
+ bundle.RelationKeyId: pbtypes.String("obj2"),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyName: pbtypes.String(addr.TimeToID(time.Now())),
+ bundle.RelationKeyCreatedDate: pbtypes.Int64(time.Now().Add(-24*time.Hour - 5*time.Minute).Unix()),
+ bundle.RelationKeyAddedDate: pbtypes.Int64(time.Now().Add(-24*time.Hour - 3*time.Minute).Unix()),
+ bundle.RelationKeyLastModifiedDate: pbtypes.Int64(time.Now().Add(-1 * time.Minute).Unix()),
+ bundle.RelationKeyCoverX: pbtypes.Int64(300),
+ },
+ {
+ bundle.RelationKeyId: pbtypes.String("obj3"),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyIsHidden: pbtypes.Bool(true),
+ bundle.RelationKeyCreatedDate: pbtypes.Int64(time.Now().Add(-3 * time.Minute).Unix()),
+ bundle.RelationKeyLastModifiedDate: pbtypes.Int64(time.Now().Unix()),
+ bundle.RelationKeyIsFavorite: pbtypes.Bool(true),
+ bundle.RelationKeyCoverX: pbtypes.Int64(300),
+ },
+ })
+
+ bs := service{store: store}
+
+ for _, tc := range []struct {
+ name string
+ value *types.Value
+ expectedKeys []string
+ expectedCounters []int64
+ }{
+ {
+ "date object - today",
+ pbtypes.String(addr.TimeToID(time.Now())),
+ []string{bundle.RelationKeyAddedDate.String(), bundle.RelationKeyCreatedDate.String(), bundle.RelationKeyLastModifiedDate.String(), bundle.RelationKeyName.String()},
+ []int64{1, 2, 3, 1},
+ },
+ {
+ "date object - yesterday",
+ pbtypes.String(addr.TimeToID(time.Now().Add(-24 * time.Hour))),
+ []string{bundle.RelationKeyAddedDate.String(), bundle.RelationKeyCreatedDate.String()},
+ []int64{1, 1},
+ },
+ {
+ "number",
+ pbtypes.Int64(300),
+ []string{bundle.RelationKeyCoverX.String(), "daysTillSummer"},
+ []int64{2, 1},
+ },
+ {
+ "bool",
+ pbtypes.Bool(true),
+ []string{bundle.RelationKeyIsFavorite.String(), bundle.RelationKeyIsHidden.String()},
+ []int64{2, 1},
+ },
+ {
+ "string list",
+ pbtypes.StringList([]string{"obj2", "obj3"}),
+ []string{bundle.RelationKeyLinks.String()},
+ []int64{1},
+ },
+ } {
+ t.Run(tc.name, func(t *testing.T) {
+ keys, counters, err := bs.ListRelationsWithValue(spaceId, tc.value)
+ assert.NoError(t, err)
+ assert.Equal(t, tc.expectedKeys, keys)
+ assert.Equal(t, tc.expectedCounters, counters)
+ })
+ }
+}
+
+func TestService_ObjectTypeAddRelations(t *testing.T) {
+ t.Run("add recommended relations", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(bundle.TypeKeyTask.URL())
+ sb.SetSpace(fx.space)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, objectId string) (smartblock.SmartBlock, error) {
+ assert.Equal(t, bundle.TypeKeyTask.URL(), objectId)
+ return sb, nil
+ })
+ fx.space.EXPECT().GetRelationIdByKey(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, key domain.RelationKey) (string, error) {
+ return key.URL(), nil
+ })
+
+ // when
+ err := fx.ObjectTypeAddRelations(nil, bundle.TypeKeyTask.URL(), []domain.RelationKey{
+ bundle.RelationKeyAssignee, bundle.RelationKeyDone,
+ })
+
+ // then
+ assert.NoError(t, err)
+ assert.Equal(t, []string{bundle.RelationKeyAssignee.URL(), bundle.RelationKeyDone.URL()},
+ pbtypes.GetStringList(sb.Details(), bundle.RelationKeyRecommendedRelations.String()))
+ })
+
+ t.Run("editing of bundled types is prohibited", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+
+ // when
+ err := fx.ObjectTypeAddRelations(nil, bundle.TypeKeyTask.BundledURL(), []domain.RelationKey{
+ bundle.RelationKeyAssignee, bundle.RelationKeyDone,
+ })
+
+ // then
+ assert.Error(t, err)
+ assert.ErrorIs(t, ErrBundledTypeIsReadonly, err)
+ })
+}
+
+func TestService_ObjectTypeRemoveRelations(t *testing.T) {
+ t.Run("remove recommended relations", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(bundle.TypeKeyTask.URL())
+ sb.SetSpace(fx.space)
+ sb.Doc.(*state.State).SetDetails(&types.Struct{Fields: map[string]*types.Value{
+ bundle.RelationKeyRecommendedRelations.String(): pbtypes.StringList([]string{
+ bundle.RelationKeyAssignee.URL(),
+ bundle.RelationKeyIsFavorite.URL(),
+ bundle.RelationKeyDone.URL(),
+ bundle.RelationKeyLinkedProjects.URL(),
+ }),
+ }})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, objectId string) (smartblock.SmartBlock, error) {
+ assert.Equal(t, bundle.TypeKeyTask.URL(), objectId)
+ return sb, nil
+ })
+ fx.space.EXPECT().GetRelationIdByKey(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, key domain.RelationKey) (string, error) {
+ return key.URL(), nil
+ })
+
+ // when
+ err := fx.ObjectTypeRemoveRelations(nil, bundle.TypeKeyTask.URL(), []domain.RelationKey{
+ bundle.RelationKeyAssignee, bundle.RelationKeyDone,
+ })
+
+ // then
+ assert.NoError(t, err)
+ assert.Equal(t, []string{bundle.RelationKeyIsFavorite.URL(), bundle.RelationKeyLinkedProjects.URL()},
+ pbtypes.GetStringList(sb.Details(), bundle.RelationKeyRecommendedRelations.String()))
+ })
+
+ t.Run("editing of bundled types is prohibited", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+
+ // when
+ err := fx.ObjectTypeRemoveRelations(nil, bundle.TypeKeyTask.BundledURL(), []domain.RelationKey{
+ bundle.RelationKeyAssignee, bundle.RelationKeyDone,
+ })
+
+ // then
+ assert.Error(t, err)
+ assert.ErrorIs(t, ErrBundledTypeIsReadonly, err)
+ })
+}
diff --git a/core/block/details.go b/core/block/detailservice/service.go
similarity index 53%
rename from core/block/details.go
rename to core/block/detailservice/service.go
index 237aded0b..8fd848a4c 100644
--- a/core/block/details.go
+++ b/core/block/detailservice/service.go
@@ -1,34 +1,111 @@
-package block
+package detailservice
import (
+ "context"
"errors"
+ "fmt"
"slices"
+ "github.com/anyproto/any-sync/app"
+ "github.com/anyproto/any-sync/app/logger"
"github.com/gogo/protobuf/types"
"github.com/samber/lo"
+ "go.uber.org/zap"
"github.com/anyproto/anytype-heart/core/block/cache"
"github.com/anyproto/anytype-heart/core/block/editor/basic"
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
+ "github.com/anyproto/anytype-heart/core/block/object/idresolver"
+ "github.com/anyproto/anytype-heart/core/block/restriction"
+ "github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/core/session"
"github.com/anyproto/anytype-heart/pb"
+ "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+ "github.com/anyproto/anytype-heart/space"
"github.com/anyproto/anytype-heart/util/pbtypes"
"github.com/anyproto/anytype-heart/util/slice"
)
-func (s *Service) SetDetails(ctx session.Context, objectId string, details []*model.Detail) (err error) {
+const CName = "details.service"
+
+var log = logger.NewNamed(CName)
+
+type Service interface {
+ cache.ObjectGetterComponent
+
+ SetDetails(ctx session.Context, objectId string, details []*model.Detail) error
+ SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []*model.Detail) error
+ SetDetailsList(ctx session.Context, objectIds []string, details []*model.Detail) error
+ ModifyDetails(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) error
+ ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) error
+
+ ObjectTypeAddRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error
+ ObjectTypeRemoveRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error
+
+ ListRelationsWithValue(spaceId string, value *types.Value) (keys []string, counters []int64, err error)
+
+ SetSpaceInfo(spaceId string, details *types.Struct) error
+ SetWorkspaceDashboardId(ctx session.Context, workspaceId string, id string) (setId string, err error)
+
+ SetIsFavorite(objectId string, isFavorite bool) error
+ SetIsArchived(objectId string, isArchived bool) error
+ SetListIsFavorite(objectIds []string, isFavorite bool) error
+ SetListIsArchived(objectIds []string, isArchived bool) error
+}
+
+func New() Service {
+ return &service{}
+}
+
+type service struct {
+ resolver idresolver.Resolver
+ spaceService space.Service
+ store objectstore.ObjectStore
+ restriction restriction.Service
+}
+
+func (s *service) Init(a *app.App) error {
+ s.resolver = app.MustComponent[idresolver.Resolver](a)
+ s.spaceService = app.MustComponent[space.Service](a)
+ s.store = app.MustComponent[objectstore.ObjectStore](a)
+ s.restriction = app.MustComponent[restriction.Service](a)
+ return nil
+}
+
+func (s *service) Name() string {
+ return CName
+}
+
+func (s *service) GetObject(ctx context.Context, objectID string) (sb smartblock.SmartBlock, err error) {
+ spaceID, err := s.resolver.ResolveSpaceID(objectID)
+ if err != nil {
+ return nil, err
+ }
+ return s.GetObjectByFullID(ctx, domain.FullID{SpaceID: spaceID, ObjectID: objectID})
+}
+
+func (s *service) GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error) {
+ spc, err := s.spaceService.Get(ctx, id.SpaceID)
+ if err != nil {
+ return nil, fmt.Errorf("get space: %w", err)
+ }
+ return spc.GetObject(ctx, id.ObjectID)
+}
+
+func (s *service) SetDetails(ctx session.Context, objectId string, details []*model.Detail) (err error) {
return cache.Do(s, objectId, func(b basic.DetailsSettable) error {
return b.SetDetails(ctx, details, true)
})
}
-func (s *Service) SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []*model.Detail) (err error) {
+func (s *service) SetDetailsAndUpdateLastUsed(ctx session.Context, objectId string, details []*model.Detail) (err error) {
return cache.Do(s, objectId, func(b basic.DetailsSettable) error {
return b.SetDetailsAndUpdateLastUsed(ctx, details, true)
})
}
-func (s *Service) SetDetailsList(ctx session.Context, objectIds []string, details []*model.Detail) (err error) {
+func (s *service) SetDetailsList(ctx session.Context, objectIds []string, details []*model.Detail) (err error) {
var (
resultError error
anySucceed bool
@@ -46,7 +123,7 @@ func (s *Service) SetDetailsList(ctx session.Context, objectIds []string, detail
}
}
if resultError != nil {
- log.Warnf("SetDetailsList: %v", resultError)
+ log.Warn("SetDetailsList", zap.Error(resultError))
}
if anySucceed {
return nil
@@ -55,19 +132,19 @@ func (s *Service) SetDetailsList(ctx session.Context, objectIds []string, detail
}
// ModifyDetails performs details get and update under the sb lock to make sure no modifications are done in the middle
-func (s *Service) ModifyDetails(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error) {
+func (s *service) ModifyDetails(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error) {
return cache.Do(s, objectId, func(du basic.DetailsUpdatable) error {
return du.UpdateDetails(modifier)
})
}
-func (s *Service) ModifyDetailsAndUpdateLastUsed(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error) {
+func (s *service) ModifyDetailsAndUpdateLastUsed(objectId string, modifier func(current *types.Struct) (*types.Struct, error)) (err error) {
return cache.Do(s, objectId, func(du basic.DetailsUpdatable) error {
return du.UpdateDetailsAndLastUsed(modifier)
})
}
-func (s *Service) ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) (resultError error) {
+func (s *service) ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesRequest) (resultError error) {
var anySucceed bool
for i, objectId := range req.ObjectIds {
modifyDetailsFunc := s.ModifyDetails
@@ -93,7 +170,7 @@ func (s *Service) ModifyDetailsList(req *pb.RpcObjectListModifyDetailValuesReque
}
}
if resultError != nil {
- log.Warnf("ModifyDetailsList: %v", resultError)
+ log.Warn("ModifyDetailsList", zap.Error(resultError))
}
if anySucceed {
return nil
diff --git a/core/block/detailservice/service_test.go b/core/block/detailservice/service_test.go
new file mode 100644
index 000000000..9b1fab0b6
--- /dev/null
+++ b/core/block/detailservice/service_test.go
@@ -0,0 +1,567 @@
+package detailservice
+
+import (
+ "context"
+ "fmt"
+ "testing"
+
+ "github.com/gogo/protobuf/types"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/mock"
+ "github.com/stretchr/testify/require"
+
+ "github.com/anyproto/anytype-heart/core/block/editor"
+ "github.com/anyproto/anytype-heart/core/block/editor/basic"
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest"
+ "github.com/anyproto/anytype-heart/core/block/object/idresolver/mock_idresolver"
+ "github.com/anyproto/anytype-heart/core/block/restriction"
+ "github.com/anyproto/anytype-heart/core/block/restriction/mock_restriction"
+ "github.com/anyproto/anytype-heart/core/block/simple"
+ "github.com/anyproto/anytype-heart/pb"
+ "github.com/anyproto/anytype-heart/pkg/lib/bundle"
+ coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
+ "github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
+ "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+ "github.com/anyproto/anytype-heart/pkg/lib/threads"
+ "github.com/anyproto/anytype-heart/space/clientspace/mock_clientspace"
+ "github.com/anyproto/anytype-heart/space/mock_space"
+ "github.com/anyproto/anytype-heart/util/pbtypes"
+)
+
+const spaceId = "spaceId"
+
+type fixture struct {
+ Service
+ resolver *mock_idresolver.MockResolver
+ spaceService *mock_space.MockService
+ store *objectstore.StoreFixture
+ restriction *mock_restriction.MockService
+ space *mock_clientspace.MockSpace
+}
+
+func newFixture(t *testing.T) *fixture {
+ resolver := mock_idresolver.NewMockResolver(t)
+ spaceService := mock_space.NewMockService(t)
+ store := objectstore.NewStoreFixture(t)
+ restriction := mock_restriction.NewMockService(t)
+
+ spc := mock_clientspace.NewMockSpace(t)
+ resolver.EXPECT().ResolveSpaceID(mock.Anything).Return(spaceId, nil).Maybe()
+ spaceService.EXPECT().Get(mock.Anything, mock.Anything).Return(spc, nil).Maybe()
+
+ s := &service{
+ resolver: resolver,
+ spaceService: spaceService,
+ store: store,
+ restriction: restriction,
+ }
+
+ return &fixture{
+ s,
+ resolver,
+ spaceService,
+ store,
+ restriction,
+ spc,
+ }
+}
+
+func TestService_SetDetailsList(t *testing.T) {
+ details := []*model.Detail{
+ {Key: bundle.RelationKeyAssignee.String(), Value: pbtypes.String("Mark Twain")},
+ {Key: bundle.RelationKeyDone.String(), Value: pbtypes.Bool(true)},
+ {Key: bundle.RelationKeyLinkedProjects.String(), Value: pbtypes.StringList([]string{"important", "urgent"})},
+ }
+
+ t.Run("lastUsed is updated once", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ objects := map[string]*smarttest.SmartTest{
+ "obj1": smarttest.New("obj1"),
+ "obj2": smarttest.New("obj2"),
+ "obj3": smarttest.New("obj3"),
+ }
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ object, ok := objects[objectId]
+ require.True(t, ok)
+ return object, nil
+ })
+
+ // when
+ err := fx.SetDetailsList(nil, []string{"obj1", "obj2", "obj3"}, details)
+
+ // then
+ assert.NoError(t, err)
+ require.Len(t, objects["obj1"].Results.LastUsedUpdates, 3)
+ assert.Equal(t, []string{
+ bundle.RelationKeyAssignee.String(),
+ bundle.RelationKeyDone.String(),
+ bundle.RelationKeyLinkedProjects.String(),
+ }, objects["obj1"].Results.LastUsedUpdates)
+
+ // lastUsed should be updated only during the work under 1st object
+ assert.Len(t, objects["obj2"].Results.LastUsedUpdates, 0)
+ assert.Len(t, objects["obj3"].Results.LastUsedUpdates, 0)
+
+ assert.Equal(t, "Mark Twain", pbtypes.GetString(objects["obj1"].NewState().Details(), bundle.RelationKeyAssignee.String()))
+ assert.True(t, pbtypes.GetBool(objects["obj2"].NewState().Details(), bundle.RelationKeyDone.String()))
+ assert.Equal(t, []string{"important", "urgent"}, pbtypes.GetStringList(objects["obj3"].NewState().Details(), bundle.RelationKeyLinkedProjects.String()))
+ })
+
+ t.Run("some updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId != "obj2" {
+ return nil, fmt.Errorf("failed to find object")
+ }
+ return smarttest.New(objectId), nil
+ })
+
+ // when
+ err := fx.SetDetailsList(nil, []string{"obj1", "obj2", "obj3"}, details)
+
+ // then
+ assert.NoError(t, err)
+ })
+
+ t.Run("all updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, _ string) (smartblock.SmartBlock, error) {
+ return nil, fmt.Errorf("failed to find object")
+ })
+
+ // when
+ err := fx.SetDetailsList(nil, []string{"obj1", "obj2", "obj3"}, details)
+
+ // then
+ assert.Error(t, err)
+ })
+}
+
+func TestService_ModifyDetailsList(t *testing.T) {
+ ops := []*pb.RpcObjectListModifyDetailValuesRequestOperation{
+ {RelationKey: bundle.RelationKeyName.String(), Set: pbtypes.String("My favorite page")},
+ {RelationKey: bundle.RelationKeyLinks.String(), Add: pbtypes.String("some link")},
+ {RelationKey: bundle.RelationKeyDone.String(), Set: pbtypes.Bool(true)},
+ }
+
+ t.Run("lastUsed is updated once", func(t *testing.T) {
+ fx := newFixture(t)
+ objects := map[string]*smarttest.SmartTest{
+ "obj1": smarttest.New("obj1"),
+ "obj2": smarttest.New("obj2"),
+ "obj3": smarttest.New("obj3"),
+ }
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ object, ok := objects[objectId]
+ require.True(t, ok)
+ return object, nil
+ })
+
+ // when
+ err := fx.ModifyDetailsList(&pb.RpcObjectListModifyDetailValuesRequest{
+ ObjectIds: []string{"obj1", "obj2", "obj3"},
+ Operations: ops,
+ })
+
+ // then
+ assert.NoError(t, err)
+ require.Len(t, objects["obj1"].Results.LastUsedUpdates, 3)
+
+ // lastUsed should be updated only during the work under 1st object
+ assert.Len(t, objects["obj2"].Results.LastUsedUpdates, 0)
+ assert.Len(t, objects["obj3"].Results.LastUsedUpdates, 0)
+ })
+
+ t.Run("some updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId != "obj2" {
+ return nil, fmt.Errorf("failed to find object")
+ }
+ return smarttest.New(objectId), nil
+ })
+
+ // when
+ err := fx.ModifyDetailsList(&pb.RpcObjectListModifyDetailValuesRequest{
+ ObjectIds: []string{"obj1", "obj2", "obj3"},
+ Operations: ops,
+ })
+
+ // then
+ assert.NoError(t, err)
+ })
+
+ t.Run("all updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, _ string) (smartblock.SmartBlock, error) {
+ return nil, fmt.Errorf("failed to find object")
+ })
+
+ // when
+ err := fx.ModifyDetailsList(&pb.RpcObjectListModifyDetailValuesRequest{
+ ObjectIds: []string{"obj1", "obj2", "obj3"},
+ Operations: ops,
+ })
+
+ // then
+ assert.Error(t, err)
+ })
+}
+
+func TestService_SetSpaceInfo(t *testing.T) {
+ var (
+ wsObjectId = "workspace"
+ details = &types.Struct{Fields: map[string]*types.Value{
+ bundle.RelationKeyName.String(): pbtypes.String("My space"),
+ bundle.RelationKeyIconOption.String(): pbtypes.Int64(5),
+ bundle.RelationKeyIconImage.String(): pbtypes.String("kitten.jpg"),
+ }}
+ )
+
+ t.Run("no error", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ ws := smarttest.New(wsObjectId)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Workspace: wsObjectId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ assert.Equal(t, wsObjectId, objectId)
+ return ws, nil
+ })
+
+ // when
+ err := fx.SetSpaceInfo(spaceId, details)
+
+ // then
+ assert.NoError(t, err)
+ assert.Equal(t, "My space", pbtypes.GetString(ws.NewState().Details(), bundle.RelationKeyName.String()))
+ assert.Equal(t, int64(5), pbtypes.GetInt64(ws.NewState().Details(), bundle.RelationKeyIconOption.String()))
+ assert.Equal(t, "kitten.jpg", pbtypes.GetString(ws.NewState().Details(), bundle.RelationKeyIconImage.String()))
+ })
+
+ t.Run("error on details setting", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Workspace: wsObjectId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ assert.Equal(t, wsObjectId, objectId)
+ return nil, fmt.Errorf("failed to get object")
+ })
+
+ // when
+ err := fx.SetSpaceInfo(spaceId, details)
+
+ // then
+ assert.Error(t, err)
+ })
+}
+
+func TestService_SetWorkspaceDashboardId(t *testing.T) {
+ var (
+ wsObjectId = "workspace"
+ dashboardId = "homepage"
+ )
+
+ t.Run("no error", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(wsObjectId)
+ sb.SetType(coresb.SmartBlockTypeWorkspace)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ assert.Equal(t, wsObjectId, objectId)
+ ws := &editor.Workspaces{
+ SmartBlock: sb,
+ AllOperations: basic.NewBasic(sb, fx.store, nil, nil, nil),
+ }
+ return ws, nil
+ })
+
+ // when
+ setId, err := fx.SetWorkspaceDashboardId(nil, wsObjectId, dashboardId)
+
+ // then
+ assert.NoError(t, err)
+ assert.Equal(t, dashboardId, setId)
+ assert.Equal(t, dashboardId, pbtypes.GetString(sb.NewState().Details(), bundle.RelationKeySpaceDashboardId.String()))
+ })
+
+ t.Run("error if wrong smartblock type", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(wsObjectId)
+ sb.SetType(coresb.SmartBlockTypePage)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ assert.Equal(t, wsObjectId, objectId)
+ ws := &editor.Workspaces{
+ SmartBlock: sb,
+ AllOperations: basic.NewBasic(sb, fx.store, nil, nil, nil),
+ }
+ return ws, nil
+ })
+
+ // when
+ _, err := fx.SetWorkspaceDashboardId(nil, wsObjectId, dashboardId)
+
+ // then
+ assert.Error(t, err)
+ assert.ErrorIs(t, ErrUnexpectedBlockType, err)
+ })
+}
+
+func TestService_SetListIsFavorite(t *testing.T) {
+ var (
+ objects = []objectstore.TestObject{
+ {bundle.RelationKeyId: pbtypes.String("obj1"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ {bundle.RelationKeyId: pbtypes.String("obj2"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ {bundle.RelationKeyId: pbtypes.String("obj3"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ }
+ homeId = "home"
+ )
+
+ t.Run("no error on favoriting", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(homeId)
+ sb.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ require.Equal(t, homeId, objectId)
+ return editor.NewDashboard(sb, fx.store, nil), nil
+ })
+
+ // when
+ err := fx.SetListIsFavorite([]string{"obj1", "obj2", "obj3"}, true)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 4)
+ })
+
+ t.Run("no error on unfavoriting", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(homeId)
+ sb.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{"obj1", "obj2", "obj3"}}))
+ sb.AddBlock(simple.New(&model.Block{Id: "obj1", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj1"}}}))
+ sb.AddBlock(simple.New(&model.Block{Id: "obj2", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj2"}}}))
+ sb.AddBlock(simple.New(&model.Block{Id: "obj3", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj3"}}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ require.Equal(t, homeId, objectId)
+ return editor.NewDashboard(sb, fx.store, nil), nil
+ })
+
+ // when
+ err := fx.SetListIsFavorite([]string{"obj3", "obj1"}, false)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 2)
+ })
+
+ t.Run("some updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(homeId)
+ sb.AddBlock(simple.New(&model.Block{Id: homeId, ChildrenIds: []string{}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId})
+ flag := false
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ require.Equal(t, homeId, objectId)
+ if flag {
+ return nil, fmt.Errorf("unexpected error")
+ }
+ flag = true
+ return editor.NewDashboard(sb, fx.store, nil), nil
+ })
+
+ // when
+ err := fx.SetListIsFavorite([]string{"obj3", "obj1"}, true)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 2)
+ })
+
+ t.Run("all updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Home: homeId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ require.Equal(t, homeId, objectId)
+ return nil, fmt.Errorf("unexpected error")
+ })
+
+ // when
+ err := fx.SetListIsFavorite([]string{"obj3", "obj1"}, true)
+
+ // then
+ assert.Error(t, err)
+ })
+}
+
+func TestService_SetIsArchived(t *testing.T) {
+ var (
+ objects = []objectstore.TestObject{
+ {bundle.RelationKeyId: pbtypes.String("obj1"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ }
+ binId = "bin"
+ )
+
+ t.Run("no error on moving to bin", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(binId)
+ sb.AddBlock(simple.New(&model.Block{Id: binId, ChildrenIds: []string{}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Archive: binId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId == binId {
+ return editor.NewArchive(sb, fx.store), nil
+ }
+ return smarttest.New(objectId), nil
+ })
+ fx.restriction.EXPECT().CheckRestrictions(mock.Anything, mock.Anything).Return(nil)
+
+ // when
+ err := fx.SetIsArchived("obj1", true)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 2)
+ })
+
+ t.Run("cannot move to bin an object with restriction", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(binId)
+ sb.AddBlock(simple.New(&model.Block{Id: binId, ChildrenIds: []string{}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId == binId {
+ return editor.NewArchive(sb, fx.store), nil
+ }
+ return smarttest.New(objectId), nil
+ })
+ fx.restriction.EXPECT().CheckRestrictions(mock.Anything, mock.Anything).Return(restriction.ErrRestricted)
+
+ // when
+ err := fx.SetIsArchived("obj1", true)
+
+ // then
+ assert.Error(t, err)
+ assert.ErrorIs(t, err, restriction.ErrRestricted)
+ })
+}
+
+func TestService_SetListIsArchived(t *testing.T) {
+ var (
+ objects = []objectstore.TestObject{
+ {bundle.RelationKeyId: pbtypes.String("obj1"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ {bundle.RelationKeyId: pbtypes.String("obj2"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ {bundle.RelationKeyId: pbtypes.String("obj3"), bundle.RelationKeySpaceId: pbtypes.String(spaceId)},
+ }
+ binId = "bin"
+ )
+
+ t.Run("no error on moving to bin", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(binId)
+ sb.AddBlock(simple.New(&model.Block{Id: binId, ChildrenIds: []string{}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Archive: binId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId == binId {
+ return editor.NewArchive(sb, fx.store), nil
+ }
+ return smarttest.New(objectId), nil
+ })
+ fx.restriction.EXPECT().CheckRestrictions(mock.Anything, mock.Anything).Return(nil)
+
+ // when
+ err := fx.SetListIsArchived([]string{"obj1", "obj2", "obj3"}, true)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 4)
+ })
+
+ t.Run("no error on moving from bin", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+
+ sb := smarttest.New(binId)
+ sb.AddBlock(simple.New(&model.Block{Id: binId, ChildrenIds: []string{"obj1", "obj2", "obj3"}}))
+ sb.AddBlock(simple.New(&model.Block{Id: "obj1", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj1"}}}))
+ sb.AddBlock(simple.New(&model.Block{Id: "obj2", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj2"}}}))
+ sb.AddBlock(simple.New(&model.Block{Id: "obj3", Content: &model.BlockContentOfLink{Link: &model.BlockContentLink{TargetBlockId: "obj3"}}}))
+
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Archive: binId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId == binId {
+ return editor.NewArchive(sb, fx.store), nil
+ }
+ return smarttest.New(objectId), nil
+ })
+
+ // when
+ err := fx.SetListIsArchived([]string{"obj1", "obj2", "obj3"}, false)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 1)
+ })
+
+ t.Run("some updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ sb := smarttest.New(binId)
+ sb.AddBlock(simple.New(&model.Block{Id: binId, ChildrenIds: []string{}}))
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Archive: binId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ if objectId == binId {
+ return editor.NewArchive(sb, fx.store), nil
+ }
+ if objectId == "obj2" {
+ return nil, fmt.Errorf("failed to get object")
+ }
+ return smarttest.New(objectId), nil
+ })
+ fx.restriction.EXPECT().CheckRestrictions(mock.Anything, mock.Anything).Return(nil)
+
+ // when
+ err := fx.SetListIsArchived([]string{"obj1", "obj2", "obj3"}, true)
+
+ // then
+ assert.NoError(t, err)
+ assert.Len(t, sb.Blocks(), 3)
+ })
+
+ t.Run("all updates failed", func(t *testing.T) {
+ // given
+ fx := newFixture(t)
+ fx.store.AddObjects(t, objects)
+ fx.space.EXPECT().DerivedIDs().Return(threads.DerivedSmartblockIds{Archive: binId})
+ fx.space.EXPECT().GetObject(mock.Anything, mock.Anything).RunAndReturn(func(_ context.Context, objectId string) (smartblock.SmartBlock, error) {
+ return nil, fmt.Errorf("failed to get object")
+ })
+
+ // when
+ err := fx.SetListIsArchived([]string{"obj1", "obj2", "obj3"}, true)
+
+ // then
+ assert.Error(t, err)
+ })
+}
diff --git a/core/block/detailservice/set_details.go b/core/block/detailservice/set_details.go
new file mode 100644
index 000000000..3444283ac
--- /dev/null
+++ b/core/block/detailservice/set_details.go
@@ -0,0 +1,221 @@
+package detailservice
+
+import (
+ "context"
+ "errors"
+ "fmt"
+
+ "github.com/gogo/protobuf/types"
+ "go.uber.org/zap"
+
+ "github.com/anyproto/anytype-heart/core/block/cache"
+ "github.com/anyproto/anytype-heart/core/block/editor"
+ "github.com/anyproto/anytype-heart/core/block/editor/collection"
+ "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
+ "github.com/anyproto/anytype-heart/core/session"
+ "github.com/anyproto/anytype-heart/pkg/lib/bundle"
+ coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
+ "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+ "github.com/anyproto/anytype-heart/util/pbtypes"
+)
+
+var ErrUnexpectedBlockType = errors.New("unexpected block type")
+
+func (s *service) SetSpaceInfo(spaceId string, details *types.Struct) error {
+ ctx := context.TODO()
+ spc, err := s.spaceService.Get(ctx, spaceId)
+ if err != nil {
+ return err
+ }
+ workspaceId := spc.DerivedIDs().Workspace
+
+ setDetails := make([]*model.Detail, 0, len(details.GetFields()))
+ for k, v := range details.GetFields() {
+ setDetails = append(setDetails, &model.Detail{
+ Key: k,
+ Value: v,
+ })
+ }
+ return s.SetDetails(nil, workspaceId, setDetails)
+}
+
+func (s *service) SetWorkspaceDashboardId(ctx session.Context, workspaceId string, id string) (setId string, err error) {
+ err = cache.Do(s, workspaceId, func(ws *editor.Workspaces) error {
+ if ws.Type() != coresb.SmartBlockTypeWorkspace {
+ return ErrUnexpectedBlockType
+ }
+ if err = ws.SetDetails(ctx, []*model.Detail{
+ {
+ Key: bundle.RelationKeySpaceDashboardId.String(),
+ Value: pbtypes.String(id),
+ },
+ }, false); err != nil {
+ return err
+ }
+ return nil
+ })
+ return id, err
+}
+
+func (s *service) SetIsFavorite(objectId string, isFavorite bool) error {
+ spaceID, err := s.resolver.ResolveSpaceID(objectId)
+ if err != nil {
+ return fmt.Errorf("resolve spaceID: %w", err)
+ }
+ spc, err := s.spaceService.Get(context.Background(), spaceID)
+ if err != nil {
+ return fmt.Errorf("get space: %w", err)
+ }
+ return s.objectLinksCollectionModify(spc.DerivedIDs().Home, objectId, isFavorite)
+}
+
+func (s *service) SetIsArchived(objectId string, isArchived bool) error {
+ spaceID, err := s.resolver.ResolveSpaceID(objectId)
+ if err != nil {
+ return fmt.Errorf("resolve spaceID: %w", err)
+ }
+ spc, err := s.spaceService.Get(context.Background(), spaceID)
+ if err != nil {
+ return fmt.Errorf("get space: %w", err)
+ }
+ if err := s.checkArchivedRestriction(isArchived, objectId); err != nil {
+ return err
+ }
+ return s.objectLinksCollectionModify(spc.DerivedIDs().Archive, objectId, isArchived)
+}
+
+func (s *service) SetListIsFavorite(objectIds []string, isFavorite bool) error {
+ ids, err := s.store.HasIDs(objectIds...)
+ if err != nil {
+ return err
+ }
+ var (
+ anySucceed bool
+ resultError error
+ )
+ for _, id := range ids {
+ err := s.SetIsFavorite(id, isFavorite)
+ if err != nil {
+ log.Error("failed to favorite object", zap.String("objectId", id), zap.Error(err))
+ resultError = errors.Join(resultError, err)
+ } else {
+ anySucceed = true
+ }
+ }
+ if resultError != nil {
+ log.Warn("failed to set objects as favorite", zap.Error(resultError))
+ }
+ if anySucceed {
+ return nil
+ }
+ return resultError
+}
+
+func (s *service) SetListIsArchived(objectIds []string, isArchived bool) error {
+ objectIdsPerSpace, err := s.partitionObjectIdsBySpaceId(objectIds)
+ if err != nil {
+ return fmt.Errorf("partition object ids by spaces: %w", err)
+ }
+
+ var (
+ resultErr error
+ anySucceed bool
+ )
+ for spaceId, objectIdsOfThisSpace := range objectIdsPerSpace {
+ err = s.setIsArchivedForObjects(spaceId, objectIdsOfThisSpace, isArchived)
+ if err != nil {
+ log.Error("failed to set isArchived to objects", zap.String("spaceId", spaceId),
+ zap.Strings("objectIds", objectIdsOfThisSpace), zap.Bool("isArchived", isArchived), zap.Error(err))
+ resultErr = errors.Join(resultErr, err)
+ continue
+ }
+ anySucceed = true
+ }
+ if anySucceed {
+ return nil
+ }
+ return resultErr
+}
+
+func (s *service) checkArchivedRestriction(isArchived bool, objectId string) error {
+ if !isArchived {
+ return nil
+ }
+ return cache.Do(s, objectId, func(sb smartblock.SmartBlock) error {
+ return s.restriction.CheckRestrictions(sb, model.Restrictions_Delete)
+ })
+}
+
+func (s *service) objectLinksCollectionModify(collectionId string, objectId string, value bool) error {
+ return cache.Do(s, collectionId, func(b smartblock.SmartBlock) error {
+ coll, ok := b.(collection.Collection)
+ if !ok {
+ return fmt.Errorf("unsupported sb block type: %T", b)
+ }
+ if value {
+ return coll.AddObject(objectId)
+ } else {
+ return coll.RemoveObject(objectId)
+ }
+ })
+}
+
+func (s *service) partitionObjectIdsBySpaceId(objectIds []string) (map[string][]string, error) {
+ res := make(map[string][]string, len(objectIds))
+ for _, objectId := range objectIds {
+ spaceId, err := s.resolver.ResolveSpaceID(objectId)
+ if err != nil {
+ return nil, fmt.Errorf("resolve spaceId: %w", err)
+ }
+ res[spaceId] = append(res[spaceId], objectId)
+ }
+ return res, nil
+}
+
+func (s *service) setIsArchivedForObjects(spaceId string, objectIds []string, isArchived bool) error {
+ spc, err := s.spaceService.Get(context.Background(), spaceId)
+ if err != nil {
+ return fmt.Errorf("get space: %w", err)
+ }
+ return cache.Do(s, spc.DerivedIDs().Archive, func(b smartblock.SmartBlock) error {
+ archive, ok := b.(collection.Collection)
+ if !ok {
+ return fmt.Errorf("unexpected archive block type: %T", b)
+ }
+
+ ids, err := s.store.HasIDs(objectIds...)
+ if err != nil {
+ return err
+ }
+ anySucceed, err := s.modifyArchiveLinks(archive, isArchived, ids...)
+
+ if err != nil {
+ log.Warn("failed to archive", zap.Error(err))
+ }
+ if anySucceed {
+ return nil
+ }
+ return err
+ })
+}
+
+func (s *service) modifyArchiveLinks(
+ coll collection.Collection, value bool, ids ...string,
+) (anySucceed bool, resultErr error) {
+ for _, id := range ids {
+ err := s.checkArchivedRestriction(value, id)
+ if err == nil {
+ if value {
+ err = coll.AddObject(id)
+ } else {
+ err = coll.RemoveObject(id)
+ }
+ }
+ if err != nil {
+ resultErr = errors.Join(resultErr, err)
+ continue
+ }
+ anySucceed = true
+ }
+ return
+}
diff --git a/core/block/editor/converter/layout.go b/core/block/editor/converter/layout.go
index ad10315fa..ccf2db36b 100644
--- a/core/block/editor/converter/layout.go
+++ b/core/block/editor/converter/layout.go
@@ -220,7 +220,7 @@ func (c *layoutConverter) fromNoteToCollection(st *state.State) error {
}
func (c *layoutConverter) fromAnyToCollection(st *state.State) error {
- blockContent := template.MakeCollectionDataviewContent()
+ blockContent := template.MakeDataviewContent(true, nil, nil)
template.InitTemplate(st, template.WithDataview(blockContent, false))
return nil
}
diff --git a/core/block/editor/dataview/dataview.go b/core/block/editor/dataview/dataview.go
index 601f48fc0..cbd1201da 100644
--- a/core/block/editor/dataview/dataview.go
+++ b/core/block/editor/dataview/dataview.go
@@ -6,7 +6,6 @@ import (
"fmt"
anystore "github.com/anyproto/any-store"
- "github.com/globalsign/mgo/bson"
"github.com/google/uuid"
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
@@ -19,7 +18,6 @@ import (
"github.com/anyproto/anytype-heart/core/session"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/pkg/lib/database"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
"github.com/anyproto/anytype-heart/pkg/lib/logging"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
@@ -293,22 +291,12 @@ func (d *sdataview) CreateView(ctx session.Context, id string,
if len(view.Sorts) == 0 {
// todo: set depends on the view type
- view.Sorts = defaultLastModifiedDateSort()
+ view.Sorts = template.DefaultLastModifiedDateSort()
}
tb.AddView(view)
return &view, d.Apply(s)
}
-func defaultLastModifiedDateSort() []*model.BlockContentDataviewSort {
- return []*model.BlockContentDataviewSort{
- {
- Id: bson.NewObjectId().Hex(),
- RelationKey: bundle.RelationKeyLastModifiedDate.String(),
- Type: model.BlockContentDataviewSort_Desc,
- },
- }
-}
-
func (d *sdataview) UpdateViewGroupOrder(ctx session.Context, blockId string, order *model.BlockContentDataviewGroupOrder) error {
st := d.NewStateCtx(ctx)
dvBlock, err := getDataviewBlock(st, blockId)
@@ -347,33 +335,6 @@ func (d *sdataview) DataviewMoveObjectsInView(ctx session.Context, req *pb.RpcBl
return d.Apply(st)
}
-func SchemaBySources(sources []string, objectStore objectstore.ObjectStore) (database.Schema, error) {
- // Empty schema
- if len(sources) == 0 {
- return database.NewEmptySchema(), nil
- }
-
- // Try object type
- objectType, err := objectStore.GetObjectType(sources[0])
- if err == nil {
- sch := database.NewByType(objectType)
- return sch, nil
- }
-
- // Finally, try relations
- relations := make([]*model.RelationLink, 0, len(sources))
- for _, relId := range sources {
- rel, err := objectStore.GetRelationByID(relId)
- if err != nil {
- return nil, fmt.Errorf("failed to get relation %s: %w", relId, err)
- }
-
- relations = append(relations, (&relationutils.Relation{Relation: rel}).RelationLink())
- }
- sch := database.NewByRelations(relations)
- return sch, nil
-}
-
func (d *sdataview) listRestrictedSources(ctx context.Context) ([]string, error) {
keys := []domain.TypeKey{
bundle.TypeKeyFile,
@@ -471,71 +432,27 @@ func getDataviewBlock(s *state.State, id string) (dataview.Block, error) {
return nil, fmt.Errorf("not a dataview block")
}
-func BlockBySource(objectStore objectstore.ObjectStore, source []string) (*model.BlockContentOfDataview, error) {
- schema, err := SchemaBySources(source, objectStore)
- if err != nil {
- return nil, fmt.Errorf("get schema by sources: %w", err)
+func BlockBySource(objectStore objectstore.ObjectStore, sources []string) (*model.BlockContentOfDataview, error) {
+ // Empty schema
+ if len(sources) == 0 {
+ return template.MakeDataviewContent(false, nil, nil), nil
}
- var (
- relations []*model.RelationLink
- viewRelations []*model.BlockContentDataviewRelation
- )
-
- for _, rel := range schema.RequiredRelations() {
- relations = append(relations, &model.RelationLink{
- Format: rel.Format,
- Key: rel.Key,
- })
- viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: true})
+ // Try object type
+ objectType, err := objectStore.GetObjectType(sources[0])
+ if err == nil {
+ return template.MakeDataviewContent(false, objectType, nil), nil
}
- for _, rel := range schema.ListRelations() {
- // other relations should be added with
- if pbtypes.HasRelationLink(relations, rel.Key) {
- continue
+ // Finally, try relations
+ relations := make([]*model.RelationLink, 0, len(sources))
+ for _, relId := range sources {
+ rel, err := objectStore.GetRelationByID(relId)
+ if err != nil {
+ return nil, fmt.Errorf("failed to get relation %s: %w", relId, err)
}
- relations = append(relations, &model.RelationLink{
- Format: rel.Format,
- Key: rel.Key,
- })
- viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: false})
- }
-
- schemaRelations := schema.ListRelations()
- if !pbtypes.HasRelationLink(schemaRelations, bundle.RelationKeyName.String()) {
- schemaRelations = append([]*model.RelationLink{bundle.MustGetRelationLink(bundle.RelationKeyName)}, schemaRelations...)
+ relations = append(relations, (&relationutils.Relation{Relation: rel}).RelationLink())
}
-
- for _, relKey := range template.DefaultDataviewRelations {
- if pbtypes.HasRelationLink(relations, relKey.String()) {
- continue
- }
- rel := bundle.MustGetRelation(relKey)
- if rel.Hidden {
- continue
- }
- relations = append(relations, &model.RelationLink{
- Format: rel.Format,
- Key: rel.Key,
- })
- viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: false})
- }
-
- return &model.BlockContentOfDataview{
- Dataview: &model.BlockContentDataview{
- RelationLinks: relations,
- Views: []*model.BlockContentDataviewView{
- {
- Id: bson.NewObjectId().Hex(),
- Type: model.BlockContentDataviewView_Table,
- Name: "All",
- Sorts: defaultLastModifiedDateSort(),
- Filters: nil,
- Relations: viewRelations,
- },
- },
- },
- }, nil
+ return template.MakeDataviewContent(false, objectType, relations), nil
}
diff --git a/core/block/editor/smartblock/smarttest/smarttest.go b/core/block/editor/smartblock/smarttest/smarttest.go
index 8fbad36ce..d1caf97d6 100644
--- a/core/block/editor/smartblock/smarttest/smarttest.go
+++ b/core/block/editor/smartblock/smarttest/smarttest.go
@@ -25,6 +25,7 @@ import (
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
"github.com/anyproto/anytype-heart/pkg/lib/threads"
+ "github.com/anyproto/anytype-heart/util/pbtypes"
"github.com/anyproto/anytype-heart/util/testMock"
)
@@ -268,6 +269,49 @@ func (st *SmartTest) SetDetails(ctx session.Context, details []*model.Detail, sh
return
}
+func (st *SmartTest) SetDetailsAndUpdateLastUsed(ctx session.Context, details []*model.Detail, showEvent bool) (err error) {
+ for _, detail := range details {
+ st.Results.LastUsedUpdates = append(st.Results.LastUsedUpdates, detail.Key)
+ }
+ return st.SetDetails(ctx, details, showEvent)
+}
+
+func (st *SmartTest) UpdateDetails(update func(current *types.Struct) (*types.Struct, error)) (err error) {
+ details := st.Doc.(*state.State).CombinedDetails()
+ if details == nil || details.Fields == nil {
+ details = &types.Struct{Fields: map[string]*types.Value{}}
+ }
+ newDetails, err := update(details)
+ if err != nil {
+ return err
+ }
+ st.Doc.(*state.State).SetDetails(newDetails)
+ return nil
+}
+
+func (st *SmartTest) UpdateDetailsAndLastUsed(update func(current *types.Struct) (*types.Struct, error)) (err error) {
+ details := st.Doc.(*state.State).CombinedDetails()
+ if details == nil || details.Fields == nil {
+ details = &types.Struct{Fields: map[string]*types.Value{}}
+ }
+ oldDetails := pbtypes.CopyStruct(details, true)
+
+ newDetails, err := update(details)
+ if err != nil {
+ return err
+ }
+
+ diff := pbtypes.StructDiff(oldDetails, newDetails)
+ if diff == nil || diff.Fields == nil {
+ return nil
+ }
+
+ for key := range diff.Fields {
+ st.Results.LastUsedUpdates = append(st.Results.LastUsedUpdates, key)
+ }
+ return nil
+}
+
func (st *SmartTest) Init(ctx *smartblock.InitContext) (err error) {
if ctx.State == nil {
ctx.State = st.NewState()
@@ -408,4 +452,6 @@ func (st *SmartTest) Update(ctx session.Context, apply func(b simple.Block) erro
type Results struct {
Events [][]simple.EventMessage
Applies [][]*model.Block
+
+ LastUsedUpdates []string
}
diff --git a/core/block/editor/template/collection.go b/core/block/editor/template/collection.go
index a9e4ebe5e..02acae011 100644
--- a/core/block/editor/template/collection.go
+++ b/core/block/editor/template/collection.go
@@ -1,6 +1,8 @@
package template
import (
+ "slices"
+
"github.com/globalsign/mgo/bson"
"github.com/anyproto/anytype-heart/core/domain"
@@ -9,68 +11,137 @@ import (
"github.com/anyproto/anytype-heart/util/pbtypes"
)
-func MakeCollectionDataviewContent() *model.BlockContentOfDataview {
- relations := []*model.RelationLink{
- {
- Format: model.RelationFormat_shorttext,
- Key: bundle.RelationKeyName.String(),
- },
+const (
+ CollectionStoreKey = "objects"
+ defaultViewName = "All"
+)
+
+var (
+ defaultDataviewRelations = []domain.RelationKey{
+ bundle.RelationKeyName,
+ bundle.RelationKeyCreatedDate,
+ bundle.RelationKeyCreator,
+ bundle.RelationKeyLastModifiedDate,
+ bundle.RelationKeyLastModifiedBy,
+ bundle.RelationKeyLastOpenedDate,
+ bundle.RelationKeyBacklinks,
}
- viewRelations := []*model.BlockContentDataviewRelation{
- {
- Key: bundle.RelationKeyName.String(),
- IsVisible: true,
- },
+
+ defaultCollectionRelations = []domain.RelationKey{
+ bundle.RelationKeyName,
+ bundle.RelationKeyType,
+ bundle.RelationKeyCreatedDate,
+ bundle.RelationKeyCreator,
+ bundle.RelationKeyLastModifiedDate,
+ bundle.RelationKeyLastModifiedBy,
+ bundle.RelationKeyLastOpenedDate,
+ bundle.RelationKeyBacklinks,
+ bundle.RelationKeyTag,
+ bundle.RelationKeyDescription,
}
- for _, relKey := range DefaultDataviewRelations {
- if pbtypes.HasRelationLink(relations, relKey.String()) {
- continue
+
+ defaultVisibleRelations = []domain.RelationKey{
+ bundle.RelationKeyName,
+ bundle.RelationKeyType,
+ }
+)
+
+func MakeDataviewContent(isCollection bool, ot *model.ObjectType, relLinks []*model.RelationLink) *model.BlockContentOfDataview {
+ var (
+ defaultRelations = defaultCollectionRelations
+ visibleRelations = defaultVisibleRelations
+ sorts = DefaultLastModifiedDateSort()
+ )
+
+ if isCollection {
+ sorts = defaultNameSort()
+ } else if relLinks != nil {
+ for _, relLink := range relLinks {
+ visibleRelations = append(visibleRelations, domain.RelationKey(relLink.Key))
}
- rel := bundle.MustGetRelation(relKey)
- relations = append(relations, &model.RelationLink{
- Format: rel.Format,
- Key: rel.Key,
- })
- viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: false})
+ } else if ot != nil {
+ defaultRelations = defaultDataviewRelations
+ relLinks = ot.RelationLinks
+ } else {
+ defaultRelations = defaultDataviewRelations
}
- blockContent := &model.BlockContentOfDataview{
+ relationLinks, viewRelations := generateRelationLists(defaultRelations, relLinks, visibleRelations)
+
+ return &model.BlockContentOfDataview{
Dataview: &model.BlockContentDataview{
- IsCollection: true,
- RelationLinks: relations,
+ IsCollection: isCollection,
+ RelationLinks: relationLinks,
Views: []*model.BlockContentDataviewView{
{
- Id: bson.NewObjectId().Hex(),
- Type: model.BlockContentDataviewView_Table,
- Name: "All",
- Sorts: []*model.BlockContentDataviewSort{
- {
- RelationKey: "name",
- Type: model.BlockContentDataviewSort_Asc,
- },
- },
+ Id: bson.NewObjectId().Hex(),
+ Type: model.BlockContentDataviewView_Table,
+ Name: defaultViewName,
+ Sorts: sorts,
Filters: nil,
Relations: viewRelations,
},
},
},
}
- return blockContent
}
-var DefaultDataviewRelations = make([]domain.RelationKey, 0, len(bundle.RequiredInternalRelations))
+func generateRelationLists(
+ defaultRelations []domain.RelationKey,
+ additionalRelations []*model.RelationLink,
+ visibleRelations []domain.RelationKey,
+) (
+ relationLinks []*model.RelationLink,
+ viewRelations []*model.BlockContentDataviewRelation,
+) {
+ isVisible := func(key domain.RelationKey) bool {
+ return slices.Contains(visibleRelations, key)
+ }
+
+ for _, relKey := range defaultRelations {
+ rel := bundle.MustGetRelation(relKey)
+ relationLinks = append(relationLinks, &model.RelationLink{
+ Format: rel.Format,
+ Key: rel.Key,
+ })
+ viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{
+ Key: rel.Key,
+ IsVisible: isVisible(relKey),
+ })
+ }
-func init() {
- // fill DefaultDataviewRelations
- // deprecated: we should remove this after we merge relations as objects
- for _, rel := range bundle.RequiredInternalRelations {
- if bundle.MustGetRelation(rel).Hidden {
+ for _, relLink := range additionalRelations {
+ if pbtypes.HasRelationLink(relationLinks, relLink.Key) {
continue
}
- DefaultDataviewRelations = append(DefaultDataviewRelations, rel)
+ relationLinks = append(relationLinks, &model.RelationLink{
+ Format: relLink.Format,
+ Key: relLink.Key,
+ })
+ viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{
+ Key: relLink.Key,
+ IsVisible: isVisible(domain.RelationKey(relLink.Key)),
+ })
}
- DefaultDataviewRelations = append(DefaultDataviewRelations, bundle.RelationKeyDone)
- DefaultDataviewRelations = append(DefaultDataviewRelations, bundle.RelationKeyTag)
+ return relationLinks, viewRelations
}
-const CollectionStoreKey = "objects"
+func DefaultLastModifiedDateSort() []*model.BlockContentDataviewSort {
+ return []*model.BlockContentDataviewSort{
+ {
+ Id: bson.NewObjectId().Hex(),
+ RelationKey: bundle.RelationKeyLastModifiedDate.String(),
+ Type: model.BlockContentDataviewSort_Desc,
+ },
+ }
+}
+
+func defaultNameSort() []*model.BlockContentDataviewSort {
+ return []*model.BlockContentDataviewSort{
+ {
+ Id: bson.NewObjectId().Hex(),
+ RelationKey: bundle.RelationKeyName.String(),
+ Type: model.BlockContentDataviewSort_Asc,
+ },
+ }
+}
diff --git a/core/block/editor/template/collection_test.go b/core/block/editor/template/collection_test.go
new file mode 100644
index 000000000..8d267c0fd
--- /dev/null
+++ b/core/block/editor/template/collection_test.go
@@ -0,0 +1,99 @@
+package template
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "golang.org/x/exp/slices"
+
+ "github.com/anyproto/anytype-heart/core/domain"
+ "github.com/anyproto/anytype-heart/pkg/lib/bundle"
+ "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
+)
+
+func assertDataviewBlock(
+ t *testing.T,
+ block *model.BlockContentOfDataview,
+ isCollection bool,
+ expectedRelations []domain.RelationKey,
+ isVisible func(key domain.RelationKey) bool,
+) {
+ assert.Equal(t, isCollection, block.Dataview.IsCollection)
+ assert.Len(t, block.Dataview.RelationLinks, len(expectedRelations))
+ for i, link := range block.Dataview.RelationLinks {
+ assert.Equal(t, expectedRelations[i], domain.RelationKey(link.Key))
+ }
+ assert.Len(t, block.Dataview.Views, 1)
+ assert.Len(t, block.Dataview.Views[0].Relations, len(expectedRelations))
+ for i, relation := range block.Dataview.Views[0].Relations {
+ assert.Equal(t, expectedRelations[i], domain.RelationKey(relation.Key))
+ assert.Equal(t, isVisible(domain.RelationKey(relation.Key)), relation.IsVisible)
+ }
+}
+
+func TestMakeDataviewContent(t *testing.T) {
+ for _, tc := range []struct {
+ name string
+ isCollection bool
+ ot *model.ObjectType
+ relLinks []*model.RelationLink
+ expectedRelations []domain.RelationKey
+ isVisible func(key domain.RelationKey) bool
+ }{
+ {
+ name: "collection",
+ isCollection: true,
+ expectedRelations: defaultCollectionRelations,
+ isVisible: func(key domain.RelationKey) bool {
+ return slices.Contains(defaultVisibleRelations, key)
+ },
+ },
+ {
+ name: "set by object type",
+ ot: &model.ObjectType{
+ RelationLinks: []*model.RelationLink{
+ {Key: bundle.RelationKeyTasks.String()},
+ {Key: bundle.RelationKeyLinkedProjects.String()},
+ {Key: bundle.RelationKeyAssignee.String()},
+ },
+ },
+ expectedRelations: append(defaultDataviewRelations, []domain.RelationKey{
+ bundle.RelationKeyTasks,
+ bundle.RelationKeyLinkedProjects,
+ bundle.RelationKeyAssignee,
+ }...),
+ isVisible: func(key domain.RelationKey) bool {
+ return slices.Contains(defaultVisibleRelations, key)
+ },
+ },
+ {
+ name: "set by relation",
+ relLinks: []*model.RelationLink{
+ {Key: bundle.RelationKeyAddedDate.String()},
+ {Key: bundle.RelationKeyLastUsedDate.String()},
+ },
+ expectedRelations: append(defaultCollectionRelations, []domain.RelationKey{
+ bundle.RelationKeyAddedDate,
+ bundle.RelationKeyLastUsedDate,
+ }...),
+ isVisible: func(key domain.RelationKey) bool {
+ return slices.Contains(append(defaultVisibleRelations, []domain.RelationKey{
+ bundle.RelationKeyAddedDate,
+ bundle.RelationKeyLastUsedDate,
+ }...), key)
+ },
+ },
+ {
+ name: "empty",
+ expectedRelations: defaultDataviewRelations,
+ isVisible: func(key domain.RelationKey) bool {
+ return slices.Contains(defaultVisibleRelations, key)
+ },
+ },
+ } {
+ t.Run(tc.name, func(t *testing.T) {
+ block := MakeDataviewContent(tc.isCollection, tc.ot, tc.relLinks)
+ assertDataviewBlock(t, block, tc.isCollection, tc.expectedRelations, tc.isVisible)
+ })
+ }
+}
diff --git a/core/block/import/common/objectcreator/mock_blockservice/mock_BlockService.go b/core/block/import/common/objectcreator/mock_blockservice/mock_BlockService.go
deleted file mode 100644
index d3cdff829..000000000
--- a/core/block/import/common/objectcreator/mock_blockservice/mock_BlockService.go
+++ /dev/null
@@ -1,297 +0,0 @@
-// Code generated by mockery. DO NOT EDIT.
-
-package mock_blockservice
-
-import (
- context "context"
-
- domain "github.com/anyproto/anytype-heart/core/domain"
- mock "github.com/stretchr/testify/mock"
-
- pb "github.com/anyproto/anytype-heart/pb"
-
- smartblock "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
-)
-
-// MockBlockService is an autogenerated mock type for the BlockService type
-type MockBlockService struct {
- mock.Mock
-}
-
-type MockBlockService_Expecter struct {
- mock *mock.Mock
-}
-
-func (_m *MockBlockService) EXPECT() *MockBlockService_Expecter {
- return &MockBlockService_Expecter{mock: &_m.Mock}
-}
-
-// DeleteObject provides a mock function with given fields: objectId
-func (_m *MockBlockService) DeleteObject(objectId string) error {
- ret := _m.Called(objectId)
-
- if len(ret) == 0 {
- panic("no return value specified for DeleteObject")
- }
-
- var r0 error
- if rf, ok := ret.Get(0).(func(string) error); ok {
- r0 = rf(objectId)
- } else {
- r0 = ret.Error(0)
- }
-
- return r0
-}
-
-// MockBlockService_DeleteObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeleteObject'
-type MockBlockService_DeleteObject_Call struct {
- *mock.Call
-}
-
-// DeleteObject is a helper method to define mock.On call
-// - objectId string
-func (_e *MockBlockService_Expecter) DeleteObject(objectId interface{}) *MockBlockService_DeleteObject_Call {
- return &MockBlockService_DeleteObject_Call{Call: _e.mock.On("DeleteObject", objectId)}
-}
-
-func (_c *MockBlockService_DeleteObject_Call) Run(run func(objectId string)) *MockBlockService_DeleteObject_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(string))
- })
- return _c
-}
-
-func (_c *MockBlockService_DeleteObject_Call) Return(err error) *MockBlockService_DeleteObject_Call {
- _c.Call.Return(err)
- return _c
-}
-
-func (_c *MockBlockService_DeleteObject_Call) RunAndReturn(run func(string) error) *MockBlockService_DeleteObject_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// GetObject provides a mock function with given fields: ctx, objectID
-func (_m *MockBlockService) GetObject(ctx context.Context, objectID string) (smartblock.SmartBlock, error) {
- ret := _m.Called(ctx, objectID)
-
- if len(ret) == 0 {
- panic("no return value specified for GetObject")
- }
-
- var r0 smartblock.SmartBlock
- var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, string) (smartblock.SmartBlock, error)); ok {
- return rf(ctx, objectID)
- }
- if rf, ok := ret.Get(0).(func(context.Context, string) smartblock.SmartBlock); ok {
- r0 = rf(ctx, objectID)
- } else {
- if ret.Get(0) != nil {
- r0 = ret.Get(0).(smartblock.SmartBlock)
- }
- }
-
- if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
- r1 = rf(ctx, objectID)
- } else {
- r1 = ret.Error(1)
- }
-
- return r0, r1
-}
-
-// MockBlockService_GetObject_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObject'
-type MockBlockService_GetObject_Call struct {
- *mock.Call
-}
-
-// GetObject is a helper method to define mock.On call
-// - ctx context.Context
-// - objectID string
-func (_e *MockBlockService_Expecter) GetObject(ctx interface{}, objectID interface{}) *MockBlockService_GetObject_Call {
- return &MockBlockService_GetObject_Call{Call: _e.mock.On("GetObject", ctx, objectID)}
-}
-
-func (_c *MockBlockService_GetObject_Call) Run(run func(ctx context.Context, objectID string)) *MockBlockService_GetObject_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(string))
- })
- return _c
-}
-
-func (_c *MockBlockService_GetObject_Call) Return(sb smartblock.SmartBlock, err error) *MockBlockService_GetObject_Call {
- _c.Call.Return(sb, err)
- return _c
-}
-
-func (_c *MockBlockService_GetObject_Call) RunAndReturn(run func(context.Context, string) (smartblock.SmartBlock, error)) *MockBlockService_GetObject_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// GetObjectByFullID provides a mock function with given fields: ctx, id
-func (_m *MockBlockService) GetObjectByFullID(ctx context.Context, id domain.FullID) (smartblock.SmartBlock, error) {
- ret := _m.Called(ctx, id)
-
- if len(ret) == 0 {
- panic("no return value specified for GetObjectByFullID")
- }
-
- var r0 smartblock.SmartBlock
- var r1 error
- if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) (smartblock.SmartBlock, error)); ok {
- return rf(ctx, id)
- }
- if rf, ok := ret.Get(0).(func(context.Context, domain.FullID) smartblock.SmartBlock); ok {
- r0 = rf(ctx, id)
- } else {
- if ret.Get(0) != nil {
- r0 = ret.Get(0).(smartblock.SmartBlock)
- }
- }
-
- if rf, ok := ret.Get(1).(func(context.Context, domain.FullID) error); ok {
- r1 = rf(ctx, id)
- } else {
- r1 = ret.Error(1)
- }
-
- return r0, r1
-}
-
-// MockBlockService_GetObjectByFullID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetObjectByFullID'
-type MockBlockService_GetObjectByFullID_Call struct {
- *mock.Call
-}
-
-// GetObjectByFullID is a helper method to define mock.On call
-// - ctx context.Context
-// - id domain.FullID
-func (_e *MockBlockService_Expecter) GetObjectByFullID(ctx interface{}, id interface{}) *MockBlockService_GetObjectByFullID_Call {
- return &MockBlockService_GetObjectByFullID_Call{Call: _e.mock.On("GetObjectByFullID", ctx, id)}
-}
-
-func (_c *MockBlockService_GetObjectByFullID_Call) Run(run func(ctx context.Context, id domain.FullID)) *MockBlockService_GetObjectByFullID_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(context.Context), args[1].(domain.FullID))
- })
- return _c
-}
-
-func (_c *MockBlockService_GetObjectByFullID_Call) Return(sb smartblock.SmartBlock, err error) *MockBlockService_GetObjectByFullID_Call {
- _c.Call.Return(sb, err)
- return _c
-}
-
-func (_c *MockBlockService_GetObjectByFullID_Call) RunAndReturn(run func(context.Context, domain.FullID) (smartblock.SmartBlock, error)) *MockBlockService_GetObjectByFullID_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// SetPageIsArchived provides a mock function with given fields: req
-func (_m *MockBlockService) SetPageIsArchived(req pb.RpcObjectSetIsArchivedRequest) error {
- ret := _m.Called(req)
-
- if len(ret) == 0 {
- panic("no return value specified for SetPageIsArchived")
- }
-
- var r0 error
- if rf, ok := ret.Get(0).(func(pb.RpcObjectSetIsArchivedRequest) error); ok {
- r0 = rf(req)
- } else {
- r0 = ret.Error(0)
- }
-
- return r0
-}
-
-// MockBlockService_SetPageIsArchived_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetPageIsArchived'
-type MockBlockService_SetPageIsArchived_Call struct {
- *mock.Call
-}
-
-// SetPageIsArchived is a helper method to define mock.On call
-// - req pb.RpcObjectSetIsArchivedRequest
-func (_e *MockBlockService_Expecter) SetPageIsArchived(req interface{}) *MockBlockService_SetPageIsArchived_Call {
- return &MockBlockService_SetPageIsArchived_Call{Call: _e.mock.On("SetPageIsArchived", req)}
-}
-
-func (_c *MockBlockService_SetPageIsArchived_Call) Run(run func(req pb.RpcObjectSetIsArchivedRequest)) *MockBlockService_SetPageIsArchived_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(pb.RpcObjectSetIsArchivedRequest))
- })
- return _c
-}
-
-func (_c *MockBlockService_SetPageIsArchived_Call) Return(err error) *MockBlockService_SetPageIsArchived_Call {
- _c.Call.Return(err)
- return _c
-}
-
-func (_c *MockBlockService_SetPageIsArchived_Call) RunAndReturn(run func(pb.RpcObjectSetIsArchivedRequest) error) *MockBlockService_SetPageIsArchived_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// SetPageIsFavorite provides a mock function with given fields: req
-func (_m *MockBlockService) SetPageIsFavorite(req pb.RpcObjectSetIsFavoriteRequest) error {
- ret := _m.Called(req)
-
- if len(ret) == 0 {
- panic("no return value specified for SetPageIsFavorite")
- }
-
- var r0 error
- if rf, ok := ret.Get(0).(func(pb.RpcObjectSetIsFavoriteRequest) error); ok {
- r0 = rf(req)
- } else {
- r0 = ret.Error(0)
- }
-
- return r0
-}
-
-// MockBlockService_SetPageIsFavorite_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetPageIsFavorite'
-type MockBlockService_SetPageIsFavorite_Call struct {
- *mock.Call
-}
-
-// SetPageIsFavorite is a helper method to define mock.On call
-// - req pb.RpcObjectSetIsFavoriteRequest
-func (_e *MockBlockService_Expecter) SetPageIsFavorite(req interface{}) *MockBlockService_SetPageIsFavorite_Call {
- return &MockBlockService_SetPageIsFavorite_Call{Call: _e.mock.On("SetPageIsFavorite", req)}
-}
-
-func (_c *MockBlockService_SetPageIsFavorite_Call) Run(run func(req pb.RpcObjectSetIsFavoriteRequest)) *MockBlockService_SetPageIsFavorite_Call {
- _c.Call.Run(func(args mock.Arguments) {
- run(args[0].(pb.RpcObjectSetIsFavoriteRequest))
- })
- return _c
-}
-
-func (_c *MockBlockService_SetPageIsFavorite_Call) Return(err error) *MockBlockService_SetPageIsFavorite_Call {
- _c.Call.Return(err)
- return _c
-}
-
-func (_c *MockBlockService_SetPageIsFavorite_Call) RunAndReturn(run func(pb.RpcObjectSetIsFavoriteRequest) error) *MockBlockService_SetPageIsFavorite_Call {
- _c.Call.Return(run)
- return _c
-}
-
-// NewMockBlockService creates a new instance of MockBlockService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-// The first argument is typically a *testing.T value.
-func NewMockBlockService(t interface {
- mock.TestingT
- Cleanup(func())
-}) *MockBlockService {
- mock := &MockBlockService{}
- mock.Mock.Test(t)
-
- t.Cleanup(func() { mock.AssertExpectations(t) })
-
- return mock
-}
diff --git a/core/block/import/common/objectcreator/objectcreator.go b/core/block/import/common/objectcreator/objectcreator.go
index ac3c5f1f1..2b94e51ca 100644
--- a/core/block/import/common/objectcreator/objectcreator.go
+++ b/core/block/import/common/objectcreator/objectcreator.go
@@ -11,6 +11,7 @@ import (
"go.uber.org/zap"
"github.com/anyproto/anytype-heart/core/block/cache"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/block/editor/basic"
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
"github.com/anyproto/anytype-heart/core/block/editor/state"
@@ -24,7 +25,6 @@ import (
"github.com/anyproto/anytype-heart/core/block/simple"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
- "github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/addr"
@@ -44,37 +44,37 @@ type Service interface {
Create(dataObject *DataObject, sn *common.Snapshot) (*types.Struct, string, error)
}
-type BlockService interface {
- GetObject(ctx context.Context, objectID string) (sb smartblock.SmartBlock, err error)
- GetObjectByFullID(ctx context.Context, id domain.FullID) (sb smartblock.SmartBlock, err error)
- SetPageIsFavorite(req pb.RpcObjectSetIsFavoriteRequest) (err error)
- SetPageIsArchived(req pb.RpcObjectSetIsArchivedRequest) (err error)
+type ObjectDeleter interface {
+ cache.ObjectGetterComponent
DeleteObject(objectId string) (err error)
}
type ObjectCreator struct {
- service BlockService
+ detailsService detailservice.Service
spaceService space.Service
objectStore objectstore.ObjectStore
relationSyncer *syncer.FileRelationSyncer
syncFactory *syncer.Factory
objectCreator objectcreator.Service
+ objectDeleter ObjectDeleter
}
-func New(service BlockService,
+func New(detailsService detailservice.Service,
syncFactory *syncer.Factory,
objectStore objectstore.ObjectStore,
relationSyncer *syncer.FileRelationSyncer,
spaceService space.Service,
objectCreator objectcreator.Service,
+ objectDeleter ObjectDeleter,
) Service {
return &ObjectCreator{
- service: service,
+ detailsService: detailsService,
syncFactory: syncFactory,
objectStore: objectStore,
relationSyncer: relationSyncer,
spaceService: spaceService,
objectCreator: objectCreator,
+ objectDeleter: objectDeleter,
}
}
@@ -314,7 +314,7 @@ func (oc *ObjectCreator) deleteFile(hash string) {
log.With("file", hash).Errorf("failed to get inbound links for file: %s", err)
}
if len(inboundLinks) == 0 {
- err = oc.service.DeleteObject(hash)
+ err = oc.objectDeleter.DeleteObject(hash)
if err != nil {
log.With("file", hash).Errorf("failed to delete file: %s", anyerror.CleanupError(err))
}
@@ -353,7 +353,7 @@ func (oc *ObjectCreator) setSpaceDashboardID(spaceID string, st *state.State) {
log.Errorf("failed to get space: %v", err)
return
}
- err = cache.Do(oc.service, spc.DerivedIDs().Workspace, func(ws basic.CommonOperations) error {
+ err = cache.Do(oc.detailsService, spc.DerivedIDs().Workspace, func(ws basic.CommonOperations) error {
if err := ws.SetDetails(nil, details, false); err != nil {
return err
}
@@ -367,7 +367,7 @@ func (oc *ObjectCreator) setSpaceDashboardID(spaceID string, st *state.State) {
func (oc *ObjectCreator) resetState(newID string, st *state.State) *types.Struct {
var respDetails *types.Struct
- err := cache.Do(oc.service, newID, func(b smartblock.SmartBlock) error {
+ err := cache.Do(oc.detailsService, newID, func(b smartblock.SmartBlock) error {
err := history.ResetToVersion(b, st)
if err != nil {
log.With(zap.String("object id", newID)).Errorf("failed to set state %s: %s", newID, err)
@@ -392,7 +392,7 @@ func (oc *ObjectCreator) resetState(newID string, st *state.State) *types.Struct
func (oc *ObjectCreator) setFavorite(snapshot *model.SmartBlockSnapshotBase, newID string) {
isFavorite := pbtypes.GetBool(snapshot.Details, bundle.RelationKeyIsFavorite.String())
if isFavorite {
- err := oc.service.SetPageIsFavorite(pb.RpcObjectSetIsFavoriteRequest{ContextId: newID, IsFavorite: true})
+ err := oc.detailsService.SetIsFavorite(newID, true)
if err != nil {
log.With(zap.String("object id", newID)).Errorf("failed to set isFavorite when importing object: %s", err)
}
@@ -402,7 +402,7 @@ func (oc *ObjectCreator) setFavorite(snapshot *model.SmartBlockSnapshotBase, new
func (oc *ObjectCreator) setArchived(snapshot *model.SmartBlockSnapshotBase, newID string) {
isArchive := pbtypes.GetBool(snapshot.Details, bundle.RelationKeyIsArchived.String())
if isArchive {
- err := oc.service.SetPageIsArchived(pb.RpcObjectSetIsArchivedRequest{ContextId: newID, IsArchived: true})
+ err := oc.detailsService.SetIsArchived(newID, true)
if err != nil {
log.With(zap.String("object id", newID)).
Errorf("failed to set isFavorite when importing object %s: %s", newID, err)
@@ -413,7 +413,7 @@ func (oc *ObjectCreator) setArchived(snapshot *model.SmartBlockSnapshotBase, new
func (oc *ObjectCreator) syncFilesAndLinks(newIdsSet map[string]struct{}, id domain.FullID, origin objectorigin.ObjectOrigin) error {
tasks := make([]func() error, 0)
// todo: rewrite it in order not to create state with URLs inside links
- err := cache.Do(oc.service, id.ObjectID, func(b smartblock.SmartBlock) error {
+ err := cache.Do(oc.detailsService, id.ObjectID, func(b smartblock.SmartBlock) error {
st := b.NewState()
return st.Iterate(func(bl simple.Block) (isContinue bool) {
s := oc.syncFactory.GetSyncer(bl)
@@ -447,7 +447,7 @@ func (oc *ObjectCreator) syncFilesAndLinks(newIdsSet map[string]struct{}, id dom
}
func (oc *ObjectCreator) updateLinksInCollections(st *state.State, oldIDtoNew map[string]string, isNewCollection bool) {
- err := cache.Do(oc.service, st.RootId(), func(b smartblock.SmartBlock) error {
+ err := cache.Do(oc.detailsService, st.RootId(), func(b smartblock.SmartBlock) error {
originalState := b.NewState()
var existedObjects []string
if !isNewCollection {
@@ -473,7 +473,7 @@ func (oc *ObjectCreator) mergeCollections(existedObjects []string, st *state.Sta
}
func (oc *ObjectCreator) updateWidgetObject(st *state.State) (*types.Struct, string, error) {
- err := cache.DoState(oc.service, st.RootId(), func(oldState *state.State, sb smartblock.SmartBlock) error {
+ err := cache.DoState(oc.detailsService, st.RootId(), func(oldState *state.State, sb smartblock.SmartBlock) error {
blocks := st.Blocks()
blocksMap := make(map[string]*model.Block, len(blocks))
existingWidgetsTargetIDs, err := oc.getExistingWidgetsTargetIDs(oldState)
diff --git a/core/block/import/common/objectcreator/objectcreator_test.go b/core/block/import/common/objectcreator/objectcreator_test.go
index 482d7bd5a..486b66597 100644
--- a/core/block/import/common/objectcreator/objectcreator_test.go
+++ b/core/block/import/common/objectcreator/objectcreator_test.go
@@ -7,10 +7,10 @@ import (
"github.com/gogo/protobuf/types"
"github.com/stretchr/testify/assert"
+ "github.com/anyproto/anytype-heart/core/block/detailservice/mock_detailservice"
"github.com/anyproto/anytype-heart/core/block/editor/smartblock/smarttest"
"github.com/anyproto/anytype-heart/core/block/editor/state"
"github.com/anyproto/anytype-heart/core/block/import/common"
- "github.com/anyproto/anytype-heart/core/block/import/common/objectcreator/mock_blockservice"
"github.com/anyproto/anytype-heart/core/block/object/objectcreator"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
@@ -27,12 +27,12 @@ func TestObjectCreator_Create(t *testing.T) {
t.Run("participant object - don't update it", func(t *testing.T) {
// given
spaceID := "spaceId"
- blockService := mock_blockservice.NewMockBlockService(t)
+ detailsService := mock_detailservice.NewMockService(t)
mockService := mock_space.NewMockService(t)
mockSpace := mock_clientspace.NewMockSpace(t)
mockSpace.EXPECT().IsReadOnly().Return(true)
mockService.EXPECT().Get(context.Background(), spaceID).Return(mockSpace, nil)
- service := New(blockService, nil, nil, nil, mockService, objectcreator.NewCreator())
+ service := New(detailsService, nil, nil, nil, mockService, objectcreator.NewCreator(), nil)
importedSpaceId := "importedSpaceID"
identity := "identity"
@@ -73,7 +73,7 @@ func TestObjectCreator_Create(t *testing.T) {
err := testParticipant.Apply(st)
assert.Nil(t, err)
- blockService.EXPECT().GetObject(context.Background(), participantId).Return(testParticipant, nil)
+ detailsService.EXPECT().GetObject(context.Background(), participantId).Return(testParticipant, nil)
// when
create, id, err := service.Create(dataObject, sn)
diff --git a/core/block/import/importer.go b/core/block/import/importer.go
index 7fba17ee5..8a4e789bb 100644
--- a/core/block/import/importer.go
+++ b/core/block/import/importer.go
@@ -17,6 +17,7 @@ import (
"github.com/anyproto/anytype-heart/core/anytype/account"
"github.com/anyproto/anytype-heart/core/block"
"github.com/anyproto/anytype-heart/core/block/collection"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/block/import/common"
creator "github.com/anyproto/anytype-heart/core/block/import/common/objectcreator"
"github.com/anyproto/anytype-heart/core/block/import/common/objectid"
@@ -104,7 +105,8 @@ func (i *Import) Init(a *app.App) (err error) {
factory := syncer.New(syncer.NewFileSyncer(i.s, fileObjectService), syncer.NewBookmarkSyncer(i.s), syncer.NewIconSyncer(i.s, fileObjectService))
relationSyncer := syncer.NewFileRelationSyncer(i.s, fileObjectService)
objectCreator := app.MustComponent[objectcreator.Service](a)
- i.oc = creator.New(i.s, factory, store, relationSyncer, spaceService, objectCreator)
+ detailsService := app.MustComponent[detailservice.Service](a)
+ i.oc = creator.New(detailsService, factory, store, relationSyncer, spaceService, objectCreator, i.s)
i.fileSync = app.MustComponent[filesync.FileSync](a)
i.notificationService = app.MustComponent[notifications.Notifications](a)
i.eventSender = app.MustComponent[event.Sender](a)
diff --git a/core/block/import/notion/api/block/link.go b/core/block/import/notion/api/block/link.go
index da399fca4..366223842 100644
--- a/core/block/import/notion/api/block/link.go
+++ b/core/block/import/notion/api/block/link.go
@@ -201,7 +201,7 @@ func (c *ChildDatabase) GetBlock(importContext *api.NotionImportContext, pageID,
id := bson.NewObjectId().Hex()
if err != nil || targetBlockID == "" {
- block := template.MakeCollectionDataviewContent()
+ block := template.MakeDataviewContent(true, nil, nil)
block.Dataview.TargetObjectId = targetBlockID
return &model.Block{
Id: id,
diff --git a/core/block/relation.go b/core/block/relation.go
deleted file mode 100644
index c541e039b..000000000
--- a/core/block/relation.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package block
-
-import (
- "context"
- "fmt"
- "strings"
-
- "golang.org/x/exp/slices"
-
- "github.com/anyproto/anytype-heart/core/block/cache"
- "github.com/anyproto/anytype-heart/core/block/editor/smartblock"
- "github.com/anyproto/anytype-heart/core/domain"
- "github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/util/pbtypes"
- "github.com/anyproto/anytype-heart/util/slice"
-)
-
-var ErrBundledTypeIsReadonly = fmt.Errorf("can't modify bundled object type")
-
-func (s *Service) ObjectTypeRelationAdd(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error {
- if strings.HasPrefix(objectTypeId, bundle.TypePrefix) {
- return ErrBundledTypeIsReadonly
- }
- return cache.Do(s, objectTypeId, func(b smartblock.SmartBlock) error {
- st := b.NewState()
- list := pbtypes.GetStringList(st.Details(), bundle.RelationKeyRecommendedRelations.String())
- for _, relKey := range relationKeys {
- relId, err := b.Space().GetRelationIdByKey(ctx, relKey)
- if err != nil {
- return err
- }
- if !slices.Contains(list, relId) {
- list = append(list, relId)
- }
- }
- st.SetDetailAndBundledRelation(bundle.RelationKeyRecommendedRelations, pbtypes.StringList(list))
- return b.Apply(st)
- })
-}
-
-func (s *Service) ObjectTypeRemoveRelations(ctx context.Context, objectTypeId string, relationKeys []domain.RelationKey) error {
- if strings.HasPrefix(objectTypeId, bundle.TypePrefix) {
- return ErrBundledTypeIsReadonly
- }
- return cache.Do(s, objectTypeId, func(b smartblock.SmartBlock) error {
- st := b.NewState()
- list := pbtypes.GetStringList(st.Details(), bundle.RelationKeyRecommendedRelations.String())
- for _, relKey := range relationKeys {
- relId, err := b.Space().GetRelationIdByKey(ctx, relKey)
- if err != nil {
- return fmt.Errorf("get relation id by key %s: %w", relKey, err)
- }
- list = slice.RemoveMut(list, relId)
- }
- st.SetDetailAndBundledRelation(bundle.RelationKeyRecommendedRelations, pbtypes.StringList(list))
- return b.Apply(st)
- })
-}
diff --git a/core/block/service.go b/core/block/service.go
index 27dd97ff9..7d4bd522d 100644
--- a/core/block/service.go
+++ b/core/block/service.go
@@ -17,7 +17,7 @@ import (
bookmarksvc "github.com/anyproto/anytype-heart/core/block/bookmark"
"github.com/anyproto/anytype-heart/core/block/cache"
- "github.com/anyproto/anytype-heart/core/block/editor"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/block/editor/basic"
"github.com/anyproto/anytype-heart/core/block/editor/collection"
"github.com/anyproto/anytype-heart/core/block/editor/file"
@@ -28,7 +28,6 @@ import (
"github.com/anyproto/anytype-heart/core/block/object/objectcreator"
"github.com/anyproto/anytype-heart/core/block/process"
"github.com/anyproto/anytype-heart/core/block/restriction"
- "github.com/anyproto/anytype-heart/core/block/simple"
"github.com/anyproto/anytype-heart/core/block/simple/bookmark"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
@@ -41,7 +40,6 @@ import (
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
"github.com/anyproto/anytype-heart/pkg/lib/core"
- coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
"github.com/anyproto/anytype-heart/pkg/lib/database"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
"github.com/anyproto/anytype-heart/pkg/lib/logging"
@@ -58,14 +56,9 @@ import (
_ "github.com/anyproto/anytype-heart/core/block/simple/widget"
)
-const (
- CName = "block-service"
-)
+const CName = "block-service"
-var (
- ErrUnexpectedBlockType = errors.New("unexpected block type")
- ErrUnknownObjectType = fmt.Errorf("unknown object type")
-)
+var ErrUnknownObjectType = fmt.Errorf("unknown object type")
var log = logging.Logger("anytype-mw-service")
@@ -97,7 +90,6 @@ func New() *Service {
type Service struct {
eventSender event.Sender
process process.Service
- app *app.App
objectStore objectstore.ObjectStore
restriction restriction.Service
bookmark bookmarksvc.Service
@@ -108,6 +100,7 @@ type Service struct {
tempDirProvider core.TempDirProvider
builtinObjectService builtinObjects
fileObjectService fileobject.Service
+ detailsService detailservice.Service
fileService files.Service
fileUploaderService fileuploader.Service
@@ -153,7 +146,7 @@ func (s *Service) Init(a *app.App) (err error) {
s.tempDirProvider = app.MustComponent[core.TempDirProvider](a)
s.builtinObjectService = app.MustComponent[builtinObjects](a)
- s.app = a
+ s.detailsService = app.MustComponent[detailservice.Service](a)
return
}
@@ -327,235 +320,10 @@ func (s *Service) GetAllWorkspaces(req *pb.RpcWorkspaceGetAllRequest) ([]string,
panic("should be removed")
}
-func (s *Service) SetSpaceInfo(req *pb.RpcWorkspaceSetInfoRequest) error {
- ctx := context.TODO()
- spc, err := s.spaceService.Get(ctx, req.SpaceId)
- if err != nil {
- return err
- }
- workspaceId := spc.DerivedIDs().Workspace
-
- setDetails := make([]*model.Detail, 0, len(req.Details.GetFields()))
- for k, v := range req.Details.GetFields() {
- setDetails = append(setDetails, &model.Detail{
- Key: k,
- Value: v,
- })
- }
- return s.SetDetails(nil, workspaceId, setDetails)
-}
-
func (s *Service) ObjectShareByLink(req *pb.RpcObjectShareByLinkRequest) (link string, err error) {
panic("should be removed")
}
-func (s *Service) SetPagesIsArchived(ctx session.Context, req pb.RpcObjectListSetIsArchivedRequest) error {
- objectIDsPerSpace, err := s.partitionObjectIDsBySpaceID(req.ObjectIds)
- if err != nil {
- return fmt.Errorf("partition object ids by spaces: %w", err)
- }
-
- var (
- multiErr multierror.Error
- anySucceed bool
- )
- for spaceID, objectIDs := range objectIDsPerSpace {
- err = s.setIsArchivedForObjects(spaceID, objectIDs, req.IsArchived)
- if err != nil {
- log.With("spaceID", spaceID, "objectIDs", objectIDs).Errorf("failed to set isArchived=%t objects in space: %s", req.IsArchived, err)
- multiErr.Errors = append(multiErr.Errors, err)
- } else {
- anySucceed = true
- }
- }
- if anySucceed {
- return nil
- }
- return multiErr.ErrorOrNil()
-}
-
-func (s *Service) setIsArchivedForObjects(spaceID string, objectIDs []string, isArchived bool) error {
- spc, err := s.spaceService.Get(context.Background(), spaceID)
- if err != nil {
- return fmt.Errorf("get space: %w", err)
- }
- return cache.Do(s, spc.DerivedIDs().Archive, func(b smartblock.SmartBlock) error {
- archive, ok := b.(collection.Collection)
- if !ok {
- return fmt.Errorf("unexpected archive block type: %T", b)
- }
-
- var multiErr multierror.Error
- var anySucceed bool
- ids, err := s.objectStore.HasIDs(objectIDs...)
- if err != nil {
- return err
- }
- for _, id := range ids {
- var err error
- if restrErr := s.checkArchivedRestriction(isArchived, spaceID, id); restrErr != nil {
- err = restrErr
- } else {
- if isArchived {
- err = archive.AddObject(id)
- } else {
- err = archive.RemoveObject(id)
- }
- }
- if err != nil {
- log.With("objectID", id).Errorf("failed to set isArchived=%t for object: %s", isArchived, err)
- multiErr.Errors = append(multiErr.Errors, err)
- continue
- }
- anySucceed = true
- }
-
- if err := multiErr.ErrorOrNil(); err != nil {
- log.Warnf("failed to archive: %s", err)
- }
- if anySucceed {
- return nil
- }
- return multiErr.ErrorOrNil()
- })
-}
-
-func (s *Service) partitionObjectIDsBySpaceID(objectIDs []string) (map[string][]string, error) {
- res := map[string][]string{}
- for _, objectID := range objectIDs {
- spaceID, err := s.resolver.ResolveSpaceID(objectID)
- if err != nil {
- return nil, fmt.Errorf("resolve spaceID: %w", err)
- }
- res[spaceID] = append(res[spaceID], objectID)
- }
- return res, nil
-}
-
-func (s *Service) SetPagesIsFavorite(req pb.RpcObjectListSetIsFavoriteRequest) error {
- ids, err := s.objectStore.HasIDs(req.ObjectIds...)
- if err != nil {
- return err
- }
- var (
- anySucceed bool
- resultError error
- )
- for _, id := range ids {
- err := s.SetPageIsFavorite(pb.RpcObjectSetIsFavoriteRequest{
- ContextId: id,
- IsFavorite: req.IsFavorite,
- })
- if err != nil {
- log.Errorf("failed to favorite object %s: %s", id, err)
- resultError = errors.Join(resultError, err)
- } else {
- anySucceed = true
- }
- }
- if resultError != nil {
- log.Warnf("failed to set objects as favorite: %s", resultError)
- }
- if anySucceed {
- return nil
- }
- return resultError
-}
-
-func (s *Service) objectLinksCollectionModify(collectionId string, objectId string, value bool) error {
- return cache.Do(s, collectionId, func(b smartblock.SmartBlock) error {
- coll, ok := b.(collection.Collection)
- if !ok {
- return fmt.Errorf("unsupported sb block type: %T", b)
- }
- if value {
- return coll.AddObject(objectId)
- } else {
- return coll.RemoveObject(objectId)
- }
- })
-}
-
-func (s *Service) SetPageIsFavorite(req pb.RpcObjectSetIsFavoriteRequest) (err error) {
- spaceID, err := s.resolver.ResolveSpaceID(req.ContextId)
- if err != nil {
- return fmt.Errorf("resolve spaceID: %w", err)
- }
- spc, err := s.spaceService.Get(context.Background(), spaceID)
- if err != nil {
- return fmt.Errorf("get space: %w", err)
- }
- return s.objectLinksCollectionModify(spc.DerivedIDs().Home, req.ContextId, req.IsFavorite)
-}
-
-func (s *Service) SetPageIsArchived(req pb.RpcObjectSetIsArchivedRequest) (err error) {
- spaceID, err := s.resolver.ResolveSpaceID(req.ContextId)
- if err != nil {
- return fmt.Errorf("resolve spaceID: %w", err)
- }
- spc, err := s.spaceService.Get(context.Background(), spaceID)
- if err != nil {
- return fmt.Errorf("get space: %w", err)
- }
- if err := s.checkArchivedRestriction(req.IsArchived, spaceID, req.ContextId); err != nil {
- return err
- }
- return s.objectLinksCollectionModify(spc.DerivedIDs().Archive, req.ContextId, req.IsArchived)
-}
-
-func (s *Service) SetSource(ctx session.Context, req pb.RpcObjectSetSourceRequest) (err error) {
- return cache.Do(s, req.ContextId, func(sb smartblock.SmartBlock) error {
- st := sb.NewStateCtx(ctx)
- // nolint:errcheck
- _ = st.Iterate(func(b simple.Block) (isContinue bool) {
- if dv := b.Model().GetDataview(); dv != nil {
- for _, view := range dv.Views {
- view.DefaultTemplateId = ""
- view.DefaultObjectTypeId = ""
- }
- st.Set(b)
- return false
- }
- return true
- })
- st.SetDetailAndBundledRelation(bundle.RelationKeySetOf, pbtypes.StringList(req.Source))
-
- flags := internalflag.NewFromState(st)
- // set with source is no longer empty
- flags.Remove(model.InternalFlag_editorDeleteEmpty)
- flags.AddToState(st)
-
- return sb.Apply(st, smartblock.NoRestrictions, smartblock.KeepInternalFlags)
- })
-}
-
-func (s *Service) SetWorkspaceDashboardId(ctx session.Context, workspaceId string, id string) (setId string, err error) {
- err = cache.Do(s, workspaceId, func(ws *editor.Workspaces) error {
- if ws.Type() != coresb.SmartBlockTypeWorkspace {
- return ErrUnexpectedBlockType
- }
- if err = ws.SetDetails(ctx, []*model.Detail{
- {
- Key: bundle.RelationKeySpaceDashboardId.String(),
- Value: pbtypes.String(id),
- },
- }, false); err != nil {
- return err
- }
- return nil
- })
- return id, err
-}
-
-func (s *Service) checkArchivedRestriction(isArchived bool, spaceID string, objectId string) error {
- if !isArchived {
- return nil
- }
- return cache.Do(s, objectId, func(sb smartblock.SmartBlock) error {
- return s.restriction.CheckRestrictions(sb, model.Restrictions_Delete)
- })
-}
-
func (s *Service) DeleteArchivedObjects(objectIDs []string) error {
var (
resultError error
@@ -740,8 +508,7 @@ func (s *Service) ObjectToBookmark(ctx context.Context, id string, url string) (
return
}
- oStore := s.app.MustComponent(objectstore.CName).(objectstore.ObjectStore)
- res, err := oStore.GetWithLinksInfoByID(spaceID, id)
+ res, err := s.objectStore.GetWithLinksInfoByID(spaceID, id)
if err != nil {
return
}
diff --git a/core/block_dataview.go b/core/block_dataview.go
index 49c533a96..05f4922eb 100644
--- a/core/block_dataview.go
+++ b/core/block_dataview.go
@@ -4,6 +4,7 @@ import (
"context"
"github.com/anyproto/anytype-heart/core/block"
+ "github.com/anyproto/anytype-heart/core/block/editor/template"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
)
@@ -588,3 +589,23 @@ func (mw *Middleware) BlockDataviewViewRelationSort(cctx context.Context, req *p
return resp(err)
}
+
+func (mw *Middleware) ObjectSetSource(cctx context.Context, req *pb.RpcObjectSetSourceRequest) *pb.RpcObjectSetSourceResponse {
+ ctx := mw.newContext(cctx)
+ response := func(code pb.RpcObjectSetSourceResponseErrorCode, err error) *pb.RpcObjectSetSourceResponse {
+ m := &pb.RpcObjectSetSourceResponse{Error: &pb.RpcObjectSetSourceResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ } else {
+ m.Event = mw.getResponseEvent(ctx)
+ }
+ return m
+ }
+ err := mw.doBlockService(func(bs *block.Service) (err error) {
+ return bs.SetDataviewSource(ctx, req.ContextId, template.DataviewBlockId, req.Source)
+ })
+ if err != nil {
+ return response(pb.RpcObjectSetSourceResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectSetSourceResponseError_NULL, nil)
+}
diff --git a/core/details.go b/core/details.go
new file mode 100644
index 000000000..f158149f8
--- /dev/null
+++ b/core/details.go
@@ -0,0 +1,168 @@
+package core
+
+import (
+ "context"
+
+ "github.com/gogo/protobuf/types"
+
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
+ "github.com/anyproto/anytype-heart/pb"
+ "github.com/anyproto/anytype-heart/util/internalflag"
+ "github.com/anyproto/anytype-heart/util/pbtypes"
+)
+
+func (mw *Middleware) ObjectSetDetails(cctx context.Context, req *pb.RpcObjectSetDetailsRequest) *pb.RpcObjectSetDetailsResponse {
+ ctx := mw.newContext(cctx)
+ response := func(code pb.RpcObjectSetDetailsResponseErrorCode, err error) *pb.RpcObjectSetDetailsResponse {
+ m := &pb.RpcObjectSetDetailsResponse{Error: &pb.RpcObjectSetDetailsResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ } else {
+ m.Event = mw.getResponseEvent(ctx)
+ }
+ return m
+ }
+ err := getService[detailservice.Service](mw).SetDetailsAndUpdateLastUsed(ctx, req.ContextId, req.GetDetails())
+ if err != nil {
+ return response(pb.RpcObjectSetDetailsResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectSetDetailsResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectListSetDetails(cctx context.Context, req *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse {
+ ctx := mw.newContext(cctx)
+ response := func(code pb.RpcObjectListSetDetailsResponseErrorCode, err error) *pb.RpcObjectListSetDetailsResponse {
+ m := &pb.RpcObjectListSetDetailsResponse{Error: &pb.RpcObjectListSetDetailsResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ } else {
+ m.Event = mw.getResponseEvent(ctx)
+ }
+ return m
+ }
+
+ err := getService[detailservice.Service](mw).SetDetailsList(ctx, req.ObjectIds, req.Details)
+ if err != nil {
+ return response(pb.RpcObjectListSetDetailsResponseError_UNKNOWN_ERROR, err)
+ }
+
+ return response(pb.RpcObjectListSetDetailsResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectSetInternalFlags(cctx context.Context, req *pb.RpcObjectSetInternalFlagsRequest) *pb.RpcObjectSetInternalFlagsResponse {
+ ctx := mw.newContext(cctx)
+ response := func(code pb.RpcObjectSetInternalFlagsResponseErrorCode, err error) *pb.RpcObjectSetInternalFlagsResponse {
+ m := &pb.RpcObjectSetInternalFlagsResponse{Error: &pb.RpcObjectSetInternalFlagsResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ } else {
+ m.Event = mw.getResponseEvent(ctx)
+ }
+ return m
+ }
+ ds := getService[detailservice.Service](mw)
+ err := ds.ModifyDetails(req.ContextId, func(current *types.Struct) (*types.Struct, error) {
+ d := pbtypes.CopyStruct(current, false)
+ return internalflag.PutToDetails(d, req.InternalFlags), nil
+ })
+ if err != nil {
+ return response(pb.RpcObjectSetInternalFlagsResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectSetInternalFlagsResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectListModifyDetailValues(_ context.Context, req *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse {
+ response := func(code pb.RpcObjectListModifyDetailValuesResponseErrorCode, err error) *pb.RpcObjectListModifyDetailValuesResponse {
+ m := &pb.RpcObjectListModifyDetailValuesResponse{Error: &pb.RpcObjectListModifyDetailValuesResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ }
+ return m
+ }
+ err := getService[detailservice.Service](mw).ModifyDetailsList(req)
+ if err != nil {
+ return response(pb.RpcObjectListModifyDetailValuesResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectListModifyDetailValuesResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectWorkspaceSetDashboard(cctx context.Context, req *pb.RpcObjectWorkspaceSetDashboardRequest) *pb.RpcObjectWorkspaceSetDashboardResponse {
+ ctx := mw.newContext(cctx)
+ response := func(setId string, err error) *pb.RpcObjectWorkspaceSetDashboardResponse {
+ resp := &pb.RpcObjectWorkspaceSetDashboardResponse{
+ ObjectId: setId,
+ Error: &pb.RpcObjectWorkspaceSetDashboardResponseError{
+ Code: pb.RpcObjectWorkspaceSetDashboardResponseError_NULL,
+ },
+ }
+ if err != nil {
+ resp.Error.Code = pb.RpcObjectWorkspaceSetDashboardResponseError_UNKNOWN_ERROR
+ resp.Error.Description = getErrorDescription(err)
+ } else {
+ resp.Event = mw.getResponseEvent(ctx)
+ }
+ return resp
+ }
+ setId, err := getService[detailservice.Service](mw).SetWorkspaceDashboardId(ctx, req.ContextId, req.ObjectId)
+ return response(setId, err)
+}
+
+func (mw *Middleware) ObjectSetIsFavorite(_ context.Context, req *pb.RpcObjectSetIsFavoriteRequest) *pb.RpcObjectSetIsFavoriteResponse {
+ response := func(code pb.RpcObjectSetIsFavoriteResponseErrorCode, err error) *pb.RpcObjectSetIsFavoriteResponse {
+ m := &pb.RpcObjectSetIsFavoriteResponse{Error: &pb.RpcObjectSetIsFavoriteResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ }
+ return m
+ }
+ err := getService[detailservice.Service](mw).SetIsFavorite(req.ContextId, req.IsFavorite)
+ if err != nil {
+ return response(pb.RpcObjectSetIsFavoriteResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectSetIsFavoriteResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectSetIsArchived(_ context.Context, req *pb.RpcObjectSetIsArchivedRequest) *pb.RpcObjectSetIsArchivedResponse {
+ response := func(code pb.RpcObjectSetIsArchivedResponseErrorCode, err error) *pb.RpcObjectSetIsArchivedResponse {
+ m := &pb.RpcObjectSetIsArchivedResponse{Error: &pb.RpcObjectSetIsArchivedResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ }
+ return m
+ }
+ err := getService[detailservice.Service](mw).SetIsArchived(req.ContextId, req.IsArchived)
+ if err != nil {
+ return response(pb.RpcObjectSetIsArchivedResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectSetIsArchivedResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectListSetIsArchived(_ context.Context, req *pb.RpcObjectListSetIsArchivedRequest) *pb.RpcObjectListSetIsArchivedResponse {
+ response := func(code pb.RpcObjectListSetIsArchivedResponseErrorCode, err error) *pb.RpcObjectListSetIsArchivedResponse {
+ m := &pb.RpcObjectListSetIsArchivedResponse{Error: &pb.RpcObjectListSetIsArchivedResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ }
+ return m
+ }
+ err := getService[detailservice.Service](mw).SetListIsArchived(req.ObjectIds, req.IsArchived)
+ if err != nil {
+ return response(pb.RpcObjectListSetIsArchivedResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectListSetIsArchivedResponseError_NULL, nil)
+}
+
+func (mw *Middleware) ObjectListSetIsFavorite(_ context.Context, req *pb.RpcObjectListSetIsFavoriteRequest) *pb.RpcObjectListSetIsFavoriteResponse {
+ response := func(code pb.RpcObjectListSetIsFavoriteResponseErrorCode, err error) *pb.RpcObjectListSetIsFavoriteResponse {
+ m := &pb.RpcObjectListSetIsFavoriteResponse{Error: &pb.RpcObjectListSetIsFavoriteResponseError{Code: code}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ }
+ return m
+ }
+ err := getService[detailservice.Service](mw).SetListIsFavorite(req.ObjectIds, req.IsFavorite)
+ if err != nil {
+ return response(pb.RpcObjectListSetIsFavoriteResponseError_UNKNOWN_ERROR, err)
+ }
+ return response(pb.RpcObjectListSetIsFavoriteResponseError_NULL, nil)
+}
diff --git a/core/files/fileobject/service.go b/core/files/fileobject/service.go
index 978986a22..9e82dc0b0 100644
--- a/core/files/fileobject/service.go
+++ b/core/files/fileobject/service.go
@@ -24,7 +24,6 @@ import (
"github.com/anyproto/anytype-heart/core/files"
"github.com/anyproto/anytype-heart/core/files/fileoffloader"
"github.com/anyproto/anytype-heart/core/filestorage/filesync"
- "github.com/anyproto/anytype-heart/core/session"
"github.com/anyproto/anytype-heart/core/syncstatus/filesyncstatus"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
@@ -166,7 +165,7 @@ func (s *service) Run(_ context.Context) error {
}
type objectArchiver interface {
- SetPagesIsArchived(ctx session.Context, req pb.RpcObjectListSetIsArchivedRequest) error
+ SetListIsArchived(objectIds []string, isArchived bool) error
}
func (s *service) deleteMigratedFilesInNonPersonalSpaces(ctx context.Context) error {
@@ -196,11 +195,7 @@ func (s *service) deleteMigratedFilesInNonPersonalSpaces(ctx context.Context) er
return err
}
if len(objectIds) > 0 {
- err = s.objectArchiver.SetPagesIsArchived(nil, pb.RpcObjectListSetIsArchivedRequest{
- ObjectIds: objectIds,
- IsArchived: true,
- })
- if err != nil {
+ if err = s.objectArchiver.SetListIsArchived(objectIds, true); err != nil {
return err
}
}
diff --git a/core/files/fileobject/service_test.go b/core/files/fileobject/service_test.go
index 8d22ca751..c8dc3350b 100644
--- a/core/files/fileobject/service_test.go
+++ b/core/files/fileobject/service_test.go
@@ -29,7 +29,6 @@ import (
"github.com/anyproto/anytype-heart/core/filestorage"
"github.com/anyproto/anytype-heart/core/filestorage/filesync"
"github.com/anyproto/anytype-heart/core/filestorage/rpcstore"
- "github.com/anyproto/anytype-heart/core/session"
wallet2 "github.com/anyproto/anytype-heart/core/wallet"
"github.com/anyproto/anytype-heart/core/wallet/mock_wallet"
"github.com/anyproto/anytype-heart/pb"
@@ -71,7 +70,7 @@ func (c *dummyConfig) Name() string {
type dummyObjectArchiver struct{}
-func (a *dummyObjectArchiver) SetPagesIsArchived(ctx session.Context, req pb.RpcObjectListSetIsArchivedRequest) error {
+func (a *dummyObjectArchiver) SetListIsArchived(_ []string, _ bool) error {
return nil
}
diff --git a/core/object.go b/core/object.go
index 3c85b5eb3..5f408e34c 100644
--- a/core/object.go
+++ b/core/object.go
@@ -28,30 +28,9 @@ import (
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
"github.com/anyproto/anytype-heart/space"
- "github.com/anyproto/anytype-heart/util/internalflag"
"github.com/anyproto/anytype-heart/util/pbtypes"
)
-func (mw *Middleware) ObjectSetDetails(cctx context.Context, req *pb.RpcObjectSetDetailsRequest) *pb.RpcObjectSetDetailsResponse {
- ctx := mw.newContext(cctx)
- response := func(code pb.RpcObjectSetDetailsResponseErrorCode, err error) *pb.RpcObjectSetDetailsResponse {
- m := &pb.RpcObjectSetDetailsResponse{Error: &pb.RpcObjectSetDetailsResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- } else {
- m.Event = mw.getResponseEvent(ctx)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetDetailsAndUpdateLastUsed(ctx, req.ContextId, req.GetDetails())
- })
- if err != nil {
- return response(pb.RpcObjectSetDetailsResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectSetDetailsResponseError_NULL, nil)
-}
-
func (mw *Middleware) ObjectDuplicate(cctx context.Context, req *pb.RpcObjectDuplicateRequest) *pb.RpcObjectDuplicateResponse {
response := func(templateId string, err error) *pb.RpcObjectDuplicateResponse {
m := &pb.RpcObjectDuplicateResponse{
@@ -621,44 +600,6 @@ func (mw *Middleware) ObjectListSetObjectType(cctx context.Context, req *pb.RpcO
return response(pb.RpcObjectListSetObjectTypeResponseError_NULL, nil)
}
-func (mw *Middleware) ObjectListSetDetails(cctx context.Context, req *pb.RpcObjectListSetDetailsRequest) *pb.RpcObjectListSetDetailsResponse {
- ctx := mw.newContext(cctx)
- response := func(code pb.RpcObjectListSetDetailsResponseErrorCode, err error) *pb.RpcObjectListSetDetailsResponse {
- m := &pb.RpcObjectListSetDetailsResponse{Error: &pb.RpcObjectListSetDetailsResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- } else {
- m.Event = mw.getResponseEvent(ctx)
- }
- return m
- }
-
- if err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetDetailsList(ctx, req.ObjectIds, req.Details)
- }); err != nil {
- return response(pb.RpcObjectListSetDetailsResponseError_UNKNOWN_ERROR, err)
- }
-
- return response(pb.RpcObjectListSetDetailsResponseError_NULL, nil)
-}
-
-func (mw *Middleware) ObjectListModifyDetailValues(_ context.Context, req *pb.RpcObjectListModifyDetailValuesRequest) *pb.RpcObjectListModifyDetailValuesResponse {
- response := func(code pb.RpcObjectListModifyDetailValuesResponseErrorCode, err error) *pb.RpcObjectListModifyDetailValuesResponse {
- m := &pb.RpcObjectListModifyDetailValuesResponse{Error: &pb.RpcObjectListModifyDetailValuesResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.ModifyDetailsList(req)
- })
- if err != nil {
- return response(pb.RpcObjectListModifyDetailValuesResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectListModifyDetailValuesResponseError_NULL, nil)
-}
-
func (mw *Middleware) ObjectSetLayout(cctx context.Context, req *pb.RpcObjectSetLayoutRequest) *pb.RpcObjectSetLayoutResponse {
ctx := mw.newContext(cctx)
response := func(code pb.RpcObjectSetLayoutResponseErrorCode, err error) *pb.RpcObjectSetLayoutResponse {
@@ -679,94 +620,6 @@ func (mw *Middleware) ObjectSetLayout(cctx context.Context, req *pb.RpcObjectSet
return response(pb.RpcObjectSetLayoutResponseError_NULL, nil)
}
-func (mw *Middleware) ObjectSetIsArchived(cctx context.Context, req *pb.RpcObjectSetIsArchivedRequest) *pb.RpcObjectSetIsArchivedResponse {
- response := func(code pb.RpcObjectSetIsArchivedResponseErrorCode, err error) *pb.RpcObjectSetIsArchivedResponse {
- m := &pb.RpcObjectSetIsArchivedResponse{Error: &pb.RpcObjectSetIsArchivedResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetPageIsArchived(*req)
- })
- if err != nil {
- return response(pb.RpcObjectSetIsArchivedResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectSetIsArchivedResponseError_NULL, nil)
-}
-
-func (mw *Middleware) ObjectSetSource(cctx context.Context,
- req *pb.RpcObjectSetSourceRequest) *pb.RpcObjectSetSourceResponse {
- ctx := mw.newContext(cctx)
- response := func(code pb.RpcObjectSetSourceResponseErrorCode, err error) *pb.RpcObjectSetSourceResponse {
- m := &pb.RpcObjectSetSourceResponse{Error: &pb.RpcObjectSetSourceResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- } else {
- m.Event = mw.getResponseEvent(ctx)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetSource(ctx, *req)
- })
- if err != nil {
- return response(pb.RpcObjectSetSourceResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectSetSourceResponseError_NULL, nil)
-}
-
-func (mw *Middleware) ObjectWorkspaceSetDashboard(cctx context.Context, req *pb.RpcObjectWorkspaceSetDashboardRequest) *pb.RpcObjectWorkspaceSetDashboardResponse {
- ctx := mw.newContext(cctx)
- response := func(setId string, err error) *pb.RpcObjectWorkspaceSetDashboardResponse {
- resp := &pb.RpcObjectWorkspaceSetDashboardResponse{
- ObjectId: setId,
- Error: &pb.RpcObjectWorkspaceSetDashboardResponseError{
- Code: pb.RpcObjectWorkspaceSetDashboardResponseError_NULL,
- },
- }
- if err != nil {
- resp.Error.Code = pb.RpcObjectWorkspaceSetDashboardResponseError_UNKNOWN_ERROR
- resp.Error.Description = getErrorDescription(err)
- } else {
- resp.Event = mw.getResponseEvent(ctx)
- }
- return resp
- }
- var (
- setId string
- err error
- )
- err = mw.doBlockService(func(bs *block.Service) error {
- if setId, err = bs.SetWorkspaceDashboardId(ctx, req.ContextId, req.ObjectId); err != nil {
- return err
- }
- return nil
- })
- return response(setId, err)
-}
-
-func (mw *Middleware) ObjectSetIsFavorite(cctx context.Context, req *pb.RpcObjectSetIsFavoriteRequest) *pb.RpcObjectSetIsFavoriteResponse {
- ctx := mw.newContext(cctx)
- response := func(code pb.RpcObjectSetIsFavoriteResponseErrorCode, err error) *pb.RpcObjectSetIsFavoriteResponse {
- m := &pb.RpcObjectSetIsFavoriteResponse{Error: &pb.RpcObjectSetIsFavoriteResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- } else {
- m.Event = mw.getResponseEvent(ctx)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.SetPageIsFavorite(*req)
- })
- if err != nil {
- return response(pb.RpcObjectSetIsFavoriteResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectSetIsFavoriteResponseError_NULL, nil)
-}
-
func (mw *Middleware) ObjectRelationAddFeatured(cctx context.Context, req *pb.RpcObjectRelationAddFeaturedRequest) *pb.RpcObjectRelationAddFeaturedResponse {
ctx := mw.newContext(cctx)
response := func(code pb.RpcObjectRelationAddFeaturedResponseErrorCode, err error) *pb.RpcObjectRelationAddFeaturedResponse {
@@ -867,29 +720,6 @@ func (mw *Middleware) ObjectToBookmark(cctx context.Context, req *pb.RpcObjectTo
return response(pb.RpcObjectToBookmarkResponseError_NULL, id, nil)
}
-func (mw *Middleware) ObjectSetInternalFlags(cctx context.Context, req *pb.RpcObjectSetInternalFlagsRequest) *pb.RpcObjectSetInternalFlagsResponse {
- ctx := mw.newContext(cctx)
- response := func(code pb.RpcObjectSetInternalFlagsResponseErrorCode, err error) *pb.RpcObjectSetInternalFlagsResponse {
- m := &pb.RpcObjectSetInternalFlagsResponse{Error: &pb.RpcObjectSetInternalFlagsResponseError{Code: code}}
- if err != nil {
- m.Error.Description = getErrorDescription(err)
- } else {
- m.Event = mw.getResponseEvent(ctx)
- }
- return m
- }
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- return bs.ModifyDetails(req.ContextId, func(current *types.Struct) (*types.Struct, error) {
- d := pbtypes.CopyStruct(current, false)
- return internalflag.PutToDetails(d, req.InternalFlags), nil
- })
- })
- if err != nil {
- return response(pb.RpcObjectSetInternalFlagsResponseError_UNKNOWN_ERROR, err)
- }
- return response(pb.RpcObjectSetInternalFlagsResponseError_NULL, nil)
-}
-
func (mw *Middleware) ObjectImport(cctx context.Context, req *pb.RpcObjectImportRequest) *pb.RpcObjectImportResponse {
response := func(code pb.RpcObjectImportResponseErrorCode, err error) *pb.RpcObjectImportResponse {
m := &pb.RpcObjectImportResponse{
diff --git a/core/relations.go b/core/relations.go
index 5acb31d6a..453eddab6 100644
--- a/core/relations.go
+++ b/core/relations.go
@@ -5,20 +5,21 @@ import (
"errors"
"github.com/anyproto/anytype-heart/core/block"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/pb"
)
func (mw *Middleware) ObjectTypeRelationAdd(cctx context.Context, req *pb.RpcObjectTypeRelationAddRequest) *pb.RpcObjectTypeRelationAddResponse {
- blockService := getService[*block.Service](mw)
+ detailsService := getService[detailservice.Service](mw)
keys := make([]domain.RelationKey, 0, len(req.RelationKeys))
for _, relKey := range req.RelationKeys {
keys = append(keys, domain.RelationKey(relKey))
}
- err := blockService.ObjectTypeRelationAdd(cctx, req.ObjectTypeUrl, keys)
+ err := detailsService.ObjectTypeAddRelations(cctx, req.ObjectTypeUrl, keys)
code := mapErrorCode(err,
- errToCode(block.ErrBundledTypeIsReadonly, pb.RpcObjectTypeRelationAddResponseError_READONLY_OBJECT_TYPE),
+ errToCode(detailservice.ErrBundledTypeIsReadonly, pb.RpcObjectTypeRelationAddResponseError_READONLY_OBJECT_TYPE),
)
return &pb.RpcObjectTypeRelationAddResponse{
Error: &pb.RpcObjectTypeRelationAddResponseError{
@@ -29,15 +30,15 @@ func (mw *Middleware) ObjectTypeRelationAdd(cctx context.Context, req *pb.RpcObj
}
func (mw *Middleware) ObjectTypeRelationRemove(cctx context.Context, req *pb.RpcObjectTypeRelationRemoveRequest) *pb.RpcObjectTypeRelationRemoveResponse {
- blockService := getService[*block.Service](mw)
+ detailsService := getService[detailservice.Service](mw)
keys := make([]domain.RelationKey, 0, len(req.RelationKeys))
for _, relKey := range req.RelationKeys {
keys = append(keys, domain.RelationKey(relKey))
}
- err := blockService.ObjectTypeRemoveRelations(cctx, req.ObjectTypeUrl, keys)
+ err := detailsService.ObjectTypeRemoveRelations(cctx, req.ObjectTypeUrl, keys)
code := mapErrorCode(err,
- errToCode(block.ErrBundledTypeIsReadonly, pb.RpcObjectTypeRelationRemoveResponseError_READONLY_OBJECT_TYPE),
+ errToCode(detailservice.ErrBundledTypeIsReadonly, pb.RpcObjectTypeRelationRemoveResponseError_READONLY_OBJECT_TYPE),
)
return &pb.RpcObjectTypeRelationRemoveResponse{
Error: &pb.RpcObjectTypeRelationRemoveResponseError{
@@ -80,7 +81,23 @@ func (mw *Middleware) RelationListRemoveOption(cctx context.Context, request *pb
return response(pb.RpcRelationListRemoveOptionResponseError_NULL, nil)
}
-func (mw *Middleware) RelationOptions(cctx context.Context, request *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse {
+func (mw *Middleware) RelationOptions(_ context.Context, _ *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse {
// TODO implement me
panic("implement me")
}
+
+func (mw *Middleware) RelationListWithValue(_ context.Context, req *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse {
+ response := func(keys []string, counters []int64, err error) *pb.RpcRelationListWithValueResponse {
+ m := &pb.RpcRelationListWithValueResponse{Error: &pb.RpcRelationListWithValueResponseError{Code: pb.RpcRelationListWithValueResponseError_NULL}}
+ if err != nil {
+ m.Error.Description = getErrorDescription(err)
+ } else {
+ m.RelationKeys = keys
+ m.Counters = counters
+ }
+ return m
+ }
+
+ keys, counters, err := getService[detailservice.Service](mw).ListRelationsWithValue(req.SpaceId, req.Value)
+ return response(keys, counters, err)
+}
diff --git a/core/workspace.go b/core/workspace.go
index 80220191c..0775e8f67 100644
--- a/core/workspace.go
+++ b/core/workspace.go
@@ -8,6 +8,7 @@ import (
"github.com/anyproto/anytype-heart/core/anytype/account"
"github.com/anyproto/anytype-heart/core/block"
"github.com/anyproto/anytype-heart/core/block/cache"
+ "github.com/anyproto/anytype-heart/core/block/detailservice"
"github.com/anyproto/anytype-heart/core/block/editor"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
@@ -74,10 +75,7 @@ func (mw *Middleware) WorkspaceSetInfo(cctx context.Context, req *pb.RpcWorkspac
return m
}
- err := mw.doBlockService(func(bs *block.Service) (err error) {
- err = bs.SetSpaceInfo(req)
- return
- })
+ err := getService[detailservice.Service](mw).SetSpaceInfo(req.SpaceId, req.Details)
if err != nil {
return response(pb.RpcWorkspaceSetInfoResponseError_UNKNOWN_ERROR, err)
}
diff --git a/docs/proto.md b/docs/proto.md
index e10e41eff..640dd3614 100644
--- a/docs/proto.md
+++ b/docs/proto.md
@@ -1052,6 +1052,10 @@
- [Rpc.Relation.ListRemoveOption.Request](#anytype-Rpc-Relation-ListRemoveOption-Request)
- [Rpc.Relation.ListRemoveOption.Response](#anytype-Rpc-Relation-ListRemoveOption-Response)
- [Rpc.Relation.ListRemoveOption.Response.Error](#anytype-Rpc-Relation-ListRemoveOption-Response-Error)
+ - [Rpc.Relation.ListWithValue](#anytype-Rpc-Relation-ListWithValue)
+ - [Rpc.Relation.ListWithValue.Request](#anytype-Rpc-Relation-ListWithValue-Request)
+ - [Rpc.Relation.ListWithValue.Response](#anytype-Rpc-Relation-ListWithValue-Response)
+ - [Rpc.Relation.ListWithValue.Response.Error](#anytype-Rpc-Relation-ListWithValue-Response-Error)
- [Rpc.Relation.Options](#anytype-Rpc-Relation-Options)
- [Rpc.Relation.Options.Request](#anytype-Rpc-Relation-Options-Request)
- [Rpc.Relation.Options.Response](#anytype-Rpc-Relation-Options-Response)
@@ -1448,6 +1452,7 @@
- [Rpc.ObjectType.Relation.Remove.Response.Error.Code](#anytype-Rpc-ObjectType-Relation-Remove-Response-Error-Code)
- [Rpc.Process.Cancel.Response.Error.Code](#anytype-Rpc-Process-Cancel-Response-Error-Code)
- [Rpc.Relation.ListRemoveOption.Response.Error.Code](#anytype-Rpc-Relation-ListRemoveOption-Response-Error-Code)
+ - [Rpc.Relation.ListWithValue.Response.Error.Code](#anytype-Rpc-Relation-ListWithValue-Response-Error-Code)
- [Rpc.Relation.Options.Response.Error.Code](#anytype-Rpc-Relation-Options-Response-Error-Code)
- [Rpc.Space.Delete.Response.Error.Code](#anytype-Rpc-Space-Delete-Response-Error-Code)
- [Rpc.Space.InviteGenerate.Response.Error.Code](#anytype-Rpc-Space-InviteGenerate-Response-Error-Code)
@@ -1993,6 +1998,7 @@
| ObjectCreateRelationOption | [Rpc.Object.CreateRelationOption.Request](#anytype-Rpc-Object-CreateRelationOption-Request) | [Rpc.Object.CreateRelationOption.Response](#anytype-Rpc-Object-CreateRelationOption-Response) | |
| RelationListRemoveOption | [Rpc.Relation.ListRemoveOption.Request](#anytype-Rpc-Relation-ListRemoveOption-Request) | [Rpc.Relation.ListRemoveOption.Response](#anytype-Rpc-Relation-ListRemoveOption-Response) | |
| RelationOptions | [Rpc.Relation.Options.Request](#anytype-Rpc-Relation-Options-Request) | [Rpc.Relation.Options.Response](#anytype-Rpc-Relation-Options-Response) | |
+| RelationListWithValue | [Rpc.Relation.ListWithValue.Request](#anytype-Rpc-Relation-ListWithValue-Request) | [Rpc.Relation.ListWithValue.Response](#anytype-Rpc-Relation-ListWithValue-Response) | |
| ObjectRelationAdd | [Rpc.ObjectRelation.Add.Request](#anytype-Rpc-ObjectRelation-Add-Request) | [Rpc.ObjectRelation.Add.Response](#anytype-Rpc-ObjectRelation-Add-Response) | Object Relations *** |
| ObjectRelationDelete | [Rpc.ObjectRelation.Delete.Request](#anytype-Rpc-ObjectRelation-Delete-Request) | [Rpc.ObjectRelation.Delete.Response](#anytype-Rpc-ObjectRelation-Delete-Response) | |
| ObjectRelationAddFeatured | [Rpc.ObjectRelation.AddFeatured.Request](#anytype-Rpc-ObjectRelation-AddFeatured-Request) | [Rpc.ObjectRelation.AddFeatured.Response](#anytype-Rpc-ObjectRelation-AddFeatured-Response) | |
@@ -17411,6 +17417,65 @@ Available undo/redo operations
+
+
+### Rpc.Relation.ListWithValue
+
+
+
+
+
+
+
+
+
+### Rpc.Relation.ListWithValue.Request
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| spaceId | [string](#string) | | |
+| value | [google.protobuf.Value](#google-protobuf-Value) | | |
+
+
+
+
+
+
+
+
+### Rpc.Relation.ListWithValue.Response
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| error | [Rpc.Relation.ListWithValue.Response.Error](#anytype-Rpc-Relation-ListWithValue-Response-Error) | | |
+| relationKeys | [string](#string) | repeated | |
+| counters | [int64](#int64) | repeated | |
+
+
+
+
+
+
+
+
+### Rpc.Relation.ListWithValue.Response.Error
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| code | [Rpc.Relation.ListWithValue.Response.Error.Code](#anytype-Rpc-Relation-ListWithValue-Response-Error-Code) | | |
+| description | [string](#string) | | |
+
+
+
+
+
+
### Rpc.Relation.Options
@@ -22911,6 +22976,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
+
+
+### Rpc.Relation.ListWithValue.Response.Error.Code
+
+
+| Name | Number | Description |
+| ---- | ------ | ----------- |
+| NULL | 0 | |
+| UNKNOWN_ERROR | 1 | |
+| BAD_INPUT | 2 | |
+
+
+
### Rpc.Relation.Options.Response.Error.Code
diff --git a/go.mod b/go.mod
index ff8d95865..3b89ec6f5 100644
--- a/go.mod
+++ b/go.mod
@@ -7,10 +7,10 @@ require (
github.com/PuerkitoBio/goquery v1.9.2
github.com/VividCortex/ewma v1.2.0
github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786
- github.com/anyproto/any-store v0.0.5
+ github.com/anyproto/any-store v0.0.6
github.com/anyproto/any-sync v0.4.30
github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438
- github.com/anyproto/tantivy-go v0.1.0
+ github.com/anyproto/tantivy-go v0.1.1
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
github.com/avast/retry-go/v4 v4.6.0
github.com/blevesearch/bleve/v2 v2.3.10
@@ -44,7 +44,7 @@ require (
github.com/h2non/filetype v1.1.3
github.com/hashicorp/go-multierror v1.1.1
github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119
- github.com/huandu/skiplist v1.2.0
+ github.com/huandu/skiplist v1.2.1
github.com/improbable-eng/grpc-web v0.15.0
github.com/ipfs/boxo v0.13.1
github.com/ipfs/go-block-format v0.2.0
@@ -57,7 +57,7 @@ require (
github.com/joho/godotenv v1.5.1
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e
github.com/kelseyhightower/envconfig v1.4.0
- github.com/klauspost/compress v1.17.9
+ github.com/klauspost/compress v1.17.10
github.com/libp2p/go-libp2p v0.35.1
github.com/libp2p/zeroconf/v2 v2.2.0
github.com/logrusorgru/aurora v2.0.3+incompatible
@@ -99,7 +99,7 @@ require (
golang.org/x/net v0.29.0
golang.org/x/oauth2 v0.23.0
golang.org/x/text v0.18.0
- google.golang.org/grpc v1.66.2
+ google.golang.org/grpc v1.67.0
gopkg.in/Graylog2/go-gelf.v2 v2.0.0-20180125164251-1832d8546a9f
gopkg.in/yaml.v3 v3.0.1
storj.io/drpc v0.0.34
@@ -155,7 +155,7 @@ require (
github.com/dsoprea/go-photoshop-info-format v0.0.0-20200609050348-3db9b63b202c // indirect
github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
- github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect
+ github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
github.com/fogleman/gg v1.3.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/go-errors/errors v1.4.2 // indirect
@@ -170,7 +170,7 @@ require (
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect
- github.com/golang/glog v1.2.1 // indirect
+ github.com/golang/glog v1.2.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/flatbuffers v1.12.1 // indirect
github.com/google/go-querystring v1.1.0 // indirect
@@ -267,8 +267,8 @@ require (
golang.org/x/term v0.24.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.24.0 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
diff --git a/go.sum b/go.sum
index feb946452..feffc78a6 100644
--- a/go.sum
+++ b/go.sum
@@ -83,8 +83,8 @@ github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxB
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
-github.com/anyproto/any-store v0.0.5 h1:ToUbPNkGJcuYOpS2IWlbuxZadvsOOKLeLfKe8DeO3Hc=
-github.com/anyproto/any-store v0.0.5/go.mod h1:MA3sSqRXIp0h9bC2LnMuDGVEFGB3BkI/UuWNCleGHMs=
+github.com/anyproto/any-store v0.0.6 h1:FOBtNL6osrlzBu4wmiFqKZOa8pkL5Ena2LfVser8nig=
+github.com/anyproto/any-store v0.0.6/go.mod h1:MA3sSqRXIp0h9bC2LnMuDGVEFGB3BkI/UuWNCleGHMs=
github.com/anyproto/any-sync v0.4.30 h1:2nnoVQF9WiBIw8pzwuOubwqf7a+xvZPDkXHmykTPi0k=
github.com/anyproto/any-sync v0.4.30/go.mod h1:YjwTdTRL6b6GuutJNboJJ1M5D/kkdeSf9qF5xP6wG7Y=
github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc=
@@ -109,8 +109,8 @@ github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 h1:80jke82/c+b
github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c h1:GicoaTUyB2mtCIl3YMrO0OzysqRT5GA4vuvDsqEkhSM=
github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
-github.com/anyproto/tantivy-go v0.1.0 h1:5SuItuJnYAEK9U6cfxPnwFUXGboURIwF4JAp7s46rII=
-github.com/anyproto/tantivy-go v0.1.0/go.mod h1:Pl0zaeEX7dkVDTDKROzlLlGCVjbZHjyPrZloFuVEASc=
+github.com/anyproto/tantivy-go v0.1.1 h1:IdeZca63wV7/C+wMpkntImdh/mkkEddQJTShGEVxGe0=
+github.com/anyproto/tantivy-go v0.1.1/go.mod h1:Pl0zaeEX7dkVDTDKROzlLlGCVjbZHjyPrZloFuVEASc=
github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d h1:5bj7nX/AS8sxGpTIrapE7PC4oPlhkHMwMqXlJbUHBlg=
github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs=
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
@@ -311,8 +311,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
-github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
+github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM=
+github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4=
github.com/ethereum/go-ethereum v1.13.15 h1:U7sSGYGo4SPjP6iNIifNoyIAiNjrmQkz6EwQG+/EZWo=
github.com/ethereum/go-ethereum v1.13.15/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
@@ -415,8 +415,8 @@ github.com/golang/geo v0.0.0-20200319012246-673a6f80352d/go.mod h1:QZ0nwyI2jOfgR
github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 h1:gtexQ/VGyN+VVFRXSFiguSNcXmS6rkKT+X7FdIrTtfo=
github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
-github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
+github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
+github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
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=
@@ -574,8 +574,8 @@ github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
-github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
-github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
+github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w=
+github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
@@ -757,8 +757,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0=
+github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
@@ -1925,10 +1925,10 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU=
-google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
+google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
+google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
@@ -1953,8 +1953,8 @@ google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM
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.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
-google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
+google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
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=
diff --git a/pb/commands.pb.go b/pb/commands.pb.go
index 56c0fdbaa..d17227e4e 100644
--- a/pb/commands.pb.go
+++ b/pb/commands.pb.go
@@ -3804,6 +3804,34 @@ func (RpcRelationOptionsResponseErrorCode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_8261c968b2e6f45c, []int{0, 9, 1, 1, 0, 0}
}
+type RpcRelationListWithValueResponseErrorCode int32
+
+const (
+ RpcRelationListWithValueResponseError_NULL RpcRelationListWithValueResponseErrorCode = 0
+ RpcRelationListWithValueResponseError_UNKNOWN_ERROR RpcRelationListWithValueResponseErrorCode = 1
+ RpcRelationListWithValueResponseError_BAD_INPUT RpcRelationListWithValueResponseErrorCode = 2
+)
+
+var RpcRelationListWithValueResponseErrorCode_name = map[int32]string{
+ 0: "NULL",
+ 1: "UNKNOWN_ERROR",
+ 2: "BAD_INPUT",
+}
+
+var RpcRelationListWithValueResponseErrorCode_value = map[string]int32{
+ "NULL": 0,
+ "UNKNOWN_ERROR": 1,
+ "BAD_INPUT": 2,
+}
+
+func (x RpcRelationListWithValueResponseErrorCode) String() string {
+ return proto.EnumName(RpcRelationListWithValueResponseErrorCode_name, int32(x))
+}
+
+func (RpcRelationListWithValueResponseErrorCode) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_8261c968b2e6f45c, []int{0, 9, 2, 1, 0, 0}
+}
+
type RpcHistoryGetVersionsResponseErrorCode int32
const (
@@ -31451,6 +31479,206 @@ func (m *RpcRelationOptionsResponseError) GetDescription() string {
return ""
}
+type RpcRelationListWithValue struct {
+}
+
+func (m *RpcRelationListWithValue) Reset() { *m = RpcRelationListWithValue{} }
+func (m *RpcRelationListWithValue) String() string { return proto.CompactTextString(m) }
+func (*RpcRelationListWithValue) ProtoMessage() {}
+func (*RpcRelationListWithValue) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8261c968b2e6f45c, []int{0, 9, 2}
+}
+func (m *RpcRelationListWithValue) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RpcRelationListWithValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RpcRelationListWithValue.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RpcRelationListWithValue) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RpcRelationListWithValue.Merge(m, src)
+}
+func (m *RpcRelationListWithValue) XXX_Size() int {
+ return m.Size()
+}
+func (m *RpcRelationListWithValue) XXX_DiscardUnknown() {
+ xxx_messageInfo_RpcRelationListWithValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RpcRelationListWithValue proto.InternalMessageInfo
+
+type RpcRelationListWithValueRequest struct {
+ SpaceId string `protobuf:"bytes,1,opt,name=spaceId,proto3" json:"spaceId,omitempty"`
+ Value *types.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (m *RpcRelationListWithValueRequest) Reset() { *m = RpcRelationListWithValueRequest{} }
+func (m *RpcRelationListWithValueRequest) String() string { return proto.CompactTextString(m) }
+func (*RpcRelationListWithValueRequest) ProtoMessage() {}
+func (*RpcRelationListWithValueRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8261c968b2e6f45c, []int{0, 9, 2, 0}
+}
+func (m *RpcRelationListWithValueRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RpcRelationListWithValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RpcRelationListWithValueRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RpcRelationListWithValueRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RpcRelationListWithValueRequest.Merge(m, src)
+}
+func (m *RpcRelationListWithValueRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *RpcRelationListWithValueRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_RpcRelationListWithValueRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RpcRelationListWithValueRequest proto.InternalMessageInfo
+
+func (m *RpcRelationListWithValueRequest) GetSpaceId() string {
+ if m != nil {
+ return m.SpaceId
+ }
+ return ""
+}
+
+func (m *RpcRelationListWithValueRequest) GetValue() *types.Value {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+type RpcRelationListWithValueResponse struct {
+ Error *RpcRelationListWithValueResponseError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"`
+ RelationKeys []string `protobuf:"bytes,2,rep,name=relationKeys,proto3" json:"relationKeys,omitempty"`
+ Counters []int64 `protobuf:"varint,3,rep,packed,name=counters,proto3" json:"counters,omitempty"`
+}
+
+func (m *RpcRelationListWithValueResponse) Reset() { *m = RpcRelationListWithValueResponse{} }
+func (m *RpcRelationListWithValueResponse) String() string { return proto.CompactTextString(m) }
+func (*RpcRelationListWithValueResponse) ProtoMessage() {}
+func (*RpcRelationListWithValueResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8261c968b2e6f45c, []int{0, 9, 2, 1}
+}
+func (m *RpcRelationListWithValueResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RpcRelationListWithValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RpcRelationListWithValueResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RpcRelationListWithValueResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RpcRelationListWithValueResponse.Merge(m, src)
+}
+func (m *RpcRelationListWithValueResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *RpcRelationListWithValueResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_RpcRelationListWithValueResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RpcRelationListWithValueResponse proto.InternalMessageInfo
+
+func (m *RpcRelationListWithValueResponse) GetError() *RpcRelationListWithValueResponseError {
+ if m != nil {
+ return m.Error
+ }
+ return nil
+}
+
+func (m *RpcRelationListWithValueResponse) GetRelationKeys() []string {
+ if m != nil {
+ return m.RelationKeys
+ }
+ return nil
+}
+
+func (m *RpcRelationListWithValueResponse) GetCounters() []int64 {
+ if m != nil {
+ return m.Counters
+ }
+ return nil
+}
+
+type RpcRelationListWithValueResponseError struct {
+ Code RpcRelationListWithValueResponseErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=anytype.RpcRelationListWithValueResponseErrorCode" json:"code,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
+}
+
+func (m *RpcRelationListWithValueResponseError) Reset() { *m = RpcRelationListWithValueResponseError{} }
+func (m *RpcRelationListWithValueResponseError) String() string { return proto.CompactTextString(m) }
+func (*RpcRelationListWithValueResponseError) ProtoMessage() {}
+func (*RpcRelationListWithValueResponseError) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8261c968b2e6f45c, []int{0, 9, 2, 1, 0}
+}
+func (m *RpcRelationListWithValueResponseError) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RpcRelationListWithValueResponseError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RpcRelationListWithValueResponseError.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RpcRelationListWithValueResponseError) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RpcRelationListWithValueResponseError.Merge(m, src)
+}
+func (m *RpcRelationListWithValueResponseError) XXX_Size() int {
+ return m.Size()
+}
+func (m *RpcRelationListWithValueResponseError) XXX_DiscardUnknown() {
+ xxx_messageInfo_RpcRelationListWithValueResponseError.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RpcRelationListWithValueResponseError proto.InternalMessageInfo
+
+func (m *RpcRelationListWithValueResponseError) GetCode() RpcRelationListWithValueResponseErrorCode {
+ if m != nil {
+ return m.Code
+ }
+ return RpcRelationListWithValueResponseError_NULL
+}
+
+func (m *RpcRelationListWithValueResponseError) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
type RpcHistory struct {
}
@@ -66915,6 +67143,7 @@ func init() {
proto.RegisterEnum("anytype.RpcObjectTypeRelationRemoveResponseErrorCode", RpcObjectTypeRelationRemoveResponseErrorCode_name, RpcObjectTypeRelationRemoveResponseErrorCode_value)
proto.RegisterEnum("anytype.RpcRelationListRemoveOptionResponseErrorCode", RpcRelationListRemoveOptionResponseErrorCode_name, RpcRelationListRemoveOptionResponseErrorCode_value)
proto.RegisterEnum("anytype.RpcRelationOptionsResponseErrorCode", RpcRelationOptionsResponseErrorCode_name, RpcRelationOptionsResponseErrorCode_value)
+ proto.RegisterEnum("anytype.RpcRelationListWithValueResponseErrorCode", RpcRelationListWithValueResponseErrorCode_name, RpcRelationListWithValueResponseErrorCode_value)
proto.RegisterEnum("anytype.RpcHistoryGetVersionsResponseErrorCode", RpcHistoryGetVersionsResponseErrorCode_name, RpcHistoryGetVersionsResponseErrorCode_value)
proto.RegisterEnum("anytype.RpcHistoryShowVersionResponseErrorCode", RpcHistoryShowVersionResponseErrorCode_name, RpcHistoryShowVersionResponseErrorCode_value)
proto.RegisterEnum("anytype.RpcHistorySetVersionResponseErrorCode", RpcHistorySetVersionResponseErrorCode_name, RpcHistorySetVersionResponseErrorCode_value)
@@ -67540,6 +67769,10 @@ func init() {
proto.RegisterType((*RpcRelationOptionsRequest)(nil), "anytype.Rpc.Relation.Options.Request")
proto.RegisterType((*RpcRelationOptionsResponse)(nil), "anytype.Rpc.Relation.Options.Response")
proto.RegisterType((*RpcRelationOptionsResponseError)(nil), "anytype.Rpc.Relation.Options.Response.Error")
+ proto.RegisterType((*RpcRelationListWithValue)(nil), "anytype.Rpc.Relation.ListWithValue")
+ proto.RegisterType((*RpcRelationListWithValueRequest)(nil), "anytype.Rpc.Relation.ListWithValue.Request")
+ proto.RegisterType((*RpcRelationListWithValueResponse)(nil), "anytype.Rpc.Relation.ListWithValue.Response")
+ proto.RegisterType((*RpcRelationListWithValueResponseError)(nil), "anytype.Rpc.Relation.ListWithValue.Response.Error")
proto.RegisterType((*RpcHistory)(nil), "anytype.Rpc.History")
proto.RegisterType((*RpcHistoryVersion)(nil), "anytype.Rpc.History.Version")
proto.RegisterType((*RpcHistoryGetVersions)(nil), "anytype.Rpc.History.GetVersions")
@@ -68249,1165 +68482,1169 @@ func init() {
func init() { proto.RegisterFile("pb/protos/commands.proto", fileDescriptor_8261c968b2e6f45c) }
var fileDescriptor_8261c968b2e6f45c = []byte{
- // 18514 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7d, 0x98, 0x24, 0x49,
- 0x59, 0x2f, 0x3a, 0x55, 0x59, 0x55, 0xdd, 0xfd, 0xf6, 0xc7, 0xd4, 0xe4, 0xce, 0xcc, 0xf6, 0x06,
- 0xcb, 0xec, 0x32, 0xbb, 0x2c, 0xeb, 0xb2, 0xf4, 0xc2, 0x2e, 0x5f, 0xbb, 0xec, 0xb2, 0x5b, 0x5d,
- 0x9d, 0xdd, 0x5d, 0x6c, 0x77, 0x55, 0x9b, 0x55, 0x3d, 0xc3, 0xea, 0xf5, 0xd6, 0xc9, 0xa9, 0x8a,
- 0xee, 0xce, 0x9d, 0xea, 0xca, 0x32, 0x2b, 0xbb, 0x67, 0x86, 0xfb, 0x9c, 0x7b, 0x44, 0x04, 0x16,
- 0x95, 0x83, 0x88, 0x1c, 0x04, 0x04, 0xe4, 0x53, 0x41, 0x01, 0xf9, 0x16, 0x54, 0x54, 0x3e, 0x04,
- 0x11, 0x91, 0x0f, 0x51, 0x40, 0x79, 0x04, 0x41, 0x0e, 0x9e, 0x7b, 0x38, 0x5c, 0x7d, 0x8e, 0x70,
- 0x50, 0xb8, 0xde, 0x27, 0x23, 0x22, 0x33, 0x23, 0xaa, 0x2b, 0xb3, 0x22, 0xab, 0x2b, 0xab, 0x17,
- 0x3d, 0xff, 0x65, 0x46, 0x46, 0x46, 0xbc, 0xf1, 0xfe, 0xde, 0x37, 0xe2, 0x8d, 0x88, 0x37, 0xde,
- 0x80, 0xf9, 0xce, 0x85, 0xdb, 0x3a, 0xb6, 0xe5, 0x58, 0xdd, 0xdb, 0x1a, 0xd6, 0xee, 0xae, 0xd1,
- 0x6e, 0x76, 0x17, 0xc8, 0xbb, 0x3a, 0x61, 0xb4, 0xaf, 0x38, 0x57, 0x3a, 0x18, 0xdd, 0xd8, 0xb9,
- 0xb8, 0x7d, 0x5b, 0xcb, 0xbc, 0x70, 0x5b, 0xe7, 0xc2, 0x6d, 0xbb, 0x56, 0x13, 0xb7, 0xbc, 0x1f,
- 0xc8, 0x0b, 0xcb, 0x8e, 0x6e, 0x0e, 0xcb, 0xd5, 0xb2, 0x1a, 0x46, 0xab, 0xeb, 0x58, 0x36, 0x66,
- 0x39, 0x4f, 0x07, 0x55, 0xe2, 0x7d, 0xdc, 0x76, 0xbc, 0x12, 0xae, 0xdd, 0xb6, 0xac, 0xed, 0x16,
- 0xa6, 0xdf, 0x2e, 0xec, 0x6d, 0xdd, 0xd6, 0x75, 0xec, 0xbd, 0x86, 0xc3, 0xbe, 0x5e, 0xdf, 0xfb,
- 0xb5, 0x89, 0xbb, 0x0d, 0xdb, 0xec, 0x38, 0x96, 0x4d, 0x73, 0x9c, 0xfd, 0xab, 0xcf, 0x4f, 0x80,
- 0xa2, 0x77, 0x1a, 0xe8, 0x3b, 0x13, 0xa0, 0x14, 0x3a, 0x1d, 0xf4, 0xd1, 0x34, 0xc0, 0x0a, 0x76,
- 0xce, 0x61, 0xbb, 0x6b, 0x5a, 0x6d, 0x74, 0x1c, 0x26, 0x74, 0xfc, 0x93, 0x7b, 0xb8, 0xeb, 0xdc,
- 0x95, 0x79, 0xe8, 0x1b, 0x4a, 0x0a, 0xbd, 0x31, 0x0d, 0x93, 0x3a, 0xee, 0x76, 0xac, 0x76, 0x17,
- 0xab, 0xf7, 0x41, 0x16, 0xdb, 0xb6, 0x65, 0xcf, 0xa7, 0xae, 0x4f, 0xdd, 0x3c, 0x7d, 0xfb, 0x2d,
- 0x0b, 0xac, 0xf9, 0x0b, 0x7a, 0xa7, 0xb1, 0x50, 0xe8, 0x74, 0x16, 0x82, 0x92, 0x16, 0xbc, 0x9f,
- 0x16, 0x34, 0xf7, 0x0f, 0x9d, 0xfe, 0xa8, 0xce, 0xc3, 0xc4, 0x3e, 0xcd, 0x30, 0x9f, 0xbe, 0x3e,
- 0x75, 0xf3, 0x94, 0xee, 0xbd, 0xba, 0x5f, 0x9a, 0xd8, 0x31, 0xcc, 0x56, 0x77, 0x5e, 0xa1, 0x5f,
- 0xd8, 0x2b, 0x7a, 0x5d, 0x0a, 0xb2, 0xa4, 0x10, 0xb5, 0x08, 0x99, 0x86, 0xd5, 0xc4, 0xa4, 0xfa,
- 0xb9, 0xdb, 0x6f, 0x93, 0xaf, 0x7e, 0xa1, 0x68, 0x35, 0xb1, 0x4e, 0x7e, 0x56, 0xaf, 0x87, 0x69,
- 0x8f, 0x2d, 0x01, 0x19, 0x7c, 0xd2, 0xd9, 0xdb, 0x21, 0xe3, 0xe6, 0x57, 0x27, 0x21, 0x53, 0xde,
- 0x5c, 0x5b, 0xcb, 0x1f, 0x53, 0x4f, 0xc0, 0xec, 0x66, 0xf9, 0xfe, 0x72, 0xe5, 0x7c, 0xb9, 0xae,
- 0xe9, 0x7a, 0x45, 0xcf, 0xa7, 0xd4, 0x59, 0x98, 0x5a, 0x2c, 0x2c, 0xd5, 0x4b, 0xe5, 0x8d, 0xcd,
- 0x5a, 0x3e, 0x8d, 0x5e, 0xad, 0xc0, 0x5c, 0x15, 0x3b, 0x4b, 0x78, 0xdf, 0x6c, 0xe0, 0xaa, 0x63,
- 0x38, 0x18, 0xbd, 0x28, 0xe5, 0x33, 0x53, 0xdd, 0x74, 0x2b, 0xf5, 0x3f, 0xb1, 0x06, 0xdc, 0x71,
- 0xa0, 0x01, 0x62, 0x09, 0x0b, 0xec, 0xef, 0x05, 0x2e, 0x4d, 0xe7, 0xcb, 0x39, 0xfb, 0x38, 0x98,
- 0xe6, 0xbe, 0xa9, 0x73, 0x00, 0x8b, 0x85, 0xe2, 0xfd, 0x2b, 0x7a, 0x65, 0xb3, 0xbc, 0x94, 0x3f,
- 0xe6, 0xbe, 0x2f, 0x57, 0x74, 0x8d, 0xbd, 0xa7, 0xd0, 0xf7, 0x52, 0x1c, 0x98, 0x4b, 0x22, 0x98,
- 0x0b, 0x83, 0x89, 0xe9, 0x03, 0x28, 0x7a, 0x93, 0x0f, 0xce, 0x8a, 0x00, 0xce, 0x1d, 0xf1, 0x8a,
- 0x4b, 0x1e, 0xa0, 0xe7, 0xa6, 0x61, 0xb2, 0xba, 0xb3, 0xe7, 0x34, 0xad, 0x4b, 0x6d, 0x34, 0xe5,
- 0x23, 0x83, 0xbe, 0xc5, 0xf3, 0xe4, 0xe9, 0x22, 0x4f, 0x6e, 0x3e, 0xd8, 0x08, 0x56, 0x42, 0x08,
- 0x37, 0x7e, 0xd5, 0xe7, 0x46, 0x41, 0xe0, 0xc6, 0xe3, 0x64, 0x0b, 0x4a, 0x9e, 0x0f, 0xbf, 0x70,
- 0x07, 0x64, 0xab, 0x1d, 0xa3, 0x81, 0xd1, 0x27, 0x15, 0x98, 0x59, 0xc3, 0xc6, 0x3e, 0x2e, 0x74,
- 0x3a, 0xb6, 0xb5, 0x8f, 0x51, 0x31, 0x90, 0xd7, 0x79, 0x98, 0xe8, 0xba, 0x99, 0x4a, 0x4d, 0xd2,
- 0x82, 0x29, 0xdd, 0x7b, 0x55, 0xcf, 0x00, 0x98, 0x4d, 0xdc, 0x76, 0x4c, 0xc7, 0xc4, 0xdd, 0xf9,
- 0xf4, 0xf5, 0xca, 0xcd, 0x53, 0x3a, 0x97, 0x82, 0xbe, 0x93, 0x96, 0x95, 0x31, 0x42, 0xc5, 0x02,
- 0x4f, 0x41, 0x08, 0x57, 0x5f, 0x9f, 0x96, 0x91, 0xb1, 0x81, 0xc5, 0xc5, 0xe3, 0xed, 0xdb, 0x52,
- 0xf1, 0x99, 0xeb, 0xe6, 0x28, 0x57, 0xea, 0xd5, 0xcd, 0xe2, 0x6a, 0xbd, 0xba, 0x51, 0x28, 0x6a,
- 0x79, 0xac, 0x9e, 0x84, 0x3c, 0x79, 0xac, 0x97, 0xaa, 0xf5, 0x25, 0x6d, 0x4d, 0xab, 0x69, 0x4b,
- 0xf9, 0x2d, 0x55, 0x85, 0x39, 0x5d, 0xfb, 0xd1, 0x4d, 0xad, 0x5a, 0xab, 0x2f, 0x17, 0x4a, 0x6b,
- 0xda, 0x52, 0x7e, 0xdb, 0xfd, 0x79, 0xad, 0xb4, 0x5e, 0xaa, 0xd5, 0x75, 0xad, 0x50, 0x5c, 0xd5,
- 0x96, 0xf2, 0x3b, 0xea, 0xd5, 0x70, 0x55, 0xb9, 0x52, 0x2f, 0x6c, 0x6c, 0xe8, 0x95, 0x73, 0x5a,
- 0x9d, 0xfd, 0x51, 0xcd, 0x9b, 0xb4, 0xa2, 0x5a, 0xbd, 0xba, 0x5a, 0xd0, 0xb5, 0xc2, 0xe2, 0x9a,
- 0x96, 0x7f, 0x10, 0x3d, 0x47, 0x81, 0xd9, 0x75, 0xe3, 0x22, 0xae, 0xee, 0x18, 0x36, 0x36, 0x2e,
- 0xb4, 0x30, 0xba, 0x41, 0x02, 0x4f, 0xf4, 0x49, 0x1e, 0x2f, 0x4d, 0xc4, 0xeb, 0xb6, 0x3e, 0x0c,
- 0x16, 0xaa, 0x08, 0x01, 0xec, 0x7f, 0xf9, 0x6a, 0xb0, 0x2a, 0x00, 0xf6, 0xc4, 0x98, 0xe5, 0xc5,
- 0x43, 0xec, 0xa7, 0x1f, 0x06, 0x88, 0xa1, 0x2f, 0x2b, 0x30, 0x57, 0x6a, 0xef, 0x9b, 0x0e, 0x5e,
- 0xc1, 0x6d, 0x6c, 0xbb, 0xe3, 0x80, 0x14, 0x0c, 0x6f, 0x54, 0x38, 0x18, 0x96, 0x45, 0x18, 0x1e,
- 0xdf, 0x87, 0x6d, 0x62, 0x1d, 0x21, 0xa3, 0xed, 0xb5, 0x30, 0x65, 0x92, 0x7c, 0x45, 0xb3, 0xc9,
- 0x38, 0x16, 0x24, 0xa8, 0x37, 0xc2, 0x2c, 0x7d, 0x59, 0x36, 0x5b, 0xf8, 0x7e, 0x7c, 0x85, 0x8d,
- 0xbb, 0x62, 0x22, 0xfa, 0x79, 0x5f, 0xf9, 0x4a, 0x02, 0x96, 0x4f, 0x8a, 0x4b, 0x54, 0x3c, 0x30,
- 0x5f, 0xfa, 0x70, 0x50, 0xbf, 0x03, 0x5a, 0x66, 0xa2, 0x1f, 0xa4, 0x61, 0xba, 0xea, 0x58, 0x1d,
- 0x57, 0x64, 0xcd, 0xf6, 0xb6, 0x1c, 0xb8, 0x1f, 0xe7, 0x75, 0xac, 0x28, 0x82, 0xfb, 0xb8, 0x3e,
- 0x7c, 0xe4, 0x2a, 0x08, 0xd1, 0xb0, 0xef, 0xf8, 0x1a, 0xb6, 0x2c, 0xa0, 0x72, 0x7b, 0xac, 0xd2,
- 0x7e, 0x08, 0xf5, 0xeb, 0xa5, 0x0a, 0xe4, 0x3d, 0x31, 0x73, 0x8a, 0x7b, 0xb6, 0x8d, 0xdb, 0x8e,
- 0x1c, 0x08, 0x7f, 0xc5, 0x83, 0xb0, 0x2a, 0x82, 0x70, 0x7b, 0x84, 0x30, 0x7b, 0xb5, 0x24, 0xa8,
- 0x63, 0x7f, 0xe0, 0xa3, 0x79, 0xbf, 0x80, 0xe6, 0x53, 0xe2, 0x93, 0x15, 0x0f, 0xd2, 0xd5, 0x21,
- 0x10, 0x3d, 0x09, 0x79, 0x77, 0x4c, 0x2a, 0xd6, 0x4a, 0xe7, 0xb4, 0x7a, 0xa9, 0x7c, 0xae, 0x54,
- 0xd3, 0xf2, 0x18, 0xbd, 0x44, 0x81, 0x19, 0x4a, 0x9a, 0x8e, 0xf7, 0xad, 0x8b, 0x92, 0xbd, 0xde,
- 0x97, 0x63, 0x1a, 0x0b, 0x7c, 0x0d, 0x21, 0x9a, 0xf1, 0xb3, 0x31, 0x8c, 0x85, 0x88, 0xe2, 0x1e,
- 0x4e, 0xbd, 0xd5, 0x01, 0x35, 0xd8, 0xee, 0xa3, 0x2d, 0x7d, 0x7b, 0xab, 0x97, 0x66, 0x00, 0x68,
- 0x23, 0xcf, 0x99, 0xf8, 0x12, 0x5a, 0x0f, 0x30, 0x11, 0xc4, 0x36, 0x35, 0x50, 0x6c, 0xd3, 0xfd,
- 0xc4, 0xf6, 0x7d, 0xfc, 0x98, 0xb5, 0x28, 0xa2, 0x77, 0x6b, 0x28, 0xbb, 0x5d, 0x4a, 0xc2, 0x67,
- 0x87, 0x9e, 0xa0, 0xa4, 0x45, 0xab, 0xf3, 0x5a, 0x98, 0x22, 0x8f, 0x65, 0x63, 0x17, 0x33, 0x1d,
- 0x0a, 0x12, 0xd4, 0xb3, 0x30, 0x43, 0x33, 0x36, 0xac, 0xb6, 0xdb, 0x9e, 0x0c, 0xc9, 0x20, 0xa4,
- 0xb9, 0x20, 0x36, 0x6c, 0x6c, 0x38, 0x96, 0x4d, 0xca, 0xc8, 0x52, 0x10, 0xb9, 0x24, 0xf4, 0x4d,
- 0x5f, 0x0b, 0x35, 0x41, 0x72, 0x9e, 0x10, 0xa7, 0x29, 0xf1, 0xe4, 0x66, 0x7f, 0x38, 0xfd, 0xa3,
- 0x5a, 0x57, 0x77, 0xd1, 0x5e, 0x26, 0x53, 0x3b, 0xac, 0x9e, 0x06, 0x95, 0xa5, 0xba, 0x79, 0x8b,
- 0x95, 0x72, 0x4d, 0x2b, 0xd7, 0xf2, 0x5b, 0x7d, 0x25, 0x6a, 0x1b, 0xbd, 0x3e, 0x03, 0x99, 0x67,
- 0x58, 0x66, 0x1b, 0x3d, 0x37, 0x25, 0x88, 0x44, 0x1b, 0x3b, 0x97, 0x2c, 0xfb, 0xa2, 0xaf, 0xa8,
- 0x41, 0x42, 0x34, 0x36, 0x81, 0x28, 0x29, 0x03, 0x45, 0x29, 0xd3, 0x4f, 0x94, 0x7e, 0x91, 0x17,
- 0xa5, 0xbb, 0x45, 0x51, 0xba, 0xa9, 0x0f, 0xff, 0x5d, 0xe2, 0x43, 0x3a, 0x80, 0x8f, 0xf9, 0x1d,
- 0xc0, 0xbd, 0x02, 0x8c, 0x8f, 0x95, 0x2b, 0x26, 0x1e, 0x80, 0x5f, 0x4a, 0x54, 0xf1, 0xfb, 0x41,
- 0xbd, 0x1d, 0x02, 0xf5, 0x4e, 0x9f, 0x3e, 0xc1, 0x3c, 0xd8, 0x75, 0x3c, 0x78, 0xb0, 0x9b, 0xb8,
- 0xa8, 0x9e, 0x82, 0x13, 0x4b, 0xa5, 0xe5, 0x65, 0x4d, 0xd7, 0xca, 0xb5, 0x7a, 0x59, 0xab, 0x9d,
- 0xaf, 0xe8, 0xf7, 0xe7, 0x5b, 0xe8, 0x75, 0x0a, 0x80, 0xcb, 0xa1, 0xa2, 0xd1, 0x6e, 0xe0, 0x96,
- 0x5c, 0x8f, 0xfe, 0x3f, 0xd2, 0xf1, 0xfa, 0x84, 0xa0, 0xfc, 0x10, 0x38, 0x5f, 0x95, 0x96, 0xd7,
- 0xca, 0xd0, 0xc2, 0xe2, 0x81, 0xfa, 0x96, 0x87, 0x83, 0xed, 0x79, 0x15, 0x1c, 0xf7, 0xca, 0x63,
- 0xd9, 0xfb, 0x4f, 0xfb, 0xde, 0x9e, 0x81, 0x39, 0x06, 0x8b, 0x37, 0x8f, 0x7f, 0x28, 0x25, 0x33,
- 0x91, 0x47, 0x30, 0xc9, 0xa6, 0xed, 0x5e, 0xf7, 0xee, 0xbf, 0xab, 0x2b, 0x30, 0xdd, 0xc1, 0xf6,
- 0xae, 0xd9, 0xed, 0x9a, 0x56, 0x9b, 0x2e, 0xc8, 0xcd, 0xdd, 0xfe, 0x68, 0x9f, 0xe3, 0x64, 0xed,
- 0x72, 0x61, 0xc3, 0xb0, 0x1d, 0xb3, 0x61, 0x76, 0x8c, 0xb6, 0xb3, 0x11, 0x64, 0xd6, 0xf9, 0x3f,
- 0xd1, 0x8b, 0x63, 0x4e, 0x6b, 0xc4, 0x96, 0x84, 0x88, 0xc4, 0xef, 0xc6, 0x98, 0x92, 0x44, 0x16,
- 0x18, 0x4f, 0x2c, 0x3e, 0x9a, 0xa8, 0x58, 0xf4, 0xc1, 0x7b, 0x5b, 0xbd, 0x06, 0x4e, 0x95, 0xca,
- 0xc5, 0x8a, 0xae, 0x6b, 0xc5, 0x5a, 0x7d, 0x43, 0xd3, 0xd7, 0x4b, 0xd5, 0x6a, 0xa9, 0x52, 0xae,
- 0x1e, 0x46, 0xdb, 0xd1, 0x27, 0x14, 0x5f, 0x62, 0x96, 0x70, 0xa3, 0x65, 0xb6, 0x31, 0xba, 0xf7,
- 0x90, 0x02, 0x23, 0xae, 0xfa, 0xc8, 0xe3, 0xcc, 0xea, 0x0f, 0xc1, 0xf9, 0xb5, 0xf1, 0x71, 0xee,
- 0x5f, 0xe0, 0xbf, 0x61, 0xf5, 0xff, 0xb2, 0x02, 0x27, 0x38, 0x45, 0xd4, 0xf1, 0xee, 0xc8, 0x56,
- 0xf2, 0x7e, 0x9a, 0xd7, 0xdd, 0x92, 0x88, 0x69, 0x3f, 0x6b, 0xfa, 0x00, 0x19, 0x21, 0xb0, 0xbe,
- 0xc5, 0x87, 0x75, 0x4d, 0x80, 0xf5, 0xa9, 0x43, 0x94, 0x19, 0x0f, 0xd9, 0xdf, 0x4a, 0x14, 0xd9,
- 0x6b, 0xe0, 0xd4, 0x46, 0x41, 0xaf, 0x95, 0x8a, 0xa5, 0x8d, 0x82, 0x3b, 0x8e, 0x72, 0x43, 0x76,
- 0x88, 0xb9, 0x2e, 0x82, 0xde, 0x17, 0xdf, 0xdf, 0xcf, 0xc0, 0xb5, 0xfd, 0x3b, 0xda, 0xe2, 0x8e,
- 0xd1, 0xde, 0xc6, 0xc8, 0x94, 0x81, 0x7a, 0x09, 0x26, 0x1a, 0x24, 0x3b, 0xc5, 0x99, 0xdf, 0xba,
- 0x89, 0xe8, 0xcb, 0x69, 0x0d, 0xba, 0xf7, 0x2b, 0x7a, 0x17, 0x2f, 0x10, 0x35, 0x51, 0x20, 0x9e,
- 0x1e, 0x0d, 0xde, 0x01, 0xba, 0x43, 0x64, 0xe3, 0xd3, 0xbe, 0x6c, 0x9c, 0x17, 0x64, 0xa3, 0x78,
- 0xb8, 0xe2, 0xe3, 0x89, 0xc9, 0x9f, 0x3c, 0x1c, 0x3a, 0x80, 0x50, 0x69, 0x32, 0xc3, 0x47, 0x85,
- 0xbe, 0xdd, 0xfd, 0x6b, 0x14, 0xc8, 0x2d, 0xe1, 0x16, 0x96, 0x5d, 0x89, 0xfc, 0x76, 0x5a, 0x76,
- 0x43, 0x84, 0xc2, 0x40, 0xcb, 0x0e, 0x5f, 0x1d, 0x71, 0xcc, 0x5d, 0xdc, 0x75, 0x8c, 0xdd, 0x0e,
- 0x61, 0xb5, 0xa2, 0x07, 0x09, 0xe8, 0x67, 0xd2, 0x32, 0xdb, 0x25, 0x11, 0xd5, 0xfc, 0xdb, 0x58,
- 0x53, 0xfc, 0xda, 0x1c, 0xe4, 0xce, 0x1b, 0xad, 0x16, 0x76, 0xd0, 0xd7, 0xd3, 0x90, 0x2b, 0xba,
- 0x73, 0x52, 0x8c, 0x1e, 0x1b, 0x80, 0x85, 0x60, 0xd2, 0xb6, 0x2c, 0x67, 0xc3, 0x70, 0x76, 0x18,
- 0x5a, 0xfe, 0x3b, 0xdb, 0xa6, 0xfd, 0x4d, 0x1e, 0xb4, 0x7b, 0x45, 0xd0, 0x7e, 0x44, 0xe0, 0x26,
- 0xad, 0x68, 0x81, 0x56, 0x12, 0x82, 0x1a, 0x82, 0xc9, 0xdd, 0x36, 0xde, 0xb5, 0xda, 0x66, 0xc3,
- 0x1b, 0xe9, 0xbd, 0x77, 0xf4, 0x21, 0x7f, 0x96, 0xbc, 0x28, 0x60, 0xb6, 0x20, 0x5d, 0x4b, 0x3c,
- 0xd0, 0xaa, 0x43, 0x60, 0x76, 0x1d, 0x3c, 0x82, 0x42, 0x50, 0xaf, 0x55, 0xea, 0x45, 0x5d, 0x2b,
- 0xd4, 0xb4, 0xfa, 0x5a, 0xa5, 0x58, 0x58, 0xab, 0xeb, 0xda, 0x46, 0x25, 0x8f, 0xd1, 0x7f, 0x4d,
- 0xbb, 0xcc, 0x6d, 0x58, 0xfb, 0xd8, 0x46, 0x2b, 0x52, 0x7c, 0x8e, 0xe2, 0x09, 0xc3, 0xe0, 0x17,
- 0xa5, 0xb7, 0xca, 0x19, 0x77, 0x18, 0x05, 0x21, 0x5d, 0xe1, 0x87, 0xa5, 0xb6, 0xbd, 0x23, 0x8b,
- 0x7a, 0x18, 0x70, 0xfa, 0x7f, 0xa6, 0x61, 0xa2, 0x68, 0xb5, 0xf7, 0xb1, 0xed, 0xf0, 0x56, 0x26,
- 0xcf, 0xcd, 0x94, 0xc8, 0x4d, 0xb7, 0x6b, 0xc2, 0x6d, 0xc7, 0xb6, 0x3a, 0x9e, 0x99, 0xe9, 0xbd,
- 0xa2, 0x5f, 0x8b, 0xcb, 0x61, 0x56, 0x73, 0xf8, 0x72, 0x53, 0xff, 0x8a, 0x04, 0xf2, 0x94, 0x1e,
- 0x05, 0x78, 0x5d, 0x1c, 0x5c, 0xfa, 0x13, 0x90, 0xfc, 0x2e, 0xef, 0x57, 0x14, 0x98, 0xa5, 0xca,
- 0x57, 0xc5, 0x64, 0x5c, 0x44, 0x15, 0x7e, 0xa1, 0xa7, 0x87, 0xf9, 0xab, 0xc7, 0x04, 0xf6, 0xe7,
- 0x8c, 0x4e, 0xc7, 0x5f, 0xf4, 0x5b, 0x3d, 0xa6, 0xb3, 0x77, 0x2a, 0xe6, 0x8b, 0x39, 0xc8, 0x18,
- 0x7b, 0xce, 0x0e, 0xfa, 0x81, 0xb4, 0xc9, 0x2f, 0x74, 0x06, 0x8c, 0x9e, 0x10, 0x48, 0x4e, 0x42,
- 0xd6, 0xb1, 0x2e, 0x62, 0x8f, 0x0f, 0xf4, 0xc5, 0x85, 0xc3, 0xe8, 0x74, 0x6a, 0xe4, 0x03, 0x83,
- 0xc3, 0x7b, 0x77, 0x47, 0x18, 0xa3, 0xd1, 0xb0, 0xf6, 0xda, 0x4e, 0xc9, 0x5b, 0xf8, 0x0b, 0x12,
- 0xd0, 0x17, 0x52, 0x32, 0x53, 0x08, 0x09, 0x02, 0xe3, 0x41, 0x76, 0x61, 0x08, 0x55, 0x5a, 0x80,
- 0x5b, 0x0a, 0x1b, 0x1b, 0xf5, 0x5a, 0xe5, 0x7e, 0xad, 0x1c, 0x0c, 0xf7, 0xf5, 0x52, 0xb9, 0x5e,
- 0x5b, 0xd5, 0xea, 0xc5, 0x4d, 0x9d, 0xac, 0xce, 0x14, 0x8a, 0xc5, 0xca, 0x66, 0xb9, 0x96, 0xc7,
- 0xe8, 0xad, 0x69, 0x98, 0x29, 0xb6, 0xac, 0xae, 0x8f, 0xf0, 0x75, 0x01, 0xc2, 0x3e, 0x1b, 0x53,
- 0x1c, 0x1b, 0xd1, 0xbf, 0xa4, 0x64, 0xb7, 0x7a, 0x3d, 0x86, 0x70, 0xc5, 0x87, 0xf4, 0x52, 0xbf,
- 0x26, 0xb5, 0xd5, 0x3b, 0xb8, 0xbc, 0xe4, 0x55, 0xe2, 0x73, 0x77, 0xc1, 0x44, 0x81, 0x0a, 0x06,
- 0xfa, 0x9b, 0x14, 0xe4, 0x8a, 0x56, 0x7b, 0xcb, 0xdc, 0x56, 0x6f, 0x82, 0x39, 0xdc, 0x36, 0x2e,
- 0xb4, 0xf0, 0x92, 0xe1, 0x18, 0xfb, 0x26, 0xbe, 0x44, 0x1a, 0x30, 0xa9, 0xf7, 0xa4, 0xba, 0x44,
- 0xb1, 0x14, 0x7c, 0x61, 0x6f, 0x9b, 0x10, 0x35, 0xa9, 0xf3, 0x49, 0xea, 0x53, 0xe1, 0x6a, 0xfa,
- 0xba, 0x61, 0x63, 0x1b, 0xb7, 0xb0, 0xd1, 0xc5, 0xae, 0x31, 0xda, 0xc6, 0x2d, 0x22, 0xb4, 0x93,
- 0x7a, 0xd8, 0x67, 0xf5, 0x2c, 0xcc, 0xd0, 0x4f, 0xc4, 0xd4, 0xe9, 0x12, 0x31, 0x9e, 0xd4, 0x85,
- 0x34, 0xf5, 0x71, 0x90, 0xc5, 0x97, 0x1d, 0xdb, 0x98, 0x6f, 0x12, 0xbc, 0xae, 0x5e, 0xa0, 0xbe,
- 0x5e, 0x0b, 0x9e, 0xaf, 0xd7, 0x42, 0x95, 0x78, 0x82, 0xe9, 0x34, 0x17, 0xfa, 0x95, 0x49, 0xdf,
- 0x90, 0xf8, 0xd7, 0x74, 0x20, 0x18, 0x2a, 0x64, 0xda, 0xc6, 0x2e, 0x66, 0x72, 0x41, 0x9e, 0xd5,
- 0x5b, 0xe0, 0xb8, 0xb1, 0x6f, 0x38, 0x86, 0xbd, 0x66, 0x35, 0x8c, 0x16, 0x19, 0xfc, 0x3c, 0xcd,
- 0xef, 0xfd, 0x40, 0xd6, 0xe1, 0x1d, 0xcb, 0xc6, 0x24, 0x97, 0xb7, 0x0e, 0xef, 0x25, 0xb8, 0xa5,
- 0x9b, 0x0d, 0xab, 0x4d, 0xe8, 0x57, 0x74, 0xf2, 0xec, 0x72, 0xa5, 0x69, 0x76, 0xdd, 0x86, 0x90,
- 0x52, 0xca, 0x74, 0x41, 0xb9, 0x7a, 0xa5, 0xdd, 0x20, 0x6b, 0xf0, 0x93, 0x7a, 0xd8, 0x67, 0x75,
- 0x11, 0xa6, 0xd9, 0xf2, 0xf3, 0xba, 0x2b, 0x57, 0x39, 0x22, 0x57, 0xd7, 0x8b, 0x9e, 0x34, 0x14,
- 0xcf, 0x85, 0x72, 0x90, 0x4f, 0xe7, 0x7f, 0x52, 0xef, 0x83, 0x47, 0xb0, 0xd7, 0xe2, 0x5e, 0xd7,
- 0xb1, 0x76, 0x29, 0xe8, 0xcb, 0x66, 0x8b, 0xb6, 0x60, 0x82, 0xb4, 0x20, 0x2a, 0x8b, 0x7a, 0x3b,
- 0x9c, 0xec, 0xd8, 0x78, 0x0b, 0xdb, 0x0f, 0x18, 0xbb, 0x7b, 0x97, 0x6b, 0xb6, 0xd1, 0xee, 0x76,
- 0x2c, 0xdb, 0x99, 0x9f, 0x24, 0xc4, 0xf7, 0xfd, 0xc6, 0x3a, 0xca, 0x49, 0xc8, 0x51, 0xf6, 0xa1,
- 0x17, 0x65, 0xa5, 0x9d, 0xe8, 0x58, 0x83, 0x22, 0xcd, 0xb3, 0xc7, 0xc3, 0x04, 0xeb, 0xe1, 0x08,
- 0x50, 0xd3, 0xb7, 0x9f, 0xee, 0x99, 0xcd, 0xb1, 0x52, 0x74, 0x2f, 0x9b, 0x7a, 0x07, 0xe4, 0x1a,
- 0xa4, 0x59, 0x04, 0xb3, 0xe9, 0xdb, 0x1f, 0xd1, 0xbf, 0x52, 0x92, 0x45, 0x67, 0x59, 0xd1, 0x17,
- 0x15, 0x29, 0xbf, 0xbb, 0x28, 0x8a, 0xe3, 0x69, 0xf5, 0x37, 0xd3, 0x43, 0x74, 0x9b, 0xb7, 0xc2,
- 0xcd, 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x52, 0x7d, 0x71, 0xd3, 0x33, 0xc1, 0x5d, 0xab, 0xa4, 0x5a,
- 0x2b, 0xe8, 0xee, 0xfc, 0x69, 0xc9, 0x35, 0xdd, 0x6f, 0x81, 0x9b, 0x06, 0xe4, 0xd6, 0x6a, 0xf5,
- 0x72, 0x61, 0x5d, 0xcb, 0x6f, 0x89, 0xb6, 0x4d, 0xb5, 0x56, 0xd9, 0xa8, 0xeb, 0x9b, 0xe5, 0x72,
- 0xa9, 0xbc, 0x42, 0x0b, 0x73, 0x4d, 0xc2, 0xd3, 0x41, 0x86, 0xf3, 0x7a, 0xa9, 0xa6, 0xd5, 0x8b,
- 0x95, 0xf2, 0x72, 0x69, 0x25, 0x6f, 0x0e, 0x32, 0x8c, 0x1e, 0x54, 0xaf, 0x87, 0x6b, 0x05, 0x4a,
- 0x4a, 0x95, 0xb2, 0x3b, 0x9f, 0x28, 0x16, 0xca, 0x45, 0xcd, 0x9d, 0x3c, 0x5c, 0x54, 0x11, 0x9c,
- 0xa2, 0xc5, 0xd5, 0x97, 0x4b, 0x6b, 0xfc, 0x16, 0xc0, 0xc7, 0x53, 0xea, 0x3c, 0x5c, 0xc5, 0x7f,
- 0x2b, 0x95, 0xcf, 0x15, 0xd6, 0x4a, 0x4b, 0xf9, 0x3f, 0x4e, 0xa9, 0x37, 0xc2, 0x75, 0xc2, 0x5f,
- 0x74, 0x35, 0xbf, 0x5e, 0x5a, 0xaa, 0xaf, 0x97, 0xaa, 0xeb, 0x85, 0x5a, 0x71, 0x35, 0xff, 0x09,
- 0x32, 0x5f, 0xf0, 0x0d, 0x60, 0xce, 0x19, 0xee, 0xa5, 0xfc, 0x98, 0x5e, 0x10, 0x05, 0xf5, 0xb1,
- 0x7d, 0x61, 0x8f, 0xb6, 0x61, 0x3f, 0xea, 0x8f, 0x0e, 0x4b, 0x82, 0x08, 0x3d, 0x3e, 0x46, 0x59,
- 0xf1, 0x64, 0xa8, 0x36, 0x84, 0x08, 0x5d, 0x0f, 0xd7, 0x96, 0x35, 0x8a, 0x94, 0xae, 0x15, 0x2b,
- 0xe7, 0x34, 0xbd, 0x7e, 0xbe, 0xb0, 0xb6, 0xa6, 0xd5, 0xea, 0xcb, 0x25, 0xbd, 0x5a, 0xcb, 0x6f,
- 0xa1, 0x7f, 0x4a, 0xfb, 0x73, 0x68, 0x8e, 0x5b, 0x7f, 0x93, 0x8e, 0xab, 0xd6, 0x91, 0x73, 0xe5,
- 0x27, 0x41, 0xae, 0xeb, 0x18, 0xce, 0x5e, 0x97, 0x69, 0xf5, 0x23, 0xfb, 0x6b, 0xf5, 0x42, 0x95,
- 0x64, 0xd2, 0x59, 0x66, 0xf4, 0xc5, 0x54, 0x1c, 0x35, 0x1d, 0xc1, 0x34, 0xda, 0x1c, 0x82, 0xc5,
- 0x67, 0x00, 0x79, 0xd2, 0x5e, 0xaa, 0xd6, 0x0b, 0x6b, 0xba, 0x56, 0x58, 0x7a, 0xc0, 0x9f, 0x3c,
- 0x63, 0xf5, 0x14, 0x9c, 0xd8, 0x2c, 0xbb, 0xd3, 0x61, 0xa2, 0x2e, 0x95, 0x72, 0x59, 0x2b, 0xba,
- 0x7c, 0xff, 0x19, 0xb2, 0x54, 0xed, 0x5a, 0xd0, 0x84, 0x6e, 0xd7, 0xca, 0xe1, 0xf8, 0xff, 0x0d,
- 0x69, 0x8f, 0x8e, 0x40, 0xc2, 0xf8, 0xb2, 0x46, 0x8b, 0xc3, 0x17, 0xa4, 0x9c, 0x38, 0xa4, 0x28,
- 0x89, 0x87, 0xc7, 0x7f, 0x18, 0x02, 0x8f, 0x53, 0x70, 0x82, 0xc7, 0x83, 0x38, 0x73, 0x84, 0xc3,
- 0xf0, 0xd5, 0x49, 0xc8, 0x55, 0x71, 0x0b, 0x37, 0x1c, 0xf4, 0x76, 0xce, 0x98, 0x98, 0x83, 0xb4,
- 0xef, 0x3c, 0x90, 0x36, 0x9b, 0xc2, 0xf4, 0x39, 0xdd, 0x33, 0x7d, 0x8e, 0x30, 0x03, 0x94, 0x58,
- 0x66, 0x40, 0x26, 0x01, 0x33, 0x20, 0x3b, 0xbc, 0x19, 0x90, 0x1b, 0x64, 0x06, 0xa0, 0x37, 0xe4,
- 0xe2, 0xf6, 0x12, 0x94, 0xd5, 0x47, 0x3b, 0xf8, 0xff, 0x8f, 0x4c, 0x9c, 0x5e, 0xa5, 0x2f, 0xc5,
- 0xf1, 0xa4, 0xf8, 0x07, 0x4a, 0x02, 0xcb, 0x0f, 0xea, 0x0d, 0x70, 0x5d, 0xf0, 0x5e, 0xd7, 0x9e,
- 0x59, 0xaa, 0xd6, 0xaa, 0x64, 0xc4, 0x2f, 0x56, 0x74, 0x7d, 0x73, 0x83, 0xae, 0xdc, 0x9d, 0x06,
- 0x35, 0x28, 0x45, 0xdf, 0x2c, 0xd3, 0xf1, 0x7d, 0x5b, 0x2c, 0x7d, 0xb9, 0x54, 0x5e, 0xaa, 0xfb,
- 0x3a, 0x53, 0x5e, 0xae, 0xe4, 0x77, 0xdc, 0x29, 0x1b, 0x57, 0xba, 0x3b, 0x40, 0xb3, 0x1a, 0x0a,
- 0xe5, 0xa5, 0xfa, 0x7a, 0x59, 0x5b, 0xaf, 0x94, 0x4b, 0x45, 0x92, 0x5e, 0xd5, 0x6a, 0x79, 0xd3,
- 0x1d, 0x68, 0x7a, 0x2c, 0x8a, 0xaa, 0x56, 0xd0, 0x8b, 0xab, 0x9a, 0x4e, 0xab, 0x7c, 0x50, 0xbd,
- 0x09, 0xce, 0x16, 0xca, 0x95, 0x9a, 0x9b, 0x52, 0x28, 0x3f, 0x50, 0x7b, 0x60, 0x43, 0xab, 0x6f,
- 0xe8, 0x95, 0xa2, 0x56, 0xad, 0xba, 0x7a, 0xca, 0xec, 0x8f, 0x7c, 0x4b, 0x7d, 0x3a, 0xdc, 0xc5,
- 0x91, 0xa6, 0xd5, 0xc8, 0x36, 0xd1, 0x7a, 0x85, 0x78, 0x0a, 0x2c, 0x69, 0xf5, 0xd5, 0x42, 0xb5,
- 0x5e, 0x2a, 0x17, 0x2b, 0xeb, 0x1b, 0x85, 0x5a, 0xc9, 0x55, 0xe7, 0x0d, 0xbd, 0x52, 0xab, 0xd4,
- 0xcf, 0x69, 0x7a, 0xb5, 0x54, 0x29, 0xe7, 0xdb, 0x6e, 0x93, 0x39, 0xfd, 0xf7, 0xfa, 0x61, 0x4b,
- 0xbd, 0x16, 0xe6, 0xbd, 0xf4, 0xb5, 0x8a, 0xcb, 0x68, 0xce, 0x22, 0xe9, 0x24, 0x6a, 0x91, 0xfc,
- 0x73, 0x1a, 0x32, 0x55, 0xc7, 0xea, 0xa0, 0x1f, 0x09, 0x3a, 0x98, 0x33, 0x00, 0x36, 0xd9, 0xf5,
- 0x71, 0x67, 0x61, 0x6c, 0x5e, 0xc6, 0xa5, 0xa0, 0x3f, 0x92, 0x5e, 0xaa, 0x0e, 0xfa, 0x6c, 0xab,
- 0x13, 0x62, 0xab, 0x7c, 0x4f, 0xce, 0x77, 0x3f, 0xbc, 0xa0, 0x78, 0xf2, 0xfe, 0xb3, 0xc3, 0x2c,
- 0x46, 0x23, 0x38, 0xcd, 0xc1, 0xe6, 0xf2, 0xdf, 0x13, 0x09, 0xac, 0x5e, 0x0d, 0x57, 0xf5, 0x08,
- 0x17, 0x91, 0xa9, 0x2d, 0xf5, 0x51, 0xf0, 0x48, 0x4e, 0xbc, 0xb5, 0xf5, 0xca, 0x39, 0xcd, 0x17,
- 0xe4, 0xa5, 0x42, 0xad, 0x90, 0xdf, 0x46, 0x9f, 0x53, 0x20, 0xb3, 0x6e, 0xed, 0xf7, 0xee, 0x10,
- 0xb4, 0xf1, 0x25, 0x6e, 0x2d, 0xd4, 0x7b, 0x15, 0x7d, 0x95, 0xa5, 0xd8, 0xbe, 0x1e, 0xbe, 0x1b,
- 0xf8, 0x85, 0x74, 0x1c, 0xb6, 0xaf, 0x1f, 0x76, 0x0b, 0xf0, 0xef, 0x87, 0x61, 0x7b, 0x08, 0x6b,
- 0xb1, 0x7a, 0x16, 0xce, 0x04, 0x1f, 0x4a, 0x4b, 0x5a, 0xb9, 0x56, 0x5a, 0x7e, 0x20, 0x60, 0x6e,
- 0x49, 0x97, 0x62, 0xff, 0xa0, 0x6e, 0x2c, 0x7a, 0xa6, 0x31, 0x0f, 0x27, 0x83, 0x6f, 0x2b, 0x5a,
- 0xcd, 0xfb, 0xf2, 0x20, 0x7a, 0x6e, 0x16, 0x66, 0x68, 0xb7, 0xbe, 0xd9, 0x69, 0x1a, 0x0e, 0x46,
- 0x77, 0x04, 0xe8, 0xde, 0x0c, 0xc7, 0x4b, 0x1b, 0xcb, 0xd5, 0xaa, 0x63, 0xd9, 0xc6, 0x36, 0x2e,
- 0x34, 0x9b, 0x36, 0xe3, 0x56, 0x6f, 0x32, 0x7a, 0x8f, 0xf4, 0x3a, 0x9f, 0x38, 0x94, 0xd0, 0x3a,
- 0x43, 0x50, 0xff, 0x8a, 0xd4, 0xba, 0x9c, 0x44, 0x81, 0xf1, 0xd0, 0x7f, 0x70, 0xc4, 0x3a, 0x17,
- 0x8e, 0xcb, 0xd6, 0xd9, 0xe7, 0xa7, 0x61, 0xaa, 0x66, 0xee, 0xe2, 0x67, 0x59, 0x6d, 0xdc, 0x55,
- 0x27, 0x40, 0x59, 0x59, 0xaf, 0xe5, 0x8f, 0xb9, 0x0f, 0xae, 0x51, 0x95, 0x22, 0x0f, 0x9a, 0x5b,
- 0x81, 0xfb, 0x50, 0xa8, 0xe5, 0x15, 0xf7, 0x61, 0x5d, 0xab, 0xe5, 0x33, 0xee, 0x43, 0x59, 0xab,
- 0xe5, 0xb3, 0xee, 0xc3, 0xc6, 0x5a, 0x2d, 0x9f, 0x73, 0x1f, 0x4a, 0xd5, 0x5a, 0x7e, 0xc2, 0x7d,
- 0x58, 0xac, 0xd6, 0xf2, 0x93, 0xee, 0xc3, 0xb9, 0x6a, 0x2d, 0x3f, 0xe5, 0x3e, 0x14, 0x6b, 0xb5,
- 0x3c, 0xb8, 0x0f, 0xcf, 0xa8, 0xd6, 0xf2, 0xd3, 0xee, 0x43, 0xa1, 0x58, 0xcb, 0xcf, 0x90, 0x07,
- 0xad, 0x96, 0x9f, 0x75, 0x1f, 0xaa, 0xd5, 0x5a, 0x7e, 0x8e, 0x94, 0x5c, 0xad, 0xe5, 0x8f, 0x93,
- 0xba, 0x4a, 0xb5, 0x7c, 0xde, 0x7d, 0x58, 0xad, 0xd6, 0xf2, 0x27, 0x48, 0xe6, 0x6a, 0x2d, 0xaf,
- 0x92, 0x4a, 0xab, 0xb5, 0xfc, 0x55, 0x24, 0x4f, 0xb5, 0x96, 0x3f, 0x49, 0xaa, 0xa8, 0xd6, 0xf2,
- 0xa7, 0x08, 0x19, 0x5a, 0x2d, 0x7f, 0x9a, 0xe4, 0xd1, 0x6b, 0xf9, 0xab, 0xc9, 0xa7, 0x72, 0x2d,
- 0x3f, 0x4f, 0x08, 0xd3, 0x6a, 0xf9, 0x6b, 0xc8, 0x83, 0x5e, 0xcb, 0x23, 0xf2, 0xa9, 0x50, 0xcb,
- 0x3f, 0x02, 0x3d, 0x12, 0xa6, 0x56, 0xb0, 0x43, 0x41, 0x44, 0x79, 0x50, 0x56, 0xb0, 0xc3, 0x9b,
- 0xf1, 0x5f, 0x53, 0xe0, 0x6a, 0x36, 0xf5, 0x5b, 0xb6, 0xad, 0xdd, 0x35, 0xbc, 0x6d, 0x34, 0xae,
- 0x68, 0x97, 0x5d, 0x13, 0x0a, 0x55, 0x85, 0xa5, 0xab, 0x4e, 0xd0, 0x19, 0x91, 0xe7, 0x48, 0x8b,
- 0xd3, 0x5b, 0x8c, 0x52, 0x82, 0xc5, 0x28, 0x66, 0x91, 0xfd, 0x23, 0x2f, 0xd1, 0xc2, 0xfa, 0x71,
- 0xaa, 0x67, 0xfd, 0xd8, 0x55, 0x93, 0x0e, 0xb6, 0xbb, 0x56, 0xdb, 0x68, 0x55, 0xd9, 0x76, 0x29,
- 0x5d, 0xf5, 0xea, 0x4d, 0x56, 0x7f, 0xd4, 0xd3, 0x0c, 0x6a, 0x95, 0x3d, 0x2d, 0x6a, 0x86, 0xdb,
- 0xdb, 0xcc, 0x10, 0x25, 0xf9, 0x84, 0xaf, 0x24, 0x35, 0x41, 0x49, 0xee, 0x3b, 0x44, 0xd9, 0xf1,
- 0xf4, 0xa5, 0x34, 0xdc, 0xd4, 0x22, 0x70, 0x26, 0xf4, 0x96, 0xab, 0x15, 0xf4, 0xb9, 0x34, 0x9c,
- 0xd6, 0xda, 0xfd, 0x2c, 0x7c, 0x5e, 0x16, 0xde, 0xca, 0x43, 0xb3, 0x21, 0xb2, 0xf4, 0xae, 0xbe,
- 0xcd, 0xee, 0x5f, 0x66, 0x08, 0x47, 0x3f, 0xe5, 0x73, 0xb4, 0x2a, 0x70, 0xf4, 0xde, 0xe1, 0x8b,
- 0x8e, 0xc7, 0xd0, 0xf2, 0x48, 0x3b, 0xa0, 0x0c, 0xfa, 0x66, 0x06, 0x1e, 0x49, 0x3d, 0x1e, 0x18,
- 0x85, 0x54, 0xcb, 0x0a, 0xed, 0xa6, 0x8e, 0xbb, 0x8e, 0x61, 0x3b, 0xc2, 0x29, 0xd4, 0x9e, 0xa9,
- 0x54, 0x2a, 0x81, 0xa9, 0x54, 0x7a, 0xe0, 0x54, 0x0a, 0xbd, 0x9b, 0x37, 0x1f, 0xce, 0x8b, 0x18,
- 0x17, 0xfa, 0xf7, 0xff, 0x51, 0x2d, 0x0c, 0x83, 0xda, 0xb7, 0x2b, 0x7e, 0x4c, 0x80, 0x7a, 0xf9,
- 0xd0, 0x35, 0xc4, 0x43, 0xfc, 0x8f, 0x46, 0x6b, 0xe7, 0x65, 0xf8, 0x6f, 0xa2, 0x51, 0x92, 0x6f,
- 0x26, 0x6a, 0xa0, 0x7f, 0x7a, 0x02, 0xa6, 0x88, 0x2e, 0xac, 0x99, 0xed, 0x8b, 0xe8, 0x75, 0x0a,
- 0xcc, 0x94, 0xf1, 0xa5, 0xe2, 0x8e, 0xd1, 0x6a, 0xe1, 0xf6, 0x36, 0xe6, 0xcd, 0xf6, 0x79, 0x98,
- 0x30, 0x3a, 0x9d, 0x72, 0xb0, 0xcf, 0xe0, 0xbd, 0xb2, 0xfe, 0xf7, 0x1b, 0x7d, 0x95, 0x3c, 0x15,
- 0xa1, 0xe4, 0x7e, 0xbd, 0x0b, 0x7c, 0x9d, 0x21, 0x33, 0xe4, 0xeb, 0x61, 0xba, 0xe1, 0x65, 0xf1,
- 0xbd, 0xd5, 0xf9, 0x24, 0xf4, 0x77, 0xb1, 0xba, 0x01, 0xa9, 0xca, 0xe3, 0x09, 0x05, 0x1e, 0xb1,
- 0x1d, 0x72, 0x0a, 0x4e, 0xd4, 0x2a, 0x95, 0xfa, 0x7a, 0xa1, 0xfc, 0x40, 0x70, 0x4a, 0x74, 0x0b,
- 0xbd, 0x2a, 0x03, 0x73, 0x55, 0xab, 0xb5, 0x8f, 0x03, 0x98, 0x4a, 0x01, 0x4c, 0x3d, 0x7c, 0x4a,
- 0x1d, 0xe0, 0x93, 0x7a, 0x1a, 0x72, 0x46, 0xbb, 0x7b, 0x09, 0x7b, 0xb6, 0x21, 0x7b, 0x63, 0x30,
- 0xfe, 0x3e, 0xaf, 0xc7, 0xba, 0x08, 0xe3, 0xdd, 0x03, 0x38, 0x29, 0x52, 0x15, 0x02, 0xe4, 0x59,
- 0x98, 0xe9, 0xd2, 0xcd, 0xc2, 0x1a, 0xb7, 0x27, 0x2c, 0xa4, 0x11, 0x12, 0xe9, 0x6e, 0xb5, 0xc2,
- 0x48, 0x24, 0x6f, 0xe8, 0x75, 0xbe, 0xfa, 0x6f, 0x0a, 0x10, 0x17, 0x0e, 0x43, 0x58, 0x3c, 0x90,
- 0x5f, 0x33, 0xea, 0x19, 0xde, 0x3c, 0x9c, 0x64, 0x5a, 0x5b, 0x2f, 0xae, 0x16, 0xd6, 0xd6, 0xb4,
- 0xf2, 0x8a, 0x56, 0x2f, 0x2d, 0xd1, 0xad, 0x8a, 0x20, 0xa5, 0x50, 0xab, 0x69, 0xeb, 0x1b, 0xb5,
- 0x6a, 0x5d, 0x7b, 0x66, 0x51, 0xd3, 0x96, 0x88, 0x23, 0x12, 0x39, 0x49, 0xe0, 0xb9, 0x8c, 0x15,
- 0xca, 0xd5, 0xf3, 0x9a, 0x9e, 0xdf, 0x39, 0x5b, 0x80, 0x69, 0xae, 0x9f, 0x77, 0xa9, 0x5b, 0xc2,
- 0x5b, 0xc6, 0x5e, 0x8b, 0xd9, 0x6a, 0xf9, 0x63, 0x2e, 0x75, 0x84, 0x37, 0x95, 0x76, 0xeb, 0x4a,
- 0x3e, 0xa5, 0xe6, 0x61, 0x86, 0xef, 0xd2, 0xf3, 0x69, 0xf4, 0xb2, 0x6b, 0x61, 0xea, 0xbc, 0x65,
- 0x5f, 0x24, 0xde, 0x63, 0xe8, 0xfd, 0x34, 0x9a, 0x84, 0x77, 0x2e, 0x8f, 0x1b, 0xd8, 0x5f, 0x23,
- 0xef, 0x2d, 0xe0, 0x95, 0xb6, 0x30, 0xf0, 0xec, 0xdd, 0xf5, 0x30, 0x7d, 0xc9, 0xcb, 0x1d, 0x68,
- 0x3a, 0x97, 0x84, 0x7e, 0x5d, 0x6e, 0xff, 0x7f, 0x70, 0x95, 0xc9, 0xef, 0x4f, 0xbf, 0x3d, 0x0d,
- 0xb9, 0x15, 0xec, 0x14, 0x5a, 0x2d, 0x9e, 0x6f, 0x2f, 0x97, 0x3e, 0x4f, 0x21, 0x34, 0xa2, 0xd0,
- 0x6a, 0x85, 0x2b, 0x15, 0xc7, 0x20, 0xcf, 0xef, 0x57, 0x48, 0x43, 0x6f, 0x90, 0x3a, 0x09, 0x35,
- 0xa0, 0xc2, 0xe4, 0x39, 0xf6, 0x11, 0xc5, 0xdf, 0xe3, 0xfe, 0x35, 0xce, 0xca, 0x79, 0x42, 0x10,
- 0x49, 0x24, 0x15, 0xbd, 0x57, 0xee, 0xe5, 0x53, 0xef, 0x87, 0x89, 0xbd, 0x2e, 0x2e, 0x1a, 0x5d,
- 0x4c, 0x68, 0xeb, 0x6d, 0x69, 0xe5, 0xc2, 0x83, 0xb8, 0xe1, 0x2c, 0x94, 0x76, 0x5d, 0x83, 0x7a,
- 0x93, 0x66, 0xf4, 0x83, 0x73, 0xb0, 0x77, 0xdd, 0x2b, 0xc1, 0x9d, 0x51, 0x34, 0x8c, 0xc6, 0x8e,
- 0xb0, 0x47, 0xee, 0x27, 0xa0, 0x17, 0x0d, 0x01, 0x68, 0xe4, 0x6e, 0x70, 0xe8, 0xc1, 0xac, 0xd8,
- 0x30, 0x8e, 0x60, 0x0b, 0x77, 0x18, 0x18, 0x3f, 0x9d, 0x86, 0x4c, 0xa5, 0x83, 0xdb, 0x72, 0xee,
- 0xa9, 0xaf, 0x93, 0xf7, 0x01, 0xf3, 0x1b, 0xe6, 0x96, 0x1e, 0xc2, 0xbd, 0xdb, 0x20, 0x63, 0xb6,
- 0xb7, 0x2c, 0x66, 0x7e, 0x3e, 0x22, 0x64, 0xab, 0xa7, 0xd4, 0xde, 0xb2, 0x74, 0x92, 0x51, 0xd6,
- 0xfd, 0x2b, 0xaa, 0xee, 0xe4, 0x59, 0xfa, 0xad, 0x49, 0xc8, 0x51, 0xa1, 0x45, 0x2f, 0x55, 0x40,
- 0x29, 0x34, 0x9b, 0x21, 0x47, 0x3c, 0xd2, 0x07, 0x8e, 0x78, 0x58, 0xe4, 0x37, 0x9f, 0xef, 0xfe,
- 0xbb, 0x18, 0x28, 0x42, 0xb2, 0x07, 0x67, 0x8a, 0x53, 0x68, 0x36, 0xc3, 0x3d, 0x4d, 0xfd, 0x0a,
- 0xd3, 0x62, 0x85, 0xbc, 0x1e, 0x2b, 0x72, 0x7a, 0x1c, 0xbb, 0xbb, 0x0f, 0xa5, 0x2f, 0x79, 0x88,
- 0xfe, 0x31, 0x0d, 0x13, 0x6b, 0x66, 0xd7, 0x71, 0xb1, 0x29, 0xc8, 0x60, 0x73, 0x2d, 0x4c, 0x79,
- 0xac, 0x71, 0x3b, 0x36, 0xb7, 0xd7, 0x0e, 0x12, 0xd0, 0xeb, 0x79, 0x74, 0x9e, 0x21, 0xa2, 0xf3,
- 0xc4, 0xe8, 0xd6, 0x33, 0x2a, 0xc2, 0x3d, 0xb8, 0x83, 0x6a, 0xd3, 0xbd, 0xd5, 0xfe, 0xa6, 0xcf,
- 0xf0, 0x75, 0x81, 0xe1, 0x77, 0x0e, 0x53, 0x65, 0xf2, 0x4c, 0xff, 0x7c, 0x1a, 0xc0, 0xad, 0x9b,
- 0x1d, 0x93, 0x79, 0x8c, 0x70, 0xf8, 0x35, 0x82, 0xbb, 0xaf, 0xe2, 0xb9, 0xbb, 0x2e, 0x72, 0xf7,
- 0x29, 0x83, 0x9b, 0x1a, 0x75, 0x1c, 0x46, 0xcd, 0x83, 0x62, 0xfa, 0xac, 0x75, 0x1f, 0xd1, 0xdb,
- 0x7d, 0xa6, 0x6e, 0x08, 0x4c, 0xbd, 0x7b, 0xc8, 0x9a, 0x92, 0xe7, 0xeb, 0x5f, 0xa5, 0x61, 0xa2,
- 0x8a, 0x1d, 0xb7, 0x9b, 0x44, 0xe7, 0x64, 0x0e, 0xa4, 0x70, 0xba, 0x9d, 0x96, 0xd4, 0xed, 0xef,
- 0xa6, 0x64, 0x83, 0x68, 0x04, 0x9c, 0x61, 0x34, 0x85, 0x2c, 0x11, 0xbc, 0x51, 0x2a, 0x88, 0xc6,
- 0xa0, 0xd2, 0x92, 0xe7, 0xee, 0x5b, 0xd3, 0xfe, 0xf6, 0xfb, 0x63, 0x85, 0xe9, 0x1b, 0x6f, 0xfc,
- 0xa6, 0x0e, 0x1a, 0xbf, 0xff, 0x94, 0x8a, 0x6f, 0x6a, 0x44, 0xed, 0x3d, 0xc7, 0x36, 0x28, 0x46,
- 0xb0, 0x2d, 0x3c, 0x0c, 0xbf, 0x9e, 0xa3, 0x40, 0x8e, 0xad, 0x1f, 0xdf, 0x1b, 0xbd, 0x7e, 0x3c,
- 0x78, 0x02, 0xf1, 0xbe, 0x21, 0xcc, 0xb5, 0xa8, 0x45, 0x5d, 0x9f, 0x8c, 0x34, 0x47, 0xc6, 0xad,
- 0x90, 0x25, 0x51, 0xfe, 0xd8, 0x38, 0x17, 0xec, 0xe8, 0x7b, 0x45, 0x68, 0xee, 0x57, 0x9d, 0x66,
- 0x8a, 0x8d, 0xc2, 0x08, 0xd6, 0x81, 0x87, 0x41, 0xe1, 0x45, 0x1f, 0x4b, 0xf9, 0x46, 0xc8, 0xfb,
- 0x32, 0xcc, 0xc4, 0xfb, 0x98, 0x18, 0x6f, 0xa0, 0x61, 0xb5, 0x1d, 0x7c, 0x99, 0x5b, 0x79, 0xf7,
- 0x13, 0x22, 0x2d, 0x83, 0x79, 0x98, 0x70, 0x6c, 0x7e, 0x35, 0xde, 0x7b, 0xe5, 0x7b, 0x9c, 0xac,
- 0xd8, 0xe3, 0x94, 0xe1, 0xac, 0xd9, 0x6e, 0xb4, 0xf6, 0x9a, 0x58, 0xc7, 0x2d, 0xc3, 0x6d, 0x55,
- 0xb7, 0xd0, 0x5d, 0xc2, 0x1d, 0xdc, 0x6e, 0xe2, 0xb6, 0x43, 0xe9, 0xf4, 0x3c, 0x6f, 0x25, 0x72,
- 0xa2, 0xaf, 0xf3, 0x82, 0x71, 0x8f, 0x28, 0x18, 0x8f, 0xe9, 0x37, 0x7b, 0x88, 0x30, 0x42, 0xef,
- 0x04, 0xa0, 0x6d, 0x3b, 0x67, 0xe2, 0x4b, 0xac, 0x43, 0xbc, 0xa6, 0xc7, 0x14, 0xad, 0xf8, 0x19,
- 0x74, 0x2e, 0x33, 0xfa, 0xb2, 0x2f, 0x0c, 0xf7, 0x09, 0xc2, 0x70, 0xab, 0x24, 0x09, 0xf1, 0xe4,
- 0xa0, 0x33, 0xc4, 0x8a, 0xc6, 0x2c, 0x4c, 0x05, 0xeb, 0x90, 0x8a, 0x7a, 0x0d, 0x9c, 0xf2, 0x3c,
- 0x1b, 0xca, 0x9a, 0xb6, 0x54, 0xad, 0x6f, 0x6e, 0xac, 0xe8, 0x85, 0x25, 0x2d, 0x0f, 0xaa, 0x0a,
- 0x73, 0x95, 0xc5, 0x67, 0x68, 0xc5, 0x9a, 0xef, 0x90, 0x90, 0x41, 0x7f, 0x91, 0x86, 0x2c, 0x71,
- 0x1b, 0x47, 0x3f, 0x31, 0x22, 0xc9, 0xe9, 0x0a, 0xfb, 0x38, 0xfe, 0xbc, 0x42, 0x3e, 0x0e, 0x20,
- 0x63, 0x26, 0xa1, 0xea, 0x50, 0x71, 0x00, 0x23, 0x0a, 0x4a, 0x5e, 0x3d, 0x5d, 0x95, 0xac, 0xee,
- 0x58, 0x97, 0xfe, 0x3d, 0xab, 0xa4, 0xdb, 0xfe, 0x23, 0x56, 0xc9, 0x3e, 0x24, 0x8c, 0x5d, 0x25,
- 0xfb, 0xe8, 0x5d, 0x84, 0x9a, 0xa2, 0xbf, 0xcb, 0xf8, 0xcb, 0x2e, 0xff, 0xcf, 0xe1, 0x96, 0x5d,
- 0x0a, 0x30, 0x6b, 0xb6, 0x1d, 0x6c, 0xb7, 0x8d, 0xd6, 0x72, 0xcb, 0xd8, 0xf6, 0x0e, 0x27, 0xf7,
- 0xce, 0xc2, 0x4b, 0x5c, 0x1e, 0x5d, 0xfc, 0x43, 0x3d, 0x03, 0xe0, 0xe0, 0xdd, 0x4e, 0xcb, 0x70,
- 0x02, 0xd1, 0xe3, 0x52, 0x78, 0xe9, 0xcb, 0x88, 0xd2, 0xf7, 0x78, 0xb8, 0x8a, 0x82, 0x56, 0xbb,
- 0xd2, 0xc1, 0x9b, 0x6d, 0xf3, 0x27, 0xf7, 0x48, 0x78, 0x1a, 0x2a, 0xa3, 0xfd, 0x3e, 0xa1, 0xff,
- 0x2e, 0x7d, 0xc8, 0xd2, 0xd3, 0xec, 0x01, 0x87, 0x2c, 0x7d, 0x6d, 0x52, 0x7a, 0xb4, 0xc9, 0x37,
- 0x08, 0x32, 0x12, 0x06, 0x01, 0xcf, 0xf9, 0xac, 0xa4, 0x31, 0xfd, 0x5a, 0xa9, 0x53, 0x9c, 0x51,
- 0xcd, 0x48, 0xbe, 0x87, 0x7a, 0xbf, 0x02, 0x73, 0xb4, 0xea, 0x45, 0xcb, 0xba, 0xb8, 0x6b, 0xd8,
- 0x17, 0xf9, 0xb9, 0xc5, 0x10, 0xe2, 0x16, 0xbe, 0x52, 0xf6, 0x29, 0x1e, 0xd9, 0x15, 0x11, 0xd9,
- 0x27, 0x84, 0xb3, 0xc4, 0xa3, 0x6b, 0x3c, 0x8b, 0x1b, 0x6f, 0xf6, 0x31, 0x7b, 0x86, 0x80, 0xd9,
- 0x93, 0x63, 0x13, 0x98, 0x3c, 0x76, 0x7f, 0xe2, 0x63, 0xe7, 0x75, 0xd8, 0x89, 0x61, 0xf7, 0x95,
- 0xe1, 0xb0, 0xf3, 0xe8, 0x1a, 0x02, 0xbb, 0x3c, 0x28, 0x17, 0xfd, 0x0d, 0x27, 0xf7, 0x91, 0x6f,
- 0x50, 0x26, 0x39, 0x34, 0x43, 0x48, 0x1e, 0x0b, 0x9a, 0x27, 0x45, 0x12, 0x2a, 0x9d, 0x44, 0x31,
- 0xfd, 0x92, 0xf4, 0x7a, 0x4b, 0x5f, 0x06, 0x51, 0xea, 0xc6, 0xa3, 0x95, 0x72, 0x8b, 0x35, 0xf2,
- 0x64, 0x26, 0x8f, 0xe6, 0x3f, 0x64, 0x60, 0xca, 0x3b, 0xea, 0xea, 0xa0, 0xcf, 0x70, 0x43, 0xf8,
- 0x69, 0xc8, 0x75, 0xad, 0x3d, 0xbb, 0x81, 0xd9, 0x0a, 0x18, 0x7b, 0x1b, 0x62, 0xb5, 0x66, 0xe0,
- 0xb8, 0x7c, 0x60, 0xe8, 0xcf, 0xc4, 0x1e, 0xfa, 0x43, 0x0d, 0x4b, 0xf4, 0x22, 0xe9, 0xc0, 0x84,
- 0x02, 0x2e, 0x55, 0xec, 0x3c, 0x1c, 0xc7, 0xea, 0x3f, 0x94, 0x9a, 0xef, 0x0f, 0x68, 0x49, 0x3c,
- 0xb1, 0xaa, 0x0c, 0x61, 0x54, 0x3e, 0x02, 0xae, 0xf6, 0x72, 0x30, 0x6b, 0x92, 0x58, 0x8f, 0x9b,
- 0xfa, 0x5a, 0x5e, 0x41, 0xcf, 0xc9, 0x40, 0x9e, 0x92, 0x56, 0xf1, 0x0d, 0x2b, 0xf4, 0xf2, 0x23,
- 0xb7, 0x1e, 0xc3, 0xa7, 0x83, 0x9f, 0x4d, 0xcb, 0x06, 0x3f, 0x12, 0x18, 0x1f, 0xb4, 0x2e, 0x44,
- 0x92, 0x86, 0x50, 0xa5, 0x08, 0xe1, 0x43, 0xbf, 0x91, 0x92, 0x89, 0xa5, 0x24, 0x47, 0x62, 0xf2,
- 0x3d, 0xcf, 0xeb, 0x33, 0x5e, 0x54, 0x82, 0x65, 0xdb, 0xda, 0xdd, 0xb4, 0x5b, 0xe8, 0x43, 0x52,
- 0xa1, 0xea, 0x42, 0x4c, 0xf5, 0x74, 0xa8, 0xa9, 0xee, 0x0e, 0xd1, 0x7b, 0x76, 0xcb, 0x1b, 0xa2,
- 0xf7, 0xec, 0xd6, 0x10, 0x43, 0xb4, 0x7a, 0x13, 0xcc, 0x19, 0xcd, 0xe6, 0x86, 0xb1, 0x8d, 0x8b,
- 0xee, 0x1c, 0xb8, 0xed, 0xb0, 0x13, 0xcb, 0x3d, 0xa9, 0x31, 0x76, 0xc6, 0x04, 0x20, 0x18, 0x0f,
- 0x1e, 0x4e, 0x3b, 0x63, 0x12, 0xf4, 0x25, 0x2f, 0x25, 0xbf, 0x9b, 0x86, 0x89, 0xe2, 0x8e, 0x41,
- 0x76, 0xc6, 0x1e, 0x2d, 0x84, 0x0c, 0x09, 0xdd, 0x9b, 0x7c, 0x81, 0xf4, 0xa6, 0xb0, 0xd7, 0x42,
- 0x5a, 0x7e, 0x08, 0xef, 0x4f, 0x43, 0xae, 0xb1, 0x63, 0x04, 0x9c, 0x67, 0x6f, 0x92, 0x7b, 0xbf,
- 0x91, 0x55, 0x24, 0xcf, 0xbe, 0x4f, 0xa4, 0x61, 0xd6, 0xb3, 0xfb, 0x97, 0xb1, 0xd3, 0xd8, 0x41,
- 0x77, 0xca, 0x2e, 0xf0, 0x30, 0xad, 0x49, 0xfb, 0x5a, 0x83, 0x7e, 0x90, 0x8a, 0x29, 0xda, 0x42,
- 0xcd, 0x21, 0xab, 0x63, 0xb1, 0x64, 0x31, 0xaa, 0xc0, 0xe4, 0x99, 0xf9, 0xe5, 0x34, 0x40, 0xcd,
- 0xf2, 0xe7, 0x9f, 0x87, 0xe0, 0xe4, 0x4b, 0xa4, 0x63, 0xc0, 0xb3, 0x86, 0x07, 0xd5, 0xc6, 0xef,
- 0x21, 0x24, 0xb7, 0xb6, 0x06, 0xd5, 0x34, 0x16, 0x5d, 0x9f, 0x5a, 0xda, 0xeb, 0xb4, 0xcc, 0x86,
- 0xe1, 0xf4, 0xee, 0xc7, 0x86, 0xb3, 0x97, 0x5c, 0xe6, 0x12, 0xcb, 0xc0, 0xf3, 0xeb, 0x08, 0xe1,
- 0x25, 0x3d, 0xca, 0x9a, 0xf6, 0x8e, 0xb2, 0x4a, 0xee, 0xb1, 0x0c, 0x28, 0x7c, 0x0c, 0xe2, 0xa9,
- 0xc0, 0xf1, 0x4a, 0x07, 0xb7, 0x17, 0x6d, 0x6c, 0x34, 0x1b, 0xf6, 0xde, 0xee, 0x85, 0x2e, 0xef,
- 0x4c, 0x10, 0x2d, 0xa3, 0xdc, 0x92, 0x6d, 0x5a, 0x58, 0xb2, 0x45, 0xcf, 0x53, 0x64, 0x0f, 0x56,
- 0x73, 0x1b, 0x0b, 0x1c, 0x0d, 0x43, 0x0c, 0x69, 0xb1, 0xb6, 0xc0, 0x7a, 0x56, 0x67, 0x33, 0x71,
- 0x56, 0x67, 0xdf, 0x22, 0x75, 0x4c, 0x5b, 0xaa, 0x5d, 0x63, 0xd9, 0xc9, 0x9c, 0xab, 0x62, 0x27,
- 0x04, 0xde, 0x1b, 0x61, 0xf6, 0x42, 0xf0, 0xc5, 0x87, 0x58, 0x4c, 0xec, 0xe3, 0x5f, 0xf0, 0xd6,
- 0xb8, 0x2b, 0x26, 0x22, 0x09, 0x21, 0xe8, 0xfa, 0x08, 0xa6, 0x65, 0x36, 0x31, 0x63, 0x2d, 0x7f,
- 0x44, 0xd6, 0x3f, 0x06, 0x3f, 0xc3, 0x34, 0x4c, 0x93, 0x2b, 0x6a, 0x16, 0xaf, 0x10, 0xdf, 0x77,
- 0x49, 0xa3, 0xe4, 0x85, 0x3c, 0x9b, 0x55, 0xc8, 0xb4, 0xcc, 0xf6, 0x45, 0x6f, 0xf7, 0xd9, 0x7d,
- 0x0e, 0x2e, 0x3c, 0x48, 0xf7, 0xb9, 0xf0, 0xc0, 0xdf, 0x1f, 0xf0, 0xeb, 0x3d, 0xd4, 0x0d, 0x5c,
- 0x03, 0x8b, 0x4b, 0x9e, 0x8d, 0x7f, 0x9a, 0x81, 0x5c, 0x15, 0x1b, 0x76, 0x63, 0x07, 0xbd, 0x8a,
- 0x8b, 0x22, 0xb0, 0x0c, 0x13, 0x5b, 0x66, 0xcb, 0xc1, 0x36, 0xf5, 0xbb, 0xe1, 0x3b, 0x70, 0xaa,
- 0xc8, 0x8b, 0x2d, 0xab, 0x71, 0x71, 0x81, 0x19, 0xdb, 0x0b, 0x5e, 0x40, 0xa6, 0x85, 0x65, 0xf2,
- 0x93, 0xee, 0xfd, 0xec, 0x9a, 0x7d, 0x5d, 0xcb, 0x76, 0xc2, 0x22, 0x9c, 0x86, 0x94, 0x52, 0xb5,
- 0x6c, 0x47, 0xa7, 0x3f, 0xba, 0x60, 0x6e, 0xed, 0xb5, 0x5a, 0x35, 0x7c, 0xd9, 0xf1, 0x26, 0x5a,
- 0xde, 0xbb, 0x6b, 0x12, 0x5a, 0x5b, 0x5b, 0x5d, 0x4c, 0xa7, 0xf9, 0x59, 0x9d, 0xbd, 0xa9, 0x27,
- 0x21, 0xdb, 0x32, 0x77, 0x4d, 0x3a, 0x35, 0xc8, 0xea, 0xf4, 0x45, 0xbd, 0x05, 0xf2, 0xc1, 0xac,
- 0x84, 0x12, 0x3a, 0x9f, 0x23, 0x0a, 0x78, 0x20, 0xdd, 0x95, 0x8c, 0x8b, 0xf8, 0x4a, 0x77, 0x7e,
- 0x82, 0x7c, 0x27, 0xcf, 0xa2, 0x93, 0xa3, 0xcc, 0x4e, 0x03, 0xe5, 0x6b, 0xf8, 0x9c, 0xd3, 0xc6,
- 0x0d, 0xcb, 0x6e, 0x7a, 0xbc, 0x09, 0x9f, 0x2e, 0xb0, 0x7c, 0xf1, 0xf6, 0x07, 0xfa, 0x56, 0x9e,
- 0xbc, 0x3c, 0xbd, 0x22, 0xe7, 0x76, 0x8e, 0x6e, 0xd5, 0xe7, 0x4d, 0x67, 0x67, 0x1d, 0x3b, 0x06,
- 0xfa, 0x53, 0xe5, 0x7f, 0xcb, 0x55, 0x84, 0x5c, 0xd1, 0x03, 0xf5, 0xce, 0x9e, 0xdd, 0x76, 0xb9,
- 0xc5, 0x42, 0x58, 0x71, 0x29, 0xea, 0xdd, 0x70, 0x4d, 0xf0, 0xe6, 0x2d, 0x53, 0x2e, 0xb1, 0xa9,
- 0xe6, 0x14, 0xc9, 0x1e, 0x9e, 0x41, 0xdd, 0x80, 0x1b, 0xe8, 0xc7, 0xd5, 0xda, 0xfa, 0xda, 0xaa,
- 0xb9, 0xbd, 0xd3, 0x32, 0xb7, 0x77, 0x9c, 0x6e, 0xa9, 0xdd, 0x75, 0xb0, 0xd1, 0xac, 0x6c, 0xe9,
- 0x34, 0x02, 0x31, 0x90, 0x72, 0x64, 0xb2, 0x8a, 0xde, 0x37, 0x72, 0x23, 0x15, 0x2f, 0x0f, 0x21,
- 0xfa, 0xf0, 0x64, 0x57, 0x1f, 0xba, 0x7b, 0x2d, 0x1f, 0xd3, 0x6b, 0x7b, 0x30, 0x0d, 0x04, 0x7a,
- 0xaf, 0x45, 0x94, 0x82, 0x64, 0x8e, 0x3b, 0x66, 0x45, 0x50, 0x92, 0xbc, 0x72, 0xfc, 0x7f, 0x39,
- 0xc8, 0xae, 0xd8, 0x46, 0x67, 0x07, 0x3d, 0x27, 0x81, 0xbe, 0xd6, 0x97, 0xce, 0xf4, 0x20, 0xe9,
- 0x54, 0x06, 0x48, 0x67, 0x86, 0x93, 0xce, 0x70, 0x4f, 0x81, 0xb3, 0x30, 0xd3, 0xb0, 0x5a, 0x2d,
- 0xdc, 0x70, 0xf9, 0x51, 0x6a, 0x92, 0xa8, 0x2b, 0x53, 0xba, 0x90, 0x46, 0x42, 0xd3, 0x61, 0xa7,
- 0x4a, 0xd7, 0xaf, 0xa9, 0xd0, 0x07, 0x09, 0xe8, 0xe5, 0x69, 0xc8, 0x68, 0xcd, 0x6d, 0x2c, 0xac,
- 0x71, 0xa7, 0xb8, 0x35, 0xee, 0xd3, 0x90, 0x73, 0x0c, 0x7b, 0x1b, 0x3b, 0xde, 0x9c, 0x9f, 0xbe,
- 0xf9, 0x11, 0xf3, 0x14, 0x2e, 0x62, 0xde, 0x53, 0x20, 0xe3, 0xf2, 0x8c, 0xc5, 0xa2, 0xb9, 0xa1,
- 0x1f, 0xfc, 0x84, 0xf7, 0x0b, 0x6e, 0x8d, 0x0b, 0x6e, 0xab, 0x75, 0xf2, 0x43, 0x2f, 0xd6, 0xd9,
- 0x03, 0x58, 0x93, 0xcb, 0x54, 0x1a, 0x56, 0xbb, 0xb4, 0x6b, 0x6c, 0x63, 0xd6, 0xcc, 0x20, 0xc1,
- 0xfb, 0xaa, 0xed, 0x5a, 0x0f, 0x9a, 0x2c, 0x78, 0x5d, 0x90, 0xe0, 0x36, 0x61, 0xc7, 0x6c, 0x36,
- 0x71, 0x9b, 0x69, 0x36, 0x7b, 0x3b, 0x7b, 0x06, 0x32, 0x2e, 0x0d, 0xae, 0xfc, 0xb8, 0x03, 0x7f,
- 0xfe, 0x98, 0x3a, 0xe3, 0xaa, 0x15, 0x55, 0xde, 0x7c, 0x4a, 0x5c, 0xeb, 0x94, 0x71, 0x7d, 0xa1,
- 0x8d, 0xeb, 0xaf, 0x5c, 0x8f, 0x83, 0x6c, 0xdb, 0x6a, 0xe2, 0x81, 0x43, 0x0d, 0xcd, 0xa5, 0x3e,
- 0x11, 0xb2, 0xb8, 0xe9, 0xf6, 0x0a, 0x0a, 0xc9, 0x7e, 0x26, 0x9a, 0x97, 0x3a, 0xcd, 0x1c, 0xcf,
- 0xbf, 0xa6, 0x1f, 0xb5, 0xc9, 0x2b, 0xe0, 0xaf, 0x4c, 0xc0, 0x71, 0xda, 0x07, 0x54, 0xf7, 0x2e,
- 0xb8, 0x45, 0x5d, 0xc0, 0xe8, 0x3d, 0x8a, 0x10, 0xa2, 0xb3, 0xbb, 0x77, 0xc1, 0x37, 0x1b, 0xe9,
- 0x0b, 0xaf, 0xa0, 0xe9, 0x91, 0x0c, 0x5a, 0xca, 0xb0, 0x83, 0x96, 0x30, 0x00, 0x29, 0x9e, 0x8a,
- 0x07, 0xc3, 0x55, 0x8e, 0x24, 0x7b, 0xc3, 0x55, 0xbf, 0xc1, 0x66, 0x1e, 0x26, 0x8c, 0x2d, 0x07,
- 0xdb, 0xa5, 0x26, 0x91, 0xc7, 0x29, 0xdd, 0x7b, 0x75, 0x07, 0xc4, 0x0b, 0x78, 0xcb, 0xb2, 0x5d,
- 0x4d, 0x9f, 0xa2, 0x03, 0xa2, 0xf7, 0xce, 0xe9, 0x27, 0x08, 0x7b, 0x50, 0x37, 0xc3, 0x71, 0x73,
- 0xbb, 0x6d, 0xd9, 0xd8, 0x77, 0x6c, 0x9c, 0x9f, 0xa1, 0x27, 0xf1, 0x7b, 0x92, 0xd5, 0x5b, 0xe1,
- 0x44, 0xdb, 0x5a, 0xc2, 0x1d, 0xc6, 0x77, 0x8a, 0xea, 0x2c, 0xd1, 0x88, 0x83, 0x1f, 0x0e, 0x74,
- 0x2d, 0x73, 0x07, 0xbb, 0x16, 0xf4, 0xe9, 0xb8, 0xf3, 0xe1, 0x1e, 0xe0, 0x47, 0x66, 0x97, 0xa9,
- 0x4f, 0x83, 0x99, 0x26, 0x73, 0x7b, 0x6a, 0x98, 0xbe, 0xd6, 0x84, 0xfe, 0x27, 0x64, 0x0e, 0x44,
- 0x2e, 0xc3, 0x8b, 0xdc, 0x0a, 0x4c, 0x92, 0x43, 0x2e, 0xae, 0xcc, 0x65, 0x7b, 0x22, 0xfd, 0x91,
- 0x29, 0x9b, 0xdf, 0x28, 0x8e, 0x6d, 0x0b, 0x45, 0xf6, 0x8b, 0xee, 0xff, 0x1c, 0x6f, 0x66, 0x1d,
- 0xcd, 0xa1, 0xe4, 0xd5, 0xf3, 0xb3, 0x19, 0x38, 0xbe, 0x62, 0x5b, 0x7b, 0x9d, 0x6e, 0xa0, 0x9e,
- 0x7f, 0xd3, 0x7f, 0x33, 0x22, 0x27, 0x8e, 0x45, 0xfd, 0x15, 0xf7, 0x7a, 0x98, 0xb6, 0x59, 0x8f,
- 0x1a, 0x6c, 0x4d, 0xf0, 0x49, 0xbc, 0x6a, 0x2b, 0x87, 0x51, 0xed, 0x40, 0x41, 0x32, 0x82, 0x82,
- 0xf4, 0x0a, 0x72, 0xb6, 0x8f, 0x20, 0xff, 0x75, 0x3a, 0xa6, 0x20, 0xf7, 0xb0, 0x28, 0x44, 0x90,
- 0x8b, 0x90, 0xdb, 0x26, 0x19, 0x99, 0x1c, 0x3f, 0x56, 0xae, 0x65, 0xa4, 0x70, 0x9d, 0xfd, 0x1a,
- 0xf0, 0x55, 0xe1, 0xf8, 0x1a, 0x4f, 0xa8, 0xa2, 0xa9, 0x4d, 0x5e, 0xa8, 0xde, 0x99, 0x81, 0x19,
- 0xbf, 0x76, 0x72, 0x6e, 0x24, 0x35, 0xa8, 0xc3, 0x3f, 0xb0, 0x3a, 0xe3, 0x77, 0xa5, 0x0a, 0xd7,
- 0x95, 0xf6, 0xe9, 0xfc, 0xa6, 0x63, 0x74, 0x7e, 0x33, 0x21, 0x9d, 0x1f, 0x7a, 0xb6, 0x22, 0x1b,
- 0x11, 0x5a, 0xec, 0x03, 0x48, 0xeb, 0x1e, 0xce, 0xbd, 0x9a, 0x64, 0x5c, 0xea, 0xc1, 0xad, 0x4a,
- 0x5e, 0x68, 0x3e, 0x98, 0x86, 0x13, 0xb4, 0x37, 0xdc, 0x6c, 0x77, 0xfd, 0xbe, 0xe8, 0x51, 0xa2,
- 0x57, 0x86, 0xdb, 0xa6, 0xae, 0xef, 0x95, 0x41, 0xde, 0xc4, 0x45, 0xf0, 0xc8, 0x23, 0x5f, 0x42,
- 0x9f, 0xcb, 0xd5, 0x12, 0xb2, 0xa2, 0x24, 0x77, 0xa8, 0x4b, 0xb2, 0xd0, 0xe4, 0x19, 0xf8, 0x4b,
- 0x0a, 0x4c, 0x55, 0xb1, 0xb3, 0x66, 0x5c, 0xb1, 0xf6, 0x1c, 0x64, 0xc8, 0x2e, 0x7f, 0x3f, 0x15,
- 0x72, 0x2d, 0xf2, 0x0b, 0xbb, 0xde, 0xec, 0xfa, 0xbe, 0xeb, 0xc7, 0x64, 0x9f, 0x9c, 0x16, 0xad,
- 0xb3, 0xfc, 0xe2, 0x59, 0x3b, 0x99, 0xdd, 0x07, 0x9f, 0xba, 0x91, 0x2c, 0x9d, 0xc6, 0xda, 0x9b,
- 0x08, 0xab, 0x3a, 0x79, 0x58, 0x9e, 0xa7, 0xc0, 0x6c, 0x15, 0x3b, 0xa5, 0xee, 0xb2, 0xb1, 0x6f,
- 0xd9, 0xa6, 0x83, 0xf9, 0x9b, 0x36, 0xa2, 0xa1, 0x39, 0x03, 0x60, 0xfa, 0xbf, 0xb1, 0x50, 0xeb,
- 0x5c, 0x0a, 0xfa, 0x8d, 0xb8, 0x1b, 0xee, 0x02, 0x1d, 0x23, 0x01, 0x21, 0xd6, 0x1e, 0x66, 0x54,
- 0xf5, 0xc9, 0x03, 0xf1, 0x85, 0x34, 0x03, 0xa2, 0x60, 0x37, 0x76, 0xcc, 0x7d, 0xdc, 0x8c, 0x09,
- 0x84, 0xf7, 0x5b, 0x00, 0x84, 0x5f, 0x50, 0xec, 0xed, 0x61, 0x81, 0x8e, 0x51, 0x6c, 0x0f, 0x47,
- 0x15, 0x38, 0x96, 0x43, 0xbc, 0x6e, 0xd7, 0xc3, 0xd6, 0x18, 0xee, 0x95, 0x65, 0x6b, 0x60, 0xc2,
- 0xa5, 0x79, 0x13, 0x6e, 0xa8, 0x8e, 0x85, 0xd6, 0x3d, 0x48, 0xa6, 0x33, 0x49, 0x74, 0x2c, 0x7d,
- 0xab, 0x4e, 0x9e, 0xe9, 0xef, 0x55, 0xe0, 0x94, 0x6f, 0xf0, 0x54, 0xb1, 0xb3, 0x64, 0x74, 0x77,
- 0x2e, 0x58, 0x86, 0xdd, 0xe4, 0xaf, 0xbd, 0x1b, 0xfa, 0x24, 0x0b, 0xfa, 0x4b, 0x1e, 0x84, 0xb2,
- 0x08, 0x42, 0x5f, 0xb7, 0xaa, 0xbe, 0xb4, 0x8c, 0xa2, 0x93, 0x89, 0xf4, 0xfc, 0xfa, 0x2d, 0x1f,
- 0xac, 0x1f, 0x15, 0xc0, 0xba, 0x67, 0x58, 0x12, 0x93, 0x07, 0xee, 0x97, 0xe9, 0x88, 0xc0, 0x79,
- 0x00, 0x3e, 0x20, 0x0b, 0x58, 0x88, 0x07, 0x98, 0x12, 0x7e, 0x58, 0x63, 0x98, 0x31, 0x62, 0xa0,
- 0xf7, 0x5e, 0xb2, 0x63, 0xc4, 0x11, 0x7a, 0xe6, 0xbd, 0x53, 0x81, 0x3c, 0x39, 0xde, 0xcc, 0x79,
- 0x47, 0xa2, 0x07, 0x65, 0xd1, 0x39, 0xe0, 0x89, 0x39, 0x11, 0xd7, 0x13, 0x13, 0xbd, 0x23, 0xae,
- 0xbf, 0x65, 0x2f, 0xb5, 0x23, 0x41, 0x2c, 0x96, 0x3b, 0xe5, 0x00, 0x0a, 0x92, 0x07, 0xed, 0x3f,
- 0x2b, 0x00, 0xae, 0x42, 0x33, 0x17, 0xbf, 0x67, 0xca, 0xc2, 0x75, 0x1b, 0xef, 0x83, 0xea, 0x02,
- 0x75, 0xaa, 0x07, 0x28, 0x5a, 0x62, 0xe0, 0x3c, 0xf8, 0xc6, 0xb8, 0xbe, 0x4b, 0x01, 0x55, 0x23,
- 0x81, 0x25, 0x96, 0x37, 0x53, 0x68, 0xdd, 0xc9, 0x03, 0xf2, 0xdb, 0x69, 0xc8, 0xd6, 0xac, 0x2a,
- 0x76, 0x0e, 0x6f, 0x0a, 0xc4, 0x3e, 0x8e, 0x4a, 0xea, 0x1d, 0xc5, 0x71, 0xd4, 0x7e, 0x05, 0x25,
- 0xcf, 0xba, 0xf7, 0xa4, 0x61, 0xa6, 0x66, 0x15, 0xfd, 0xc5, 0x2a, 0x79, 0x5f, 0x30, 0xf9, 0x5b,
- 0xad, 0xfc, 0x06, 0x06, 0xd5, 0x1c, 0xea, 0x56, 0xab, 0xc1, 0xe5, 0x25, 0xcf, 0xb7, 0x3b, 0xe1,
- 0xf8, 0x66, 0xbb, 0x69, 0xe9, 0xb8, 0x69, 0xb1, 0x25, 0x59, 0x55, 0x85, 0xcc, 0x5e, 0xbb, 0x69,
- 0x11, 0x92, 0xb3, 0x3a, 0x79, 0x76, 0xd3, 0x6c, 0xdc, 0xb4, 0xd8, 0x7e, 0x1d, 0x79, 0x46, 0x5f,
- 0x57, 0x20, 0xe3, 0xfe, 0x2b, 0xcf, 0xea, 0x77, 0x2a, 0x31, 0x0f, 0xd8, 0xba, 0xc5, 0x8f, 0xc4,
- 0x12, 0xba, 0x97, 0x5b, 0xa4, 0xa6, 0x1e, 0x62, 0x37, 0x84, 0xd5, 0xc7, 0xb1, 0x22, 0x58, 0x9c,
- 0x56, 0xe7, 0x61, 0xe2, 0x42, 0xcb, 0x6a, 0x5c, 0x0c, 0xce, 0x81, 0xb2, 0x57, 0xf5, 0x16, 0xc8,
- 0xda, 0x46, 0x7b, 0x1b, 0xb3, 0xc5, 0xef, 0x93, 0x3d, 0x7d, 0x21, 0xd9, 0x89, 0xd6, 0x69, 0x16,
- 0xf4, 0x8e, 0x38, 0x47, 0x7b, 0xfb, 0x34, 0x3e, 0x9e, 0x3c, 0x2c, 0x0d, 0x71, 0x0a, 0x23, 0x0f,
- 0x33, 0xc5, 0x02, 0xbd, 0x3f, 0x6e, 0xbd, 0x72, 0x4e, 0xcb, 0x2b, 0x04, 0x66, 0x97, 0x27, 0x09,
- 0xc2, 0xec, 0x16, 0xff, 0xef, 0x16, 0xe6, 0x3e, 0x8d, 0x3f, 0x0a, 0x98, 0x3f, 0x91, 0x86, 0xd9,
- 0x35, 0xb3, 0xeb, 0x84, 0x79, 0xd3, 0x46, 0x44, 0x37, 0x7a, 0x51, 0x5c, 0x53, 0x59, 0xa8, 0x47,
- 0x3a, 0xac, 0x51, 0x2c, 0x73, 0x38, 0xaa, 0x8a, 0xf1, 0xb8, 0x7d, 0x13, 0x0a, 0xe8, 0x9d, 0x4f,
- 0xd2, 0x9c, 0x8c, 0x6d, 0x28, 0x05, 0x95, 0x8c, 0xdf, 0x50, 0x0a, 0xad, 0x3b, 0x79, 0xfe, 0x7e,
- 0x3d, 0x0d, 0x27, 0xdc, 0xea, 0xa3, 0x96, 0xa5, 0xc2, 0xd9, 0x3c, 0x70, 0x59, 0x2a, 0xf6, 0xca,
- 0xf8, 0x01, 0x5a, 0x46, 0xb1, 0x32, 0x3e, 0xa8, 0xd0, 0x31, 0xb3, 0x39, 0x64, 0x19, 0x76, 0x10,
- 0x9b, 0x23, 0x96, 0x61, 0x87, 0x67, 0x73, 0xf4, 0x52, 0xec, 0x90, 0x6c, 0x3e, 0xb2, 0x05, 0xd6,
- 0x37, 0x28, 0x3e, 0x9b, 0x43, 0xd7, 0x36, 0x22, 0xd8, 0x1c, 0xfb, 0x74, 0x1b, 0x7a, 0xd7, 0x90,
- 0x8c, 0x1f, 0xf1, 0xfa, 0xc6, 0x30, 0x30, 0x1d, 0xe1, 0x1a, 0xc7, 0x2b, 0x14, 0x98, 0x63, 0x54,
- 0xf4, 0x9f, 0x32, 0x47, 0x60, 0x14, 0x7b, 0xca, 0x1c, 0xdb, 0xc7, 0x5e, 0xa4, 0x6c, 0xfc, 0x3e,
- 0xf6, 0x91, 0xf5, 0x27, 0x0f, 0xce, 0x37, 0x32, 0x70, 0xda, 0x25, 0x61, 0xdd, 0x6a, 0x9a, 0x5b,
- 0x57, 0x28, 0x15, 0xe7, 0x8c, 0xd6, 0x1e, 0xee, 0xa2, 0xf7, 0xa7, 0x65, 0x51, 0xfa, 0x3f, 0x00,
- 0xac, 0x0e, 0xb6, 0x69, 0x80, 0x20, 0x06, 0xd4, 0xdd, 0x61, 0x8d, 0x3d, 0x58, 0x93, 0x1f, 0xd2,
- 0xb7, 0xe2, 0x15, 0xa2, 0x73, 0xe5, 0xb9, 0x56, 0xe1, 0x94, 0xff, 0xa5, 0xd7, 0xe1, 0x23, 0x75,
- 0xd0, 0xe1, 0xe3, 0x66, 0x50, 0x8c, 0x66, 0xd3, 0x87, 0xaa, 0x77, 0x33, 0x9b, 0xd4, 0xa9, 0xbb,
- 0x59, 0xdc, 0x9c, 0x5d, 0x1c, 0x1c, 0x7d, 0x09, 0xc9, 0xd9, 0xc5, 0x8e, 0xba, 0x00, 0x39, 0x7a,
- 0xff, 0x95, 0xbf, 0xa2, 0xdf, 0x3f, 0x33, 0xcb, 0x25, 0x9a, 0x76, 0x15, 0x51, 0x0c, 0xef, 0x8c,
- 0xc5, 0x99, 0x7e, 0xfd, 0x74, 0x60, 0x27, 0xeb, 0x82, 0x80, 0x3d, 0x7d, 0xe8, 0x92, 0xc7, 0xb3,
- 0x1b, 0x56, 0xe8, 0x74, 0x5a, 0x57, 0x6a, 0x2c, 0x18, 0x41, 0xac, 0xdd, 0x30, 0x2e, 0xa6, 0x41,
- 0xba, 0x37, 0xa6, 0x41, 0xfc, 0xdd, 0x30, 0x81, 0x8e, 0x51, 0xec, 0x86, 0x45, 0x15, 0x38, 0x86,
- 0xf5, 0xc8, 0x2c, 0xb5, 0x9a, 0x59, 0xec, 0xc5, 0x37, 0xa7, 0xfb, 0xba, 0x53, 0x81, 0xe8, 0x4e,
- 0xd5, 0x2f, 0x2c, 0x63, 0x64, 0xcc, 0x59, 0xf5, 0x89, 0x90, 0xdb, 0xb2, 0xec, 0x5d, 0xc3, 0xdb,
- 0xb8, 0xef, 0xf5, 0xde, 0x66, 0xf1, 0x0e, 0x97, 0x49, 0x1e, 0x9d, 0xe5, 0x75, 0xe7, 0x23, 0xcf,
- 0x32, 0x3b, 0x2c, 0x9a, 0x98, 0xfb, 0xa8, 0xde, 0x08, 0xb3, 0x2c, 0xa8, 0x58, 0x19, 0x77, 0x1d,
- 0xdc, 0x64, 0xa7, 0xbb, 0xc5, 0x44, 0xf5, 0x2c, 0xcc, 0xb0, 0x84, 0x65, 0xb3, 0x85, 0xbb, 0xec,
- 0xc2, 0x47, 0x21, 0x4d, 0x3d, 0x0d, 0x39, 0xb3, 0xfb, 0x8c, 0xae, 0xd5, 0x26, 0x3e, 0xb9, 0x93,
- 0x3a, 0x7b, 0x23, 0x6e, 0x3b, 0x34, 0x9f, 0x6f, 0xac, 0x52, 0x27, 0xfa, 0xde, 0x64, 0xf4, 0xb9,
- 0x61, 0x26, 0x0e, 0xb1, 0xe3, 0x4c, 0xba, 0x28, 0xec, 0x35, 0x1a, 0x18, 0x37, 0xd9, 0x69, 0x03,
- 0xef, 0x35, 0x66, 0x04, 0xca, 0xd8, 0xd3, 0x8c, 0x23, 0x0a, 0x41, 0xf9, 0xa1, 0x53, 0x90, 0xa3,
- 0x41, 0xdb, 0xd1, 0x4b, 0xe7, 0xfa, 0x0a, 0xe3, 0x9c, 0x28, 0x8c, 0x9b, 0x30, 0xd3, 0xb6, 0xdc,
- 0xea, 0x36, 0x0c, 0xdb, 0xd8, 0xed, 0x46, 0xad, 0x22, 0xd2, 0x72, 0xfd, 0x21, 0xa3, 0xcc, 0xfd,
- 0xb6, 0x7a, 0x4c, 0x17, 0x8a, 0x51, 0xff, 0x4f, 0x38, 0x7e, 0x81, 0x9d, 0xb0, 0xed, 0xb2, 0x92,
- 0xd3, 0xe1, 0x3e, 0x77, 0x3d, 0x25, 0x2f, 0x8a, 0x7f, 0xae, 0x1e, 0xd3, 0x7b, 0x0b, 0x53, 0x7f,
- 0x1c, 0xe6, 0xdc, 0xd7, 0xa6, 0x75, 0xc9, 0x23, 0x5c, 0x09, 0x37, 0x34, 0x7a, 0x8a, 0x5f, 0x17,
- 0x7e, 0x5c, 0x3d, 0xa6, 0xf7, 0x14, 0xa5, 0x56, 0x00, 0x76, 0x9c, 0xdd, 0x16, 0x2b, 0x38, 0x13,
- 0x2e, 0x92, 0x3d, 0x05, 0xaf, 0xfa, 0x3f, 0xad, 0x1e, 0xd3, 0xb9, 0x22, 0xd4, 0x35, 0x98, 0x72,
- 0x2e, 0x3b, 0xac, 0xbc, 0x6c, 0xf8, 0xe6, 0x76, 0x4f, 0x79, 0x35, 0xef, 0x9f, 0xd5, 0x63, 0x7a,
- 0x50, 0x80, 0x5a, 0x82, 0xc9, 0xce, 0x05, 0x56, 0x58, 0xae, 0xcf, 0x45, 0xd5, 0xfd, 0x0b, 0xdb,
- 0xb8, 0xe0, 0x97, 0xe5, 0xff, 0xee, 0x12, 0xd6, 0xe8, 0xee, 0xb3, 0xb2, 0x26, 0xa4, 0x09, 0x2b,
- 0x7a, 0xff, 0xb8, 0x84, 0xf9, 0x05, 0xa8, 0x25, 0x98, 0xea, 0xb6, 0x8d, 0x4e, 0x77, 0xc7, 0x72,
- 0xba, 0xf3, 0x93, 0x3d, 0x7e, 0x91, 0xe1, 0xa5, 0x55, 0xd9, 0x3f, 0x7a, 0xf0, 0xb7, 0xfa, 0x44,
- 0x38, 0xb5, 0x47, 0x2e, 0xbf, 0xd3, 0x2e, 0x9b, 0x5d, 0xc7, 0x6c, 0x6f, 0x7b, 0xb1, 0x11, 0x69,
- 0x6f, 0xd2, 0xff, 0xa3, 0xba, 0xc0, 0x4e, 0x29, 0x00, 0xd1, 0x4d, 0xd4, 0xbb, 0x19, 0x47, 0xab,
- 0xe5, 0x0e, 0x27, 0x3c, 0x0d, 0x32, 0xee, 0x27, 0xe2, 0x59, 0x38, 0xd7, 0x7f, 0xa1, 0xaf, 0x57,
- 0x76, 0x88, 0x02, 0xbb, 0x3f, 0xb9, 0x63, 0x63, 0xdb, 0xda, 0xb0, 0xad, 0x6d, 0x1b, 0x77, 0xbb,
- 0xcc, 0xe1, 0x90, 0x4b, 0x71, 0x15, 0xdc, 0xec, 0xae, 0x9b, 0xdb, 0xd4, 0x7a, 0x62, 0xee, 0xd8,
- 0x7c, 0x12, 0x9d, 0x6d, 0x96, 0xf1, 0x25, 0x72, 0xa1, 0xda, 0xfc, 0x71, 0x6f, 0xb6, 0xe9, 0xa5,
- 0xa0, 0x9b, 0x60, 0x86, 0x57, 0x32, 0x7a, 0xf3, 0x8b, 0x19, 0xd8, 0x5e, 0xec, 0x0d, 0xdd, 0x08,
- 0x73, 0xa2, 0x4c, 0x73, 0x43, 0x8c, 0xe2, 0x75, 0x85, 0xe8, 0x06, 0x38, 0xde, 0xa3, 0x58, 0xde,
- 0x99, 0xfd, 0x54, 0x70, 0x66, 0xff, 0x7a, 0x80, 0x40, 0x8a, 0xfb, 0x16, 0x73, 0x1d, 0x4c, 0xf9,
- 0x72, 0xd9, 0x37, 0xc3, 0x57, 0x53, 0x30, 0xe9, 0x09, 0x5b, 0xbf, 0x0c, 0xee, 0xf8, 0xd2, 0xe6,
- 0x36, 0x10, 0xd8, 0x34, 0x5b, 0x48, 0x73, 0xc7, 0x91, 0xc0, 0x8d, 0xb7, 0x66, 0x3a, 0x2d, 0xef,
- 0x38, 0x4a, 0x6f, 0xb2, 0xba, 0x01, 0x60, 0x12, 0x8c, 0x6a, 0xc1, 0xf9, 0x94, 0xc7, 0xc7, 0xd0,
- 0x07, 0x2a, 0x0f, 0x5c, 0x19, 0x67, 0x1f, 0xc5, 0x0e, 0x8f, 0x4c, 0x41, 0xb6, 0xba, 0x51, 0x28,
- 0x6a, 0xf9, 0x63, 0xea, 0x1c, 0x80, 0xf6, 0xcc, 0x0d, 0x4d, 0x2f, 0x69, 0xe5, 0xa2, 0x96, 0x4f,
- 0xa1, 0x57, 0xa6, 0x61, 0xca, 0x57, 0x82, 0xbe, 0x8d, 0xd4, 0x98, 0x68, 0x0d, 0xbc, 0x5c, 0xe3,
- 0xa0, 0x52, 0xf1, 0x42, 0xf6, 0x54, 0xb8, 0x7a, 0xaf, 0x8b, 0x97, 0x4d, 0xbb, 0xeb, 0xe8, 0xd6,
- 0xa5, 0x65, 0xcb, 0xf6, 0xa3, 0x81, 0x7a, 0x97, 0x48, 0x87, 0x7c, 0x76, 0x2d, 0x8a, 0x26, 0x26,
- 0x47, 0x18, 0xb0, 0xcd, 0x56, 0x86, 0x83, 0x04, 0xb7, 0x5c, 0x87, 0xde, 0xda, 0xdc, 0xc5, 0xba,
- 0x75, 0xa9, 0x5b, 0x68, 0x37, 0x8b, 0x56, 0x6b, 0x6f, 0xb7, 0xdd, 0x65, 0x36, 0x41, 0xd8, 0x67,
- 0x97, 0x3b, 0xe4, 0xea, 0x9c, 0x39, 0x80, 0x62, 0x65, 0x6d, 0x4d, 0x2b, 0xd6, 0x4a, 0x95, 0x72,
- 0xfe, 0x98, 0xcb, 0xad, 0x5a, 0x61, 0x71, 0xcd, 0xe5, 0xce, 0x4f, 0xc0, 0xa4, 0xa7, 0xd3, 0x07,
- 0x6e, 0xcc, 0x2e, 0xc0, 0xa4, 0xa7, 0xe5, 0x6c, 0x44, 0x78, 0x74, 0xef, 0x51, 0xb4, 0x5d, 0xc3,
- 0x76, 0x88, 0xff, 0xb4, 0x57, 0xc8, 0xa2, 0xd1, 0xc5, 0xba, 0xff, 0xdb, 0xd9, 0xc7, 0x31, 0x0a,
- 0x54, 0x98, 0x2b, 0xac, 0xad, 0xd5, 0x2b, 0x7a, 0xbd, 0x5c, 0xa9, 0xad, 0x96, 0xca, 0x2b, 0x74,
- 0x84, 0x2c, 0xad, 0x94, 0x2b, 0xba, 0x46, 0x07, 0xc8, 0x6a, 0x3e, 0x45, 0xaf, 0x6e, 0x5a, 0x9c,
- 0x84, 0x5c, 0x87, 0x70, 0x17, 0x7d, 0x49, 0x89, 0x79, 0xd2, 0xd4, 0xc7, 0x29, 0xe4, 0x72, 0x19,
- 0xc1, 0x07, 0x3d, 0xdd, 0xe7, 0x9c, 0xd6, 0x59, 0x98, 0xa1, 0xb6, 0x5c, 0x97, 0x2c, 0xdf, 0xb3,
- 0xfb, 0x19, 0x85, 0x34, 0xf4, 0x91, 0x74, 0x8c, 0xe3, 0xa7, 0x7d, 0x29, 0x8a, 0x67, 0x5c, 0xfc,
- 0xf9, 0x30, 0x57, 0x35, 0xa9, 0x30, 0x57, 0x2a, 0xd7, 0x34, 0xbd, 0x5c, 0x58, 0x63, 0x59, 0x14,
- 0x75, 0x1e, 0x4e, 0x96, 0x2b, 0x2c, 0xfe, 0x55, 0x95, 0x5c, 0x0a, 0xbb, 0xbe, 0x51, 0xd1, 0x6b,
- 0xf9, 0xac, 0x7a, 0x1a, 0x54, 0xfa, 0x2c, 0xdc, 0xa9, 0x9c, 0x53, 0x1f, 0x03, 0x37, 0xac, 0x95,
- 0xd6, 0x4b, 0xb5, 0x7a, 0x65, 0xb9, 0xae, 0x57, 0xce, 0x57, 0x5d, 0x04, 0x75, 0x6d, 0xad, 0xe0,
- 0x0a, 0x12, 0x77, 0x85, 0xd3, 0x84, 0x7a, 0x15, 0x1c, 0x27, 0xd7, 0xb3, 0x91, 0x7b, 0x99, 0x69,
- 0x7d, 0x93, 0xea, 0xb5, 0x30, 0x5f, 0x2a, 0x57, 0x37, 0x97, 0x97, 0x4b, 0xc5, 0x92, 0x56, 0xae,
- 0xd5, 0x37, 0x34, 0x7d, 0xbd, 0x54, 0xad, 0xba, 0xff, 0xe6, 0xa7, 0xd0, 0x87, 0x14, 0xc8, 0xd1,
- 0x3e, 0x13, 0xbd, 0x4f, 0x81, 0xd9, 0x73, 0x46, 0xcb, 0x74, 0x07, 0x0a, 0x72, 0x73, 0x16, 0xba,
- 0x4e, 0x70, 0x4d, 0x77, 0xc8, 0x0d, 0x5b, 0xcc, 0x35, 0x9d, 0xbc, 0xa0, 0x9f, 0xe1, 0x45, 0xa3,
- 0x26, 0x8a, 0xc6, 0xd3, 0x23, 0x80, 0xa0, 0x35, 0x2e, 0x08, 0xb5, 0x85, 0x4c, 0x6e, 0x5e, 0xeb,
- 0xe3, 0x7c, 0x5e, 0xc0, 0xb9, 0x78, 0xb8, 0xe2, 0xe3, 0x81, 0xff, 0x2b, 0xa3, 0x02, 0x3f, 0x0f,
- 0x33, 0x9b, 0xe5, 0xc2, 0x66, 0x6d, 0xb5, 0xa2, 0x97, 0x7e, 0x8c, 0x44, 0xd1, 0x9d, 0x85, 0xa9,
- 0xe5, 0x8a, 0xbe, 0x58, 0x5a, 0x5a, 0xd2, 0xca, 0xf9, 0xac, 0x7a, 0x35, 0x5c, 0x55, 0xd5, 0xf4,
- 0x73, 0xa5, 0xa2, 0x56, 0xdf, 0x2c, 0x17, 0xce, 0x15, 0x4a, 0x6b, 0xa4, 0x8f, 0xc8, 0x45, 0xdc,
- 0xfa, 0x35, 0x81, 0x7e, 0x2a, 0x03, 0x40, 0x9b, 0xee, 0x5a, 0xd2, 0xfc, 0xdd, 0x50, 0x7f, 0x11,
- 0x77, 0xd2, 0x10, 0x14, 0x13, 0xa2, 0xbf, 0x25, 0x98, 0xb4, 0xd9, 0x07, 0xb6, 0x7c, 0x32, 0xa8,
- 0x1c, 0xfa, 0xe8, 0x95, 0xa6, 0xfb, 0xbf, 0xa3, 0xf7, 0xc7, 0x99, 0x23, 0x84, 0x12, 0x16, 0x0f,
- 0xc9, 0xe5, 0xd1, 0x00, 0x89, 0x5e, 0x98, 0x82, 0x39, 0xb1, 0x61, 0x6e, 0x23, 0x88, 0x31, 0x25,
- 0xd7, 0x08, 0xf1, 0x67, 0xce, 0xc8, 0x3a, 0x7b, 0x07, 0x1b, 0x4e, 0xc1, 0xd3, 0x4c, 0x7a, 0x1a,
- 0xd3, 0xb3, 0x58, 0xf2, 0x29, 0x97, 0x78, 0xd7, 0xe8, 0xa0, 0x17, 0x03, 0xd7, 0x2e, 0x3b, 0x79,
- 0x05, 0x7d, 0x2e, 0x03, 0xb3, 0xc2, 0xe5, 0x53, 0xe8, 0x25, 0x69, 0x99, 0x2b, 0x63, 0xb8, 0x6b,
- 0xad, 0x52, 0xc9, 0x5e, 0x6b, 0x75, 0xf6, 0xa7, 0x53, 0x30, 0xc1, 0x7e, 0x21, 0xec, 0xaf, 0x94,
- 0x5d, 0x4b, 0xe1, 0x38, 0x4c, 0xaf, 0x68, 0xb5, 0x7a, 0xb5, 0x56, 0xd0, 0x6b, 0xda, 0x52, 0x3e,
- 0xa5, 0x9e, 0x82, 0x13, 0x1b, 0x9a, 0x5e, 0xad, 0xb8, 0xdc, 0xde, 0xd0, 0x2b, 0xa4, 0x9b, 0xa4,
- 0x20, 0xb8, 0x20, 0xad, 0x69, 0x4b, 0x2b, 0x5a, 0x7d, 0xb1, 0x50, 0xd5, 0xf2, 0x8a, 0xfb, 0x6f,
- 0xb9, 0x52, 0xd3, 0xaa, 0xf5, 0xa5, 0x52, 0x41, 0x7f, 0x20, 0x9f, 0x71, 0xff, 0xad, 0xd6, 0xf4,
- 0x42, 0x4d, 0x5b, 0x29, 0x15, 0xc9, 0x65, 0xcb, 0xae, 0x7e, 0x64, 0xdd, 0xa1, 0x56, 0x5b, 0xdf,
- 0xa8, 0x3d, 0x90, 0xcf, 0xc5, 0xf7, 0xf9, 0xeb, 0x6d, 0xfa, 0x98, 0x7d, 0xfe, 0xa2, 0xaa, 0x4f,
- 0x7e, 0x76, 0xfc, 0x6d, 0x05, 0xf2, 0x94, 0x02, 0xed, 0x72, 0x07, 0xdb, 0x26, 0x6e, 0x37, 0x30,
- 0x7a, 0x81, 0x54, 0x40, 0xbe, 0x03, 0xe1, 0xad, 0xc8, 0x10, 0xc2, 0x19, 0xa6, 0xf4, 0xa5, 0xc7,
- 0xa6, 0xcf, 0xf4, 0xda, 0xf4, 0xa2, 0x4c, 0x65, 0x7b, 0xaf, 0x4a, 0xfb, 0x54, 0x5c, 0x9f, 0xc0,
- 0xde, 0xd6, 0x8c, 0x04, 0xd1, 0x8f, 0xc7, 0xf1, 0x09, 0x1c, 0x40, 0xc1, 0x58, 0xa2, 0x70, 0x86,
- 0x18, 0x04, 0x79, 0x05, 0xbd, 0x7d, 0x0a, 0xf2, 0x94, 0x50, 0xce, 0xd1, 0xea, 0x97, 0xd8, 0x05,
- 0x61, 0xf5, 0x18, 0x71, 0xa3, 0xbc, 0x73, 0xbd, 0x69, 0xf1, 0x5c, 0xaf, 0xb0, 0x6e, 0xa7, 0xf4,
- 0x6e, 0x8e, 0xc7, 0xd5, 0x4e, 0xce, 0xab, 0x2a, 0x3c, 0x54, 0x5f, 0x72, 0xda, 0x19, 0x59, 0xfd,
- 0x78, 0x2e, 0xb1, 0x61, 0xd7, 0x54, 0x69, 0xb2, 0xc8, 0x44, 0xdf, 0xd5, 0x15, 0xd7, 0xc5, 0x56,
- 0xf0, 0x6a, 0x8b, 0xb8, 0xc0, 0x2a, 0x39, 0x17, 0xdb, 0x41, 0x14, 0x24, 0x8f, 0xc2, 0x0f, 0xd2,
- 0x90, 0xa9, 0x5a, 0xb6, 0x33, 0x2a, 0x0c, 0xe2, 0x6e, 0x0b, 0x72, 0x1c, 0xa8, 0x86, 0x4f, 0xbb,
- 0x92, 0xdb, 0x16, 0x8c, 0xae, 0x7f, 0x0c, 0xa1, 0xb7, 0x8e, 0xc3, 0x1c, 0xa5, 0xc4, 0x8f, 0x23,
- 0xff, 0xfd, 0x34, 0xed, 0xaf, 0xee, 0x97, 0x45, 0xe4, 0x2c, 0xcc, 0x70, 0xdb, 0x72, 0xfe, 0x8d,
- 0xa7, 0x7c, 0x1a, 0xfa, 0x35, 0x1e, 0x97, 0x25, 0x11, 0x97, 0x7e, 0x93, 0x4e, 0x3f, 0x14, 0xfb,
- 0xa8, 0x7a, 0xa6, 0x38, 0x51, 0xbc, 0x22, 0x2a, 0x4f, 0x1e, 0x91, 0xe7, 0x2a, 0x90, 0x63, 0x6e,
- 0x51, 0x23, 0x45, 0x20, 0xae, 0x66, 0xf8, 0x4c, 0x90, 0x73, 0x9f, 0x52, 0x46, 0xad, 0x19, 0xd1,
- 0xf5, 0x27, 0x8f, 0xc3, 0xbf, 0x32, 0x7f, 0xbf, 0xc2, 0xbe, 0x61, 0xb6, 0x8c, 0x0b, 0xad, 0x18,
- 0xd1, 0x33, 0x3f, 0x12, 0xf3, 0x84, 0x93, 0xdf, 0x54, 0xa1, 0xbe, 0x10, 0x8e, 0x3f, 0x09, 0xa6,
- 0x6c, 0x7f, 0x55, 0xce, 0x3b, 0x00, 0xde, 0xe3, 0x6b, 0xc9, 0xbe, 0xeb, 0x41, 0xce, 0x58, 0xc7,
- 0x99, 0xa4, 0xe8, 0x19, 0xcb, 0xf1, 0x8b, 0xe9, 0x42, 0xb3, 0xb9, 0x8c, 0x0d, 0x67, 0xcf, 0xc6,
- 0xcd, 0x58, 0x43, 0x84, 0xc8, 0xa2, 0x29, 0x9e, 0x13, 0x42, 0xcc, 0xab, 0x35, 0x11, 0x9d, 0x27,
- 0x0f, 0xe8, 0x0d, 0x3c, 0x5a, 0x46, 0xd2, 0x25, 0xbd, 0xcd, 0x87, 0xa4, 0x22, 0x40, 0xf2, 0xb4,
- 0xe1, 0x88, 0x48, 0x1e, 0x90, 0x97, 0x29, 0x30, 0x47, 0xed, 0x84, 0x51, 0x63, 0xf2, 0x7b, 0x31,
- 0xdd, 0x28, 0xb8, 0x9b, 0x3a, 0x78, 0x72, 0x46, 0x02, 0x4b, 0x1c, 0xa7, 0x0b, 0x39, 0x3a, 0x92,
- 0x47, 0xe6, 0x73, 0x39, 0x00, 0xce, 0x35, 0xee, 0x23, 0xb9, 0x20, 0xfe, 0x14, 0x7a, 0x07, 0x9b,
- 0x7f, 0x54, 0x85, 0xc0, 0xa6, 0x9c, 0xdb, 0x9b, 0xbf, 0x27, 0x23, 0x26, 0x4a, 0x8d, 0x2a, 0x7f,
- 0x1e, 0xd3, 0xe6, 0x65, 0x8e, 0x69, 0x03, 0x07, 0xf7, 0x21, 0x7b, 0xb9, 0x8f, 0xc6, 0x30, 0x7e,
- 0x07, 0x91, 0x12, 0x0f, 0xb5, 0xb5, 0x21, 0xe6, 0x92, 0xf3, 0x70, 0x52, 0xd7, 0x0a, 0x4b, 0x95,
- 0xf2, 0xda, 0x03, 0xfc, 0x95, 0x0e, 0x79, 0x85, 0x9f, 0x9c, 0x24, 0x02, 0xdb, 0xeb, 0x63, 0xf6,
- 0x81, 0x22, 0xaf, 0xa2, 0x66, 0x2b, 0xdc, 0x74, 0x7e, 0x70, 0xaf, 0x26, 0x51, 0xec, 0x51, 0xa2,
- 0xf0, 0x6c, 0x5e, 0x8d, 0x5e, 0xa0, 0x40, 0x3e, 0xb8, 0x01, 0x98, 0xdd, 0xcf, 0x53, 0x11, 0x3d,
- 0xe7, 0x3a, 0x74, 0x0b, 0x26, 0xf0, 0x9c, 0xf3, 0x12, 0xd4, 0x9b, 0x60, 0xae, 0xb1, 0x83, 0x1b,
- 0x17, 0x4b, 0x6d, 0x6f, 0x6b, 0x99, 0xee, 0x43, 0xf6, 0xa4, 0x8a, 0xc0, 0xdc, 0x2f, 0x02, 0x23,
- 0x4e, 0xa2, 0x85, 0x41, 0x9a, 0x27, 0x2a, 0x04, 0x97, 0x3f, 0xf6, 0x71, 0x29, 0x0b, 0xb8, 0xdc,
- 0x35, 0x54, 0xa9, 0xf1, 0x60, 0x29, 0x0f, 0x01, 0x0b, 0x82, 0xd3, 0x95, 0x8d, 0x5a, 0xa9, 0x52,
- 0xae, 0x6f, 0x56, 0xb5, 0xa5, 0xfa, 0xa2, 0x07, 0x4e, 0x35, 0xaf, 0xa0, 0x6f, 0xa6, 0x61, 0x82,
- 0x92, 0xd5, 0xed, 0xb9, 0xb1, 0x37, 0xda, 0x65, 0x10, 0xbd, 0x5d, 0x3a, 0x00, 0x80, 0xcf, 0x08,
- 0x56, 0x4f, 0x48, 0x3f, 0xf5, 0x54, 0x98, 0xa0, 0x20, 0x7b, 0x1e, 0x27, 0x67, 0x42, 0x7a, 0x29,
- 0x56, 0x8c, 0xee, 0x65, 0x97, 0x0c, 0x06, 0x30, 0x80, 0x8c, 0xb1, 0x4c, 0x10, 0x27, 0x56, 0xcd,
- 0xae, 0x63, 0xd9, 0x57, 0xd0, 0x1b, 0x53, 0x30, 0x71, 0x0e, 0xdb, 0x5d, 0xd3, 0x6a, 0x1f, 0xd8,
- 0x69, 0xbd, 0x1e, 0xa6, 0x3b, 0x36, 0xde, 0x37, 0xad, 0xbd, 0x6e, 0x30, 0x31, 0xe7, 0x93, 0x54,
- 0x04, 0x93, 0xc6, 0x9e, 0xb3, 0x63, 0xd9, 0xc1, 0x61, 0x7b, 0xef, 0x5d, 0x3d, 0x03, 0x40, 0x9f,
- 0xcb, 0xc6, 0x2e, 0x66, 0xfb, 0xc7, 0x5c, 0x8a, 0xaa, 0x42, 0xc6, 0x31, 0x77, 0x31, 0x8b, 0x95,
- 0x47, 0x9e, 0xd5, 0x79, 0x98, 0x20, 0x91, 0xad, 0x58, 0x04, 0x31, 0x45, 0xf7, 0x5e, 0xd1, 0xaf,
- 0x2b, 0x30, 0xbd, 0x82, 0x1d, 0x46, 0x6a, 0x97, 0x0f, 0x59, 0x13, 0x11, 0x4f, 0xda, 0xed, 0x5e,
- 0x5b, 0x46, 0xd7, 0xfb, 0xcd, 0x5f, 0x7d, 0x13, 0x13, 0x83, 0xb8, 0x7d, 0x0a, 0x17, 0x9a, 0x13,
- 0xbd, 0x27, 0x2d, 0x7b, 0x48, 0x92, 0x31, 0x73, 0x81, 0x23, 0x30, 0x54, 0xb6, 0x26, 0xf7, 0x59,
- 0x8e, 0x03, 0x71, 0x54, 0xf9, 0x92, 0x58, 0x31, 0xba, 0x9f, 0x5b, 0xf2, 0x78, 0xe5, 0x60, 0x4a,
- 0x92, 0x17, 0xaf, 0xef, 0x2a, 0x30, 0x5d, 0xdd, 0xb1, 0x2e, 0x31, 0x02, 0xf8, 0x4b, 0x68, 0xa3,
- 0xa0, 0xba, 0x16, 0xa6, 0xf6, 0x7b, 0x60, 0x0a, 0x12, 0xc2, 0xef, 0x4a, 0x45, 0x0f, 0x29, 0x71,
- 0x61, 0xe2, 0x88, 0x1b, 0xf9, 0x4d, 0xa6, 0xea, 0x93, 0x61, 0x82, 0x51, 0xcd, 0xe6, 0xcf, 0xd1,
- 0x00, 0x7b, 0x99, 0xf9, 0x06, 0x66, 0xc4, 0x06, 0xc6, 0x43, 0x3e, 0xbc, 0x71, 0x63, 0x88, 0x56,
- 0x9e, 0x26, 0x87, 0xeb, 0x3d, 0xe0, 0x8b, 0x23, 0x00, 0x1e, 0x7d, 0x2f, 0x25, 0xbb, 0xca, 0xe4,
- 0x73, 0xc0, 0xa7, 0xe0, 0x50, 0xd1, 0xdf, 0x07, 0x16, 0x97, 0x3c, 0x3f, 0x5f, 0x99, 0x81, 0x99,
- 0x25, 0x73, 0x6b, 0xcb, 0xef, 0xf5, 0x5e, 0x9c, 0x92, 0x63, 0x69, 0xf8, 0xf6, 0xa6, 0x6b, 0xb4,
- 0xec, 0xd9, 0x36, 0x6e, 0x7b, 0x8d, 0x62, 0xea, 0xd4, 0x93, 0xaa, 0xde, 0x0c, 0xc7, 0xbd, 0x8e,
- 0xde, 0xcb, 0x48, 0xc5, 0xb2, 0x37, 0x19, 0x7d, 0x47, 0x7a, 0x8b, 0xc2, 0xe3, 0x28, 0xdf, 0xa4,
- 0x10, 0x05, 0xbc, 0x1b, 0x66, 0x77, 0x68, 0x6e, 0x32, 0x8f, 0xf3, 0x3a, 0xcb, 0xd3, 0x3d, 0x51,
- 0x36, 0xd7, 0x71, 0xb7, 0x6b, 0x6c, 0x63, 0x5d, 0xcc, 0xdc, 0xa3, 0xbe, 0x4a, 0x9c, 0xab, 0x2e,
- 0xe4, 0x76, 0x3b, 0x24, 0x5a, 0x92, 0xbc, 0x74, 0x7c, 0xed, 0x51, 0x90, 0x59, 0x36, 0x5b, 0x18,
- 0xfd, 0x6c, 0x1a, 0xa6, 0x74, 0xdc, 0xb0, 0xda, 0x0d, 0xf7, 0x8d, 0x73, 0x76, 0xf8, 0x87, 0x94,
- 0xec, 0x15, 0x4f, 0x6e, 0x39, 0x0b, 0x7e, 0x19, 0x21, 0x7a, 0x23, 0x77, 0x95, 0x53, 0x64, 0x51,
- 0x63, 0x08, 0xe2, 0xed, 0xda, 0x91, 0x5b, 0x5b, 0x2d, 0xcb, 0x10, 0x56, 0x32, 0x7a, 0x6d, 0x9b,
- 0x5b, 0x20, 0xef, 0xf9, 0xac, 0x5b, 0xce, 0x86, 0xd9, 0x6e, 0xfb, 0x87, 0x22, 0x0f, 0xa4, 0x8b,
- 0x9b, 0x70, 0x91, 0x71, 0x25, 0x48, 0xdb, 0x59, 0xed, 0x21, 0x92, 0x7d, 0x13, 0xcc, 0x5d, 0xb8,
- 0xe2, 0xe0, 0x2e, 0xcb, 0xc5, 0xaa, 0xcd, 0xe8, 0x3d, 0xa9, 0xe8, 0xbd, 0x52, 0xf1, 0x27, 0x22,
- 0x2a, 0x8c, 0xc7, 0xea, 0xd5, 0x21, 0xcc, 0xf9, 0x93, 0x90, 0x2f, 0x57, 0x96, 0x34, 0xe2, 0x7b,
- 0xe3, 0xb9, 0x2b, 0x6c, 0xa3, 0x97, 0x28, 0x30, 0x43, 0x76, 0xaa, 0x3d, 0x14, 0x6e, 0x90, 0xd8,
- 0x1d, 0x47, 0x5f, 0x96, 0xf6, 0xcb, 0x21, 0x4d, 0xe6, 0x2b, 0x08, 0x67, 0xf4, 0x96, 0xd9, 0xea,
- 0x65, 0x74, 0x56, 0xef, 0x49, 0xed, 0x03, 0x88, 0xd2, 0x17, 0x90, 0xdf, 0x91, 0x72, 0xce, 0x19,
- 0x44, 0xdd, 0x51, 0xa1, 0xf2, 0xbb, 0x0a, 0x4c, 0xbb, 0xf3, 0x3f, 0x0f, 0x94, 0x8a, 0x00, 0x8a,
- 0xd5, 0x6e, 0x5d, 0x09, 0xe6, 0xb8, 0xde, 0x6b, 0x2c, 0x25, 0xf9, 0x2b, 0xe9, 0x69, 0x18, 0x61,
- 0x11, 0x47, 0xcb, 0x98, 0xf0, 0xfb, 0x80, 0xd4, 0xe4, 0x6c, 0x00, 0x71, 0x47, 0x05, 0xdf, 0x6f,
- 0x66, 0x21, 0xb7, 0xd9, 0x21, 0xc8, 0x7d, 0x3d, 0x2d, 0x13, 0x71, 0xf9, 0x80, 0x63, 0xb6, 0x6b,
- 0x66, 0xb5, 0xac, 0x86, 0xd1, 0xda, 0x08, 0x4e, 0xb8, 0x04, 0x09, 0xea, 0x5d, 0xcc, 0x57, 0x8b,
- 0x1e, 0x0f, 0xba, 0x29, 0x32, 0x18, 0x31, 0xe1, 0x11, 0xe7, 0x04, 0x7f, 0x2b, 0x9c, 0x68, 0x9a,
- 0x5d, 0xe3, 0x42, 0x0b, 0x6b, 0xed, 0x86, 0x7d, 0x85, 0xb2, 0x83, 0x3a, 0xae, 0x1c, 0xfc, 0xa0,
- 0xde, 0x03, 0xd9, 0xae, 0x73, 0xa5, 0x45, 0x27, 0x7e, 0xbc, 0xcf, 0x7c, 0x68, 0x55, 0x55, 0x37,
- 0xbb, 0x4e, 0xff, 0xe2, 0xef, 0x71, 0x9c, 0x90, 0xbc, 0x93, 0xf2, 0x0e, 0xc8, 0x59, 0xb6, 0xb9,
- 0x6d, 0xd2, 0x18, 0xff, 0x73, 0x07, 0x62, 0x6c, 0x51, 0x53, 0xa0, 0x42, 0xb2, 0xe8, 0x2c, 0x2b,
- 0xfa, 0x40, 0x5a, 0x36, 0xa0, 0x07, 0xa1, 0x91, 0x82, 0x33, 0x9e, 0x7b, 0x29, 0x5f, 0x23, 0x15,
- 0x6a, 0x23, 0x9c, 0xac, 0xe4, 0x07, 0xe1, 0xcf, 0xa7, 0x61, 0x72, 0xc9, 0xba, 0xd4, 0x26, 0x02,
- 0x7b, 0xa7, 0x9c, 0xcd, 0xda, 0xe7, 0xf0, 0x95, 0x78, 0x1d, 0x54, 0xa4, 0xa7, 0x35, 0x69, 0xad,
- 0x57, 0x65, 0x08, 0x0c, 0x91, 0x1a, 0x20, 0x79, 0x7d, 0x4f, 0x54, 0x3d, 0xc9, 0xf3, 0xf5, 0xcf,
- 0x14, 0xc8, 0x2c, 0xd9, 0x56, 0x07, 0xbd, 0x2d, 0x15, 0x63, 0x1f, 0xb9, 0x69, 0x5b, 0x9d, 0x1a,
- 0xb9, 0x99, 0x23, 0x70, 0x2f, 0xe7, 0xd3, 0xd4, 0x3b, 0x61, 0xb2, 0x63, 0x75, 0x4d, 0xc7, 0x9b,
- 0x0e, 0xcc, 0xdd, 0xfe, 0xc8, 0xbe, 0x5a, 0xb9, 0xc1, 0x32, 0xe9, 0x7e, 0x76, 0xb7, 0xf7, 0x25,
- 0x2c, 0x74, 0xf9, 0xe2, 0xb2, 0xd1, 0xbb, 0x9d, 0xa4, 0x27, 0x15, 0xbd, 0x94, 0x47, 0xf2, 0x69,
- 0x22, 0x92, 0x8f, 0xee, 0xc3, 0x61, 0xdb, 0xea, 0x8c, 0x64, 0xe7, 0xe7, 0x55, 0x3e, 0xaa, 0x4f,
- 0x17, 0x50, 0xbd, 0x45, 0xaa, 0xce, 0xe4, 0x11, 0xfd, 0x40, 0x06, 0x80, 0x98, 0x0b, 0x9b, 0xee,
- 0x44, 0x46, 0xce, 0x56, 0x7a, 0x5e, 0x86, 0xe3, 0x65, 0x41, 0xe4, 0xe5, 0x63, 0x43, 0xac, 0x11,
- 0x52, 0x7c, 0x08, 0x47, 0x0b, 0x90, 0xdd, 0x73, 0x3f, 0x33, 0x8e, 0x4a, 0x16, 0x41, 0x5e, 0x75,
- 0xfa, 0x27, 0xfa, 0xd3, 0x14, 0x64, 0x49, 0x82, 0x7a, 0x06, 0x80, 0x0c, 0xd0, 0xf4, 0xa0, 0x42,
- 0x8a, 0x0c, 0xc5, 0x5c, 0x0a, 0x91, 0x56, 0xb3, 0xc9, 0x3e, 0x53, 0xd3, 0x37, 0x48, 0x70, 0xff,
- 0x26, 0xc3, 0x36, 0x29, 0x8b, 0x0d, 0xe4, 0x5c, 0x8a, 0xfb, 0x37, 0x79, 0x5b, 0xc3, 0x5b, 0x34,
- 0x40, 0x6b, 0x46, 0x0f, 0x12, 0xfc, 0xbf, 0xd7, 0xfc, 0x4b, 0x38, 0xbc, 0xbf, 0x49, 0x8a, 0x3b,
- 0xa9, 0x25, 0x62, 0xb9, 0x18, 0x54, 0x91, 0x23, 0x99, 0x7a, 0x93, 0xd1, 0xeb, 0x7d, 0xb1, 0x59,
- 0x12, 0xc4, 0xe6, 0xf1, 0x31, 0xd8, 0x9b, 0xbc, 0xf0, 0x7c, 0x35, 0x0b, 0x53, 0x65, 0xab, 0xc9,
- 0x64, 0x87, 0x9b, 0xf8, 0x7d, 0x3c, 0x1b, 0x6b, 0xe2, 0xe7, 0x97, 0x11, 0x22, 0x20, 0xf7, 0x89,
- 0x02, 0x22, 0x57, 0x02, 0x2f, 0x1f, 0xea, 0x22, 0xe4, 0x88, 0xf4, 0x1e, 0xbc, 0x5c, 0x25, 0xaa,
- 0x08, 0xc2, 0x5a, 0x9d, 0xfd, 0xf9, 0x6f, 0x4e, 0xc6, 0xfe, 0x13, 0x64, 0xa9, 0x47, 0x6f, 0xb8,
- 0xcf, 0xb0, 0xd8, 0xd0, 0x74, 0x74, 0x43, 0x95, 0xe8, 0x86, 0x66, 0x7a, 0x1b, 0x1a, 0x67, 0x3e,
- 0x1f, 0x26, 0x21, 0xc9, 0xcb, 0xf8, 0x7f, 0x9f, 0x00, 0x28, 0x1b, 0xfb, 0xe6, 0x36, 0xdd, 0xb2,
- 0xfb, 0x4b, 0x6f, 0x1e, 0xc3, 0x36, 0xd7, 0xfe, 0x33, 0x37, 0x10, 0xde, 0x09, 0x13, 0x6c, 0xdc,
- 0x63, 0x0d, 0xb9, 0x4e, 0x68, 0x48, 0x50, 0x0a, 0x35, 0x2f, 0x2f, 0x3b, 0xba, 0x97, 0x5f, 0xb8,
- 0x6e, 0x2e, 0xdd, 0x73, 0xdd, 0x5c, 0xdf, 0xdd, 0x81, 0xb0, 0x4b, 0xe8, 0xd0, 0x7b, 0xa5, 0xaf,
- 0x0b, 0xe1, 0xe8, 0xe1, 0x5a, 0x14, 0xa2, 0x82, 0x77, 0xc0, 0x84, 0xe5, 0xef, 0x32, 0x2a, 0xa1,
- 0xeb, 0x59, 0xa5, 0xf6, 0x96, 0xa5, 0x7b, 0x39, 0x25, 0x2f, 0x02, 0x91, 0xa2, 0x23, 0x79, 0xa0,
- 0x3f, 0xad, 0xc0, 0xe9, 0x15, 0x2f, 0xd8, 0x8d, 0xdb, 0x8e, 0xf3, 0xa6, 0xb3, 0xb3, 0x66, 0xb6,
- 0x2f, 0x76, 0xd1, 0x7f, 0x90, 0xb3, 0x20, 0x39, 0xfc, 0xd3, 0xf1, 0xf0, 0x17, 0x63, 0x09, 0x54,
- 0x45, 0xd4, 0xee, 0x09, 0x2b, 0xa5, 0x3f, 0xb5, 0x21, 0x00, 0xde, 0x05, 0x39, 0x4a, 0x28, 0xeb,
- 0x44, 0xcf, 0x86, 0xe2, 0xe7, 0x97, 0xa4, 0xb3, 0x3f, 0xd0, 0x7b, 0x7c, 0x1c, 0xcf, 0x09, 0x38,
- 0x2e, 0x1e, 0x8a, 0xb2, 0xc4, 0x21, 0x3d, 0xfb, 0x04, 0x98, 0x60, 0x9c, 0x56, 0xe7, 0x78, 0x2d,
- 0xce, 0x1f, 0x53, 0x01, 0x72, 0xeb, 0xd6, 0x3e, 0xae, 0x59, 0xf9, 0x94, 0xfb, 0xec, 0xd2, 0x57,
- 0xb3, 0xf2, 0x69, 0xf4, 0xea, 0x49, 0x98, 0xf4, 0xa3, 0x8c, 0x7c, 0x3e, 0x0d, 0xf9, 0xe0, 0x5e,
- 0x7d, 0xda, 0x22, 0x79, 0x97, 0xbd, 0x97, 0x49, 0xef, 0xbb, 0xfb, 0xd1, 0x3f, 0x7a, 0x2b, 0x93,
- 0xbc, 0xf9, 0xfa, 0xad, 0x52, 0xfb, 0xf0, 0xb2, 0xb5, 0x24, 0xaf, 0x6a, 0x9f, 0x4a, 0x43, 0xb6,
- 0xd8, 0xb2, 0xda, 0x38, 0xd6, 0xc5, 0xd7, 0xfd, 0x77, 0x14, 0xd0, 0xb3, 0xd3, 0xb2, 0xb6, 0x46,
- 0xc0, 0x00, 0xb7, 0x6e, 0x49, 0xde, 0xca, 0x0d, 0x52, 0x91, 0x45, 0x27, 0xcf, 0xd0, 0x6f, 0xa6,
- 0x61, 0x8a, 0xc6, 0xeb, 0x28, 0xb4, 0x5a, 0xe8, 0x91, 0x01, 0x53, 0xfb, 0x44, 0x6a, 0x41, 0xbf,
- 0x23, 0xed, 0x37, 0xed, 0xb7, 0xca, 0x2f, 0x3b, 0x46, 0xe0, 0x92, 0x78, 0x6e, 0xbc, 0x72, 0x7b,
- 0x62, 0x03, 0x09, 0x4a, 0x9e, 0xd5, 0x7f, 0x91, 0x76, 0x0d, 0x80, 0xf6, 0xc5, 0x0d, 0x1b, 0xef,
- 0x9b, 0xf8, 0x12, 0x7a, 0x44, 0xc0, 0xec, 0x83, 0xc1, 0x08, 0xde, 0x2c, 0xbd, 0x88, 0xc3, 0x15,
- 0x19, 0xba, 0x25, 0x35, 0xdd, 0x0a, 0x32, 0xb1, 0x5e, 0xbc, 0x37, 0x42, 0x04, 0x57, 0x8c, 0xce,
- 0x67, 0x97, 0x5c, 0xb3, 0x09, 0xa7, 0x22, 0x79, 0xc6, 0x3e, 0x34, 0x01, 0x93, 0x9b, 0xed, 0x6e,
- 0xa7, 0x65, 0x74, 0x77, 0xd0, 0xf7, 0x15, 0xff, 0xde, 0xe9, 0x27, 0x09, 0x67, 0x9e, 0x7f, 0x72,
- 0x0f, 0xdb, 0x9e, 0x1b, 0x0e, 0x7d, 0xe9, 0x7f, 0xb1, 0x29, 0xfa, 0x80, 0x22, 0x3b, 0x49, 0xf5,
- 0x2a, 0x8d, 0xbe, 0x90, 0xb9, 0x04, 0x93, 0x1d, 0xb3, 0xe1, 0xec, 0xd9, 0xfe, 0x35, 0x99, 0x8f,
- 0x93, 0x2b, 0x65, 0x83, 0xfe, 0xa5, 0xfb, 0xbf, 0x23, 0x03, 0x26, 0x58, 0xe2, 0x81, 0x6d, 0xa1,
- 0x83, 0x87, 0xf4, 0x4e, 0x43, 0xce, 0xb0, 0x1d, 0xb3, 0xeb, 0x5d, 0x43, 0xcc, 0xde, 0xdc, 0xee,
- 0x92, 0x3e, 0x6d, 0xda, 0x2d, 0x2f, 0x3a, 0x82, 0x9f, 0x80, 0x7e, 0x57, 0x6a, 0xfe, 0x18, 0xdd,
- 0xf2, 0x78, 0x90, 0xdf, 0x3f, 0xc4, 0x5a, 0xf3, 0xd5, 0x70, 0x95, 0x5e, 0xa8, 0x69, 0x75, 0x7a,
- 0x98, 0xde, 0x3f, 0x37, 0xdf, 0x44, 0xdf, 0xe7, 0xd7, 0xef, 0xc4, 0x31, 0x82, 0x71, 0x31, 0x18,
- 0x23, 0xfc, 0x84, 0x88, 0x31, 0xe2, 0x37, 0xa5, 0x77, 0x77, 0x7c, 0x96, 0x0c, 0x58, 0xcb, 0x8b,
- 0xba, 0x8d, 0xe4, 0x83, 0x52, 0x3b, 0x35, 0x83, 0x6a, 0x3a, 0x42, 0xf6, 0x7f, 0x66, 0x02, 0x26,
- 0x56, 0x8c, 0x56, 0x0b, 0xdb, 0x57, 0xdc, 0xa1, 0x25, 0xef, 0x51, 0xb8, 0x6e, 0xb4, 0xcd, 0x2d,
- 0x77, 0x7e, 0x1f, 0xd9, 0xe9, 0xbd, 0x57, 0x3a, 0xd2, 0x25, 0xab, 0x63, 0xa1, 0xb7, 0xfc, 0x10,
- 0x9e, 0xdf, 0x06, 0x19, 0xb3, 0xbd, 0x65, 0xb1, 0xae, 0xaf, 0x77, 0x15, 0xdd, 0xfb, 0x99, 0x4c,
- 0x41, 0x48, 0x46, 0xc9, 0x60, 0x97, 0x92, 0x54, 0x24, 0xdf, 0x03, 0x7e, 0x29, 0x03, 0xb3, 0x1e,
- 0x11, 0xa5, 0x76, 0x13, 0x5f, 0x46, 0x77, 0x04, 0x7c, 0xbe, 0x19, 0x8e, 0x37, 0x5a, 0x26, 0x6e,
- 0x3b, 0x45, 0xff, 0xf0, 0x6d, 0x8a, 0xc5, 0x93, 0x11, 0x93, 0xd1, 0x4b, 0x32, 0xb2, 0xa7, 0x72,
- 0x7a, 0x5b, 0x4e, 0x2a, 0x0d, 0x61, 0x7e, 0x0d, 0xa0, 0x61, 0x38, 0x78, 0xdb, 0xb2, 0x4d, 0xbf,
- 0x07, 0x7c, 0x62, 0x9c, 0xd2, 0x8a, 0xf4, 0xef, 0x2b, 0x3a, 0x57, 0x8e, 0x7a, 0x0f, 0x4c, 0x63,
- 0xff, 0xe0, 0xad, 0xb7, 0x38, 0x13, 0x89, 0x2c, 0x9f, 0x1f, 0xfd, 0x85, 0xd4, 0xe1, 0x1f, 0x99,
- 0x66, 0xc6, 0x43, 0xb7, 0x3e, 0x9c, 0xb6, 0x6d, 0x96, 0xd7, 0x0b, 0x7a, 0x75, 0xb5, 0xb0, 0xb6,
- 0x56, 0x2a, 0xaf, 0xf8, 0x21, 0x28, 0x54, 0x98, 0x5b, 0xaa, 0x9c, 0x2f, 0x73, 0x31, 0x42, 0x32,
- 0x68, 0x03, 0x26, 0x3d, 0x7e, 0xf5, 0x73, 0x8b, 0xe4, 0x79, 0xc6, 0xdc, 0x22, 0xb9, 0x24, 0xd7,
- 0x1c, 0x33, 0x1b, 0xbe, 0x6b, 0x0d, 0x79, 0x46, 0x7f, 0x62, 0x40, 0x96, 0xac, 0xa2, 0xa3, 0x77,
- 0x92, 0x1b, 0x8d, 0x3b, 0x2d, 0xa3, 0x81, 0xd1, 0x6e, 0x0c, 0xfb, 0xdb, 0x0b, 0xd2, 0x9e, 0x3e,
- 0x10, 0xa4, 0x9d, 0x3c, 0x32, 0x3b, 0xef, 0x64, 0xbf, 0x95, 0x7b, 0x9d, 0x66, 0x11, 0xcf, 0xc9,
- 0x44, 0xee, 0xa7, 0xd0, 0x05, 0x7f, 0x46, 0x66, 0x88, 0x48, 0x86, 0xd3, 0x14, 0xcf, 0xf6, 0x94,
- 0xdb, 0x79, 0x89, 0xa2, 0x68, 0x2c, 0x7d, 0x43, 0xb6, 0xda, 0x69, 0x99, 0x0e, 0x7a, 0x45, 0x7a,
- 0x24, 0x98, 0xd1, 0xc0, 0xfa, 0xca, 0xc0, 0xc0, 0xfa, 0xc1, 0x7e, 0x69, 0x46, 0x62, 0xbf, 0xb4,
- 0x86, 0x2f, 0x3b, 0xe2, 0x7e, 0xe9, 0x9d, 0x2c, 0x8c, 0x14, 0xdd, 0x6d, 0x7d, 0x74, 0x1f, 0x96,
- 0x92, 0x66, 0xf5, 0x89, 0x4f, 0x76, 0xf6, 0x09, 0x2c, 0x4c, 0x12, 0x40, 0x6e, 0xb1, 0x52, 0xab,
- 0x55, 0xd6, 0xf3, 0xc7, 0x48, 0x7c, 0x8d, 0xca, 0x46, 0x3e, 0xa5, 0x4e, 0x41, 0xb6, 0x54, 0x2e,
- 0x6b, 0x7a, 0x3e, 0x4d, 0x02, 0x37, 0x95, 0x6a, 0x6b, 0x5a, 0x5e, 0x11, 0xa3, 0x2c, 0x47, 0x1a,
- 0xdc, 0x62, 0xdd, 0x49, 0x8a, 0x97, 0x9c, 0xe9, 0x1d, 0x4e, 0x4f, 0xf2, 0xc2, 0xf5, 0x5f, 0x14,
- 0xc8, 0xae, 0x63, 0x7b, 0x1b, 0xa3, 0x9f, 0x8c, 0xb1, 0xad, 0xb7, 0x65, 0xda, 0x5d, 0x1a, 0xe6,
- 0x2a, 0xd8, 0xd6, 0xe3, 0xd3, 0xd4, 0x1b, 0x61, 0xb6, 0x8b, 0x1b, 0x56, 0xbb, 0xe9, 0x65, 0xa2,
- 0xfd, 0x91, 0x98, 0x88, 0x5e, 0x1e, 0x13, 0x32, 0x42, 0xe8, 0x48, 0xf6, 0xe6, 0xe2, 0x00, 0xd3,
- 0xaf, 0xd6, 0xe4, 0x81, 0xf9, 0x8e, 0xe2, 0xfe, 0xd4, 0xb9, 0x82, 0x5e, 0x2e, 0xbd, 0xdf, 0x7a,
- 0x2b, 0xe4, 0x88, 0x98, 0x7a, 0x63, 0x74, 0xff, 0xfe, 0x98, 0xe5, 0x51, 0x17, 0xe1, 0x44, 0x17,
- 0xb7, 0x70, 0xc3, 0xc1, 0x4d, 0x57, 0x75, 0xf5, 0x81, 0x9d, 0xc2, 0xc1, 0xec, 0xe8, 0x33, 0x3c,
- 0x80, 0x77, 0x8b, 0x00, 0xde, 0xd4, 0x87, 0x95, 0x6e, 0x83, 0xc2, 0xad, 0x6a, 0xb7, 0x19, 0xd5,
- 0x96, 0xe5, 0x2f, 0x83, 0x7b, 0xef, 0xee, 0xb7, 0x1d, 0x67, 0xb7, 0x45, 0xbe, 0x31, 0x5f, 0x7f,
- 0xef, 0x5d, 0x5d, 0x80, 0x09, 0xa3, 0x7d, 0x85, 0x7c, 0xca, 0x44, 0xb4, 0xda, 0xcb, 0x84, 0x5e,
- 0xed, 0x23, 0x7f, 0xaf, 0x80, 0xfc, 0x63, 0xe5, 0xc8, 0x4d, 0x1e, 0xf8, 0x9f, 0x99, 0x80, 0xec,
- 0x86, 0xd1, 0x75, 0x30, 0xfa, 0x7f, 0x15, 0x59, 0xe4, 0x6f, 0x82, 0xb9, 0x2d, 0xab, 0xb1, 0xd7,
- 0xc5, 0x4d, 0x51, 0x29, 0x7b, 0x52, 0x47, 0x81, 0xb9, 0x7a, 0x0b, 0xe4, 0xbd, 0x44, 0x56, 0xac,
- 0xb7, 0xf1, 0x7e, 0x20, 0x9d, 0xc4, 0xec, 0xed, 0x6e, 0x18, 0xb6, 0x53, 0xd9, 0x22, 0x69, 0x7e,
- 0xcc, 0x5e, 0x3e, 0x51, 0x80, 0x3e, 0x17, 0x01, 0xfd, 0x44, 0x38, 0xf4, 0x93, 0x12, 0xd0, 0xab,
- 0x05, 0x98, 0xdc, 0x32, 0x5b, 0x98, 0xfc, 0x30, 0x45, 0x7e, 0xe8, 0x37, 0x26, 0x11, 0xde, 0xfb,
- 0x63, 0xd2, 0xb2, 0xd9, 0xc2, 0xba, 0xff, 0x9b, 0x37, 0xe5, 0x81, 0x60, 0xca, 0xb3, 0x46, 0x3d,
- 0x61, 0x5d, 0xc3, 0xab, 0x6d, 0xec, 0x62, 0x6f, 0xb9, 0xad, 0xcd, 0xce, 0x99, 0x34, 0x0d, 0xc7,
- 0x20, 0x60, 0xcc, 0xe8, 0xe4, 0x59, 0xf4, 0x04, 0x51, 0x7a, 0x3d, 0x41, 0x9e, 0xaf, 0xc4, 0xeb,
- 0x11, 0x3d, 0x62, 0x43, 0x34, 0xea, 0x82, 0x07, 0x10, 0xb5, 0x14, 0xfd, 0x77, 0x17, 0x98, 0x86,
- 0x61, 0x63, 0x67, 0x83, 0xf7, 0xbd, 0xc8, 0xea, 0x62, 0x22, 0x71, 0xc2, 0xeb, 0x56, 0x8d, 0x5d,
- 0x4c, 0x2a, 0x2b, 0xba, 0xdf, 0x98, 0x73, 0xd5, 0x81, 0xf4, 0xa0, 0xff, 0xcd, 0x8e, 0xba, 0xff,
- 0xed, 0xd7, 0xc6, 0xe4, 0xd5, 0xf0, 0xb5, 0x19, 0x50, 0x8a, 0x7b, 0xce, 0xc3, 0xba, 0xfb, 0xfd,
- 0x81, 0xb4, 0x67, 0x0b, 0xeb, 0xcf, 0x42, 0xaf, 0xb4, 0x1e, 0x53, 0xef, 0x1b, 0x53, 0x4a, 0xe4,
- 0x3c, 0x68, 0xc2, 0xda, 0x96, 0xbc, 0x8c, 0xbc, 0x4d, 0xf1, 0x5d, 0x23, 0x9f, 0x9b, 0x3a, 0xbc,
- 0x69, 0x8e, 0x68, 0xff, 0xc4, 0xf5, 0x0c, 0xfe, 0xbb, 0xd7, 0xf1, 0x64, 0x84, 0x10, 0x5e, 0x64,
- 0x43, 0x9d, 0xb0, 0x72, 0x46, 0xa7, 0x2f, 0xe8, 0x95, 0xd2, 0x0e, 0xe3, 0x94, 0x6d, 0x91, 0xce,
- 0x83, 0xf1, 0x6c, 0x2a, 0xb9, 0x6b, 0x0b, 0x23, 0xaa, 0x1d, 0x43, 0x0c, 0xb5, 0xf0, 0xc5, 0xc5,
- 0x61, 0x10, 0x43, 0xaf, 0x91, 0xde, 0x80, 0xa2, 0xcd, 0x1e, 0xb0, 0xb2, 0x18, 0x8f, 0xdf, 0x72,
- 0xdb, 0x53, 0x91, 0x15, 0x27, 0xcf, 0xf1, 0x6f, 0x29, 0x90, 0xa3, 0x9b, 0x8e, 0xe8, 0x2d, 0xa9,
- 0x18, 0xf7, 0x3d, 0x3b, 0xa2, 0xd3, 0xa0, 0xff, 0x1e, 0x67, 0xcd, 0x41, 0x70, 0x2e, 0xcc, 0xc4,
- 0x72, 0x2e, 0x14, 0x4f, 0x60, 0x4a, 0xe8, 0x11, 0x6d, 0x63, 0xc2, 0xd3, 0xc9, 0x38, 0x1a, 0xd6,
- 0x97, 0xa0, 0xe4, 0xf1, 0x7e, 0x41, 0x16, 0x66, 0x68, 0xd5, 0xe7, 0xcd, 0xe6, 0x36, 0x76, 0xd0,
- 0xbb, 0xd3, 0x3f, 0x3c, 0xa8, 0xab, 0x65, 0x98, 0xb9, 0x44, 0xc8, 0x5e, 0x33, 0xae, 0x58, 0x7b,
- 0x0e, 0x5b, 0xb9, 0xb8, 0x25, 0x72, 0xdd, 0x83, 0xb6, 0x73, 0x81, 0xfe, 0xa1, 0x0b, 0xff, 0xbb,
- 0x3c, 0xa6, 0x5b, 0x03, 0xd4, 0x65, 0x2b, 0x47, 0x8c, 0x2c, 0x3e, 0x49, 0x3d, 0x0d, 0xb9, 0x7d,
- 0x13, 0x5f, 0x2a, 0x35, 0x99, 0x75, 0xcb, 0xde, 0xd0, 0x1f, 0x4a, 0xef, 0xd4, 0xf2, 0x70, 0x33,
- 0x5a, 0x92, 0x95, 0x42, 0xb9, 0xfd, 0xda, 0x81, 0x64, 0x8d, 0xe1, 0x34, 0xb0, 0x78, 0x2d, 0x60,
- 0x9c, 0xeb, 0xe6, 0xc3, 0x0c, 0xe7, 0x18, 0x77, 0xfe, 0x53, 0x06, 0x8c, 0xf8, 0xc6, 0x40, 0xb9,
- 0x63, 0xfe, 0x03, 0xaa, 0x4e, 0x9e, 0xf3, 0xaf, 0x57, 0x60, 0xaa, 0x8a, 0x9d, 0x65, 0x13, 0xb7,
- 0x9a, 0x5d, 0x64, 0x1f, 0xde, 0x34, 0xba, 0x0d, 0x72, 0x5b, 0xa4, 0xb0, 0x41, 0x27, 0x15, 0x58,
- 0x36, 0xf4, 0xda, 0xb4, 0xec, 0x1e, 0x30, 0x5b, 0x7d, 0xf3, 0xa8, 0x1d, 0x09, 0x4c, 0x72, 0x3e,
- 0xbc, 0xd1, 0x35, 0x27, 0x8f, 0xd2, 0xdb, 0x15, 0x98, 0x61, 0xf7, 0x88, 0x15, 0x5a, 0xe6, 0x76,
- 0x1b, 0xed, 0x8d, 0x40, 0x43, 0xd4, 0xc7, 0x43, 0xd6, 0x70, 0x4b, 0x63, 0xee, 0xfc, 0xa8, 0x6f,
- 0xe7, 0x49, 0xea, 0xd3, 0x69, 0xc6, 0x18, 0xd1, 0xfc, 0x02, 0xc1, 0xf6, 0x68, 0x1e, 0x63, 0x34,
- 0xbf, 0x81, 0x95, 0x27, 0x8f, 0xd8, 0x57, 0x14, 0x38, 0xc9, 0x08, 0x38, 0x87, 0x6d, 0xc7, 0x6c,
- 0x18, 0x2d, 0x8a, 0xdc, 0x0b, 0x53, 0xa3, 0x80, 0x6e, 0x15, 0x66, 0xf7, 0xf9, 0x62, 0x19, 0x84,
- 0x67, 0xfb, 0x42, 0x28, 0x10, 0xa0, 0x8b, 0x3f, 0xc6, 0x88, 0x8a, 0x26, 0x70, 0x55, 0x28, 0x73,
- 0x8c, 0x51, 0xd1, 0xa4, 0x89, 0x48, 0x1e, 0xe2, 0x97, 0x66, 0x68, 0xa0, 0xc0, 0xa0, 0xfb, 0xfc,
- 0x4b, 0x69, 0x6c, 0x37, 0x61, 0x9a, 0x60, 0x49, 0x7f, 0x64, 0xcb, 0x10, 0x11, 0x42, 0xec, 0xf7,
- 0x3b, 0xec, 0xea, 0x22, 0xff, 0x5f, 0x9d, 0x2f, 0x07, 0x9d, 0x07, 0x08, 0x3e, 0xf1, 0x9d, 0x74,
- 0x2a, 0xac, 0x93, 0x4e, 0xcb, 0x75, 0xd2, 0x6f, 0x96, 0x0e, 0x73, 0xd2, 0x9f, 0xec, 0xc3, 0x8b,
- 0x87, 0x5c, 0x80, 0x8b, 0xc1, 0xb5, 0x27, 0x2f, 0x17, 0xaf, 0xce, 0xf4, 0x5e, 0x18, 0xfd, 0x91,
- 0x91, 0xcc, 0xa7, 0xf8, 0xfe, 0x40, 0xe9, 0xe9, 0x0f, 0x0e, 0x61, 0x49, 0xdf, 0x0c, 0xc7, 0x69,
- 0x15, 0x45, 0x9f, 0x2c, 0x1a, 0x30, 0xbc, 0x37, 0x19, 0x7d, 0x74, 0x08, 0x21, 0x18, 0x74, 0x9b,
- 0x75, 0x54, 0x27, 0x17, 0xcf, 0xd8, 0x8d, 0x2b, 0x20, 0x47, 0x77, 0x09, 0xf6, 0x37, 0x33, 0xd4,
- 0xda, 0xdd, 0x24, 0xb7, 0x4b, 0xa1, 0x2f, 0x66, 0x46, 0x31, 0x22, 0xdc, 0x07, 0x19, 0xe2, 0xd4,
- 0xae, 0x84, 0x2e, 0x69, 0x04, 0x55, 0x06, 0x57, 0x7f, 0xe1, 0xcb, 0xce, 0xea, 0x31, 0x9d, 0xfc,
- 0xa9, 0xde, 0x02, 0xc7, 0x2f, 0x18, 0x8d, 0x8b, 0xdb, 0xb6, 0xb5, 0x47, 0xee, 0xe1, 0xb1, 0xd8,
- 0x85, 0x3e, 0xe4, 0x62, 0x34, 0xf1, 0x83, 0x7a, 0xbb, 0x67, 0x3a, 0x64, 0x07, 0x99, 0x0e, 0xab,
- 0xc7, 0x98, 0xf1, 0xa0, 0x3e, 0xc1, 0xef, 0x74, 0x72, 0x91, 0x9d, 0xce, 0xea, 0x31, 0xaf, 0xdb,
- 0x51, 0x97, 0x60, 0xb2, 0x69, 0xee, 0x93, 0xad, 0x6a, 0x32, 0xeb, 0x1a, 0x74, 0xe8, 0x78, 0xc9,
- 0xdc, 0xa7, 0x1b, 0xdb, 0xab, 0xc7, 0x74, 0xff, 0x4f, 0x75, 0x05, 0xa6, 0xc8, 0xb6, 0x00, 0x29,
- 0x66, 0x32, 0xd6, 0x81, 0xe2, 0xd5, 0x63, 0x7a, 0xf0, 0xaf, 0x6b, 0x7d, 0x64, 0xc8, 0x69, 0x8f,
- 0x7b, 0xbd, 0xed, 0xf6, 0x54, 0xac, 0xed, 0x76, 0x97, 0x17, 0x74, 0xc3, 0xfd, 0x34, 0x64, 0x1b,
- 0x84, 0xc3, 0x69, 0xc6, 0x61, 0xfa, 0xaa, 0xde, 0x0d, 0x99, 0x5d, 0xc3, 0xf6, 0x26, 0xcf, 0x37,
- 0x0d, 0x2e, 0x77, 0xdd, 0xb0, 0x2f, 0xba, 0x08, 0xba, 0x7f, 0x2d, 0x4e, 0x40, 0x96, 0x30, 0xce,
- 0x7f, 0x40, 0x6f, 0xcb, 0x50, 0x33, 0xa4, 0x68, 0xb5, 0xdd, 0x61, 0xbf, 0x66, 0x79, 0x47, 0x62,
- 0xfe, 0x30, 0x35, 0x1a, 0x0b, 0xb2, 0xef, 0x0d, 0xcb, 0x4a, 0xe8, 0x0d, 0xcb, 0x3d, 0x57, 0x7d,
- 0x66, 0x7a, 0xaf, 0xfa, 0x0c, 0x96, 0x0f, 0xb2, 0x83, 0x1d, 0x55, 0x3e, 0x33, 0x84, 0xe9, 0xd2,
- 0xcb, 0x88, 0xf0, 0x19, 0x78, 0xcb, 0x6c, 0x73, 0x6d, 0xf6, 0x5e, 0x63, 0x76, 0x4a, 0x71, 0x8d,
- 0x9a, 0x01, 0xe4, 0x25, 0xdf, 0x37, 0xfd, 0x46, 0x06, 0xe6, 0xe9, 0x85, 0xb2, 0xfb, 0xb8, 0x66,
- 0x89, 0x37, 0xdf, 0xa1, 0x4f, 0x8e, 0x44, 0x68, 0xfa, 0x0c, 0x38, 0x4a, 0xdf, 0x01, 0xe7, 0xc0,
- 0xb1, 0xe4, 0xcc, 0x80, 0x63, 0xc9, 0xd9, 0x78, 0x2b, 0x87, 0xbf, 0xcf, 0xcb, 0xcf, 0x86, 0x28,
- 0x3f, 0x77, 0x85, 0x00, 0xd4, 0x8f, 0x2f, 0x23, 0xb1, 0x6f, 0xde, 0xe9, 0x4b, 0x4a, 0x55, 0x90,
- 0x94, 0x7b, 0x87, 0x27, 0x24, 0x79, 0x69, 0xf9, 0xbd, 0x0c, 0x5c, 0x15, 0x10, 0x53, 0xc6, 0x97,
- 0x98, 0xa0, 0x7c, 0x7e, 0x24, 0x82, 0x12, 0x3f, 0xea, 0x41, 0xd2, 0x12, 0xf3, 0xa7, 0xd2, 0xa7,
- 0x85, 0x7a, 0x81, 0xf2, 0x79, 0x13, 0x22, 0x2c, 0xa7, 0x21, 0x47, 0x7b, 0x18, 0x06, 0x0d, 0x7b,
- 0x8b, 0xd9, 0xdd, 0xc8, 0x9d, 0x31, 0x92, 0xa5, 0x6d, 0x0c, 0xf2, 0xc3, 0xd6, 0x35, 0x6a, 0x7b,
- 0x76, 0xbb, 0xd4, 0x76, 0x2c, 0xf4, 0xd3, 0x23, 0x11, 0x1c, 0xdf, 0x1b, 0x4e, 0x19, 0xc6, 0x1b,
- 0x6e, 0xa8, 0x55, 0x0e, 0xaf, 0x05, 0x47, 0xb2, 0xca, 0x11, 0x52, 0x79, 0xf2, 0xf8, 0xbd, 0x43,
- 0xa1, 0x97, 0xcb, 0x57, 0xb1, 0xb3, 0x28, 0x5a, 0x88, 0xe8, 0x81, 0x51, 0x00, 0x79, 0xd2, 0x33,
- 0x93, 0xd8, 0xe5, 0x47, 0xe4, 0x45, 0x3c, 0x1b, 0x15, 0x19, 0x66, 0x5f, 0x98, 0x0e, 0xf6, 0x50,
- 0x38, 0x12, 0xa4, 0xe4, 0xa2, 0xeb, 0xc7, 0x20, 0x23, 0x79, 0xcc, 0x5e, 0xac, 0x40, 0x8e, 0x5d,
- 0x24, 0xbe, 0x99, 0x88, 0xc3, 0x84, 0x18, 0x6c, 0x57, 0x62, 0x47, 0x2e, 0xf6, 0x75, 0xdb, 0xc9,
- 0xed, 0xc5, 0x1d, 0xd1, 0x7d, 0xda, 0xdf, 0x49, 0xc3, 0x74, 0x15, 0x3b, 0x45, 0xc3, 0xb6, 0x4d,
- 0x63, 0x7b, 0x54, 0x1e, 0xdf, 0xb2, 0xde, 0xc3, 0xe8, 0xbb, 0x29, 0xd9, 0x93, 0x37, 0xfe, 0x42,
- 0xb8, 0x47, 0x6a, 0x48, 0x14, 0x40, 0xb9, 0x8b, 0xcc, 0x07, 0x95, 0x36, 0x06, 0x8f, 0xed, 0x34,
- 0x4c, 0x78, 0xa7, 0xef, 0x6e, 0x13, 0x4e, 0x64, 0xee, 0x38, 0xbb, 0xde, 0x81, 0x19, 0xf2, 0x7c,
- 0xf0, 0xd4, 0x17, 0x7a, 0x55, 0x4c, 0x47, 0xf9, 0xe8, 0xa3, 0x83, 0xf1, 0x74, 0x2c, 0x8e, 0x3b,
- 0xfc, 0x51, 0x1d, 0x16, 0xfc, 0x9d, 0x09, 0xb6, 0x1c, 0xb9, 0x66, 0x38, 0xf8, 0x32, 0xfa, 0x4b,
- 0x05, 0x26, 0xaa, 0xd8, 0x71, 0xc7, 0x5b, 0x97, 0xfc, 0x43, 0x4b, 0xb8, 0xca, 0xad, 0x78, 0x4c,
- 0xb1, 0x35, 0x8c, 0x67, 0xc0, 0x54, 0xc7, 0xb6, 0x1a, 0xb8, 0xdb, 0x65, 0xab, 0x17, 0xbc, 0xa3,
- 0x5a, 0xbf, 0xd1, 0x9f, 0x90, 0xb6, 0xb0, 0xe1, 0xfd, 0xa3, 0x07, 0xbf, 0xc7, 0x35, 0x03, 0x68,
- 0x49, 0xac, 0x81, 0xe3, 0x36, 0x03, 0xa2, 0x2a, 0x4f, 0x1e, 0xe8, 0xcf, 0x2a, 0x30, 0x53, 0xc5,
- 0x8e, 0xcf, 0xc5, 0x18, 0x9b, 0x1c, 0xe1, 0xf0, 0x0a, 0x50, 0x2a, 0x87, 0x83, 0x52, 0xfe, 0x86,
- 0x36, 0x91, 0x9b, 0x7e, 0x61, 0x63, 0xbc, 0xa1, 0x4d, 0x8e, 0x82, 0xe4, 0x41, 0xfd, 0xad, 0x47,
- 0xc3, 0x14, 0xa1, 0x85, 0x28, 0xec, 0xcf, 0x67, 0x02, 0xe5, 0xfd, 0x42, 0x42, 0xca, 0x7b, 0x0f,
- 0x64, 0xc9, 0xb5, 0xf1, 0x44, 0x71, 0xa7, 0x65, 0xcc, 0xf6, 0x75, 0x37, 0xbb, 0x4e, 0xff, 0xea,
- 0xef, 0xa7, 0x99, 0x8d, 0xe7, 0xa7, 0xf9, 0xc6, 0x74, 0xac, 0x91, 0x90, 0xce, 0x1d, 0x46, 0xa8,
- 0xf2, 0x31, 0xc6, 0xcd, 0x88, 0xba, 0x93, 0x17, 0x8e, 0x17, 0x2a, 0x30, 0xe9, 0x8e, 0xdb, 0xc4,
- 0x1e, 0x3f, 0x7f, 0x78, 0x71, 0xe8, 0x6f, 0xe8, 0xc7, 0xec, 0x81, 0x3d, 0x8e, 0x8c, 0xce, 0xbc,
- 0x8f, 0xd1, 0x03, 0x47, 0x55, 0x9e, 0x3c, 0x1e, 0xef, 0xa2, 0x78, 0x10, 0x7d, 0x40, 0x6f, 0x52,
- 0x40, 0x59, 0xc1, 0xce, 0xb8, 0xad, 0xc8, 0xb7, 0x4b, 0x07, 0x35, 0x12, 0x18, 0x46, 0x68, 0x5e,
- 0x58, 0xc1, 0xa3, 0x51, 0x20, 0xb9, 0x68, 0x46, 0x52, 0x04, 0x24, 0x8f, 0xda, 0xfb, 0x28, 0x6a,
- 0x74, 0x73, 0xe1, 0xa7, 0x46, 0xd0, 0xab, 0x8e, 0x77, 0xe1, 0xc3, 0x63, 0x20, 0x29, 0xe3, 0xa8,
- 0xf4, 0xad, 0x5f, 0xe5, 0x63, 0xb9, 0x11, 0x0d, 0x5c, 0x65, 0xdf, 0xc1, 0x8d, 0x8b, 0xb8, 0x89,
- 0x7e, 0xfc, 0xf0, 0xd0, 0xcd, 0xc3, 0x44, 0x83, 0x96, 0x46, 0xc0, 0x9b, 0xd4, 0xbd, 0xd7, 0x18,
- 0xd7, 0xfb, 0x8a, 0x1d, 0x11, 0xfd, 0x7d, 0x8c, 0xd7, 0xfb, 0x4a, 0x54, 0x3f, 0x06, 0xb3, 0x85,
- 0xce, 0x32, 0x4a, 0x0d, 0xab, 0x8d, 0xfe, 0xe3, 0xe1, 0x61, 0xb9, 0x16, 0xa6, 0xcc, 0x86, 0xd5,
- 0x2e, 0xed, 0x7a, 0x61, 0x00, 0xa7, 0xf4, 0x20, 0xc1, 0xfb, 0xaa, 0xed, 0x5a, 0x0f, 0x9a, 0xde,
- 0x35, 0xdb, 0x7e, 0xc2, 0xb0, 0xc6, 0x84, 0x4b, 0xfa, 0x51, 0x19, 0x13, 0x7d, 0xea, 0x4e, 0x1e,
- 0xb2, 0x8f, 0x06, 0xde, 0x6d, 0xb4, 0x2b, 0x7c, 0x58, 0xac, 0x02, 0x0f, 0x33, 0x9c, 0xf1, 0xad,
- 0x38, 0x92, 0xe1, 0x2c, 0x82, 0x80, 0x31, 0xdc, 0x44, 0x12, 0xe0, 0x98, 0xf8, 0x1a, 0xf0, 0x21,
- 0xd0, 0x19, 0x9d, 0x79, 0x38, 0x24, 0x3a, 0x47, 0x63, 0x22, 0x7e, 0x90, 0x05, 0xc5, 0x64, 0x16,
- 0x0f, 0xfa, 0x4f, 0xa3, 0x00, 0xe7, 0xae, 0x61, 0xfc, 0x15, 0xa8, 0xb7, 0x42, 0x8c, 0x8b, 0x89,
- 0x0f, 0x70, 0xd0, 0x2d, 0x65, 0x8c, 0x57, 0x76, 0xcb, 0xd4, 0x9f, 0x3c, 0x80, 0x3f, 0xa7, 0xc0,
- 0x1c, 0xf1, 0x11, 0x68, 0x61, 0xc3, 0xa6, 0x1d, 0xe5, 0x48, 0x1c, 0xe5, 0xdf, 0x25, 0x1d, 0x0a,
- 0x48, 0xe4, 0x43, 0x40, 0xc7, 0x48, 0xa0, 0x90, 0x8b, 0x03, 0x24, 0x49, 0xc2, 0x58, 0xb6, 0x51,
- 0xf2, 0x3e, 0x09, 0x4c, 0xc4, 0x47, 0x83, 0x47, 0x4c, 0x8f, 0x5c, 0x91, 0x19, 0x9e, 0xb2, 0x8d,
- 0xd9, 0x23, 0x57, 0x86, 0x88, 0xe4, 0x31, 0x79, 0xd3, 0xe3, 0xd9, 0x82, 0x73, 0x8d, 0xdc, 0xdb,
- 0xfd, 0x9a, 0x8c, 0x7f, 0xa2, 0xed, 0xb3, 0x23, 0xf1, 0xc0, 0x3c, 0x44, 0x08, 0x7c, 0x15, 0x32,
- 0xb6, 0x75, 0x89, 0x2e, 0x6d, 0xcd, 0xea, 0xe4, 0x99, 0x98, 0xfc, 0x56, 0x6b, 0x6f, 0xb7, 0x4d,
- 0x4f, 0x86, 0xce, 0xea, 0xde, 0xab, 0x7a, 0x23, 0xcc, 0x5e, 0x32, 0x9d, 0x9d, 0x55, 0x6c, 0x34,
- 0xb1, 0xad, 0x5b, 0x97, 0x88, 0xc7, 0xdc, 0xa4, 0x2e, 0x26, 0x8a, 0xfe, 0x2b, 0x12, 0xf6, 0x25,
- 0xb9, 0xcc, 0x7b, 0x2c, 0xc7, 0xdf, 0xe2, 0x58, 0x9e, 0xe1, 0x54, 0x25, 0x2f, 0x30, 0xef, 0x57,
- 0x60, 0x4a, 0xb7, 0x2e, 0x31, 0x21, 0xf9, 0xbf, 0x8f, 0x56, 0x46, 0x62, 0x4f, 0xf4, 0xe8, 0xe5,
- 0xec, 0x1e, 0xf9, 0x63, 0x9f, 0xe8, 0x45, 0x56, 0x3f, 0x96, 0x93, 0x4b, 0x33, 0xba, 0x75, 0xa9,
- 0x8a, 0x1d, 0xaa, 0x11, 0xa8, 0x3e, 0x22, 0x27, 0x6b, 0xb3, 0x4b, 0x0b, 0x64, 0xf3, 0x70, 0xff,
- 0x3d, 0xee, 0x2e, 0x82, 0xcf, 0x20, 0x9f, 0xc4, 0x71, 0xef, 0x22, 0x0c, 0xa4, 0x60, 0x0c, 0x31,
- 0x52, 0x14, 0x98, 0xd6, 0xad, 0x4b, 0xee, 0xd0, 0xb0, 0x6c, 0xb6, 0x5a, 0xa3, 0x19, 0x21, 0xe3,
- 0x1a, 0xff, 0x1e, 0x1b, 0x3c, 0x2a, 0xc6, 0x6e, 0xfc, 0x0f, 0x20, 0x20, 0x79, 0x18, 0x9e, 0x4f,
- 0x95, 0xc5, 0x1b, 0xa1, 0xdb, 0xa3, 0xc1, 0x61, 0x58, 0x85, 0xf0, 0xc9, 0x38, 0x32, 0x85, 0x08,
- 0xa3, 0x60, 0x2c, 0x3b, 0x27, 0x73, 0x45, 0x32, 0xcc, 0x8f, 0x56, 0x27, 0xde, 0x13, 0xcf, 0x35,
- 0x91, 0x0d, 0xbb, 0x02, 0x21, 0x23, 0x41, 0x23, 0x86, 0x0b, 0xa2, 0x04, 0x0d, 0xc9, 0xe3, 0xf1,
- 0x21, 0x05, 0x66, 0x28, 0x09, 0x0f, 0x13, 0x2b, 0x60, 0x28, 0xa5, 0xe2, 0x5b, 0x70, 0x34, 0x4a,
- 0x15, 0x41, 0xc1, 0x58, 0xee, 0xf3, 0x74, 0xed, 0xb8, 0x21, 0x8e, 0x8f, 0x87, 0x21, 0x38, 0xb4,
- 0x31, 0x36, 0xc2, 0x23, 0xe4, 0xc3, 0x18, 0x63, 0x47, 0x74, 0x8c, 0xfc, 0xf9, 0xbe, 0x16, 0x8d,
- 0x12, 0x83, 0x43, 0xa8, 0xc2, 0x08, 0x61, 0x18, 0x52, 0x15, 0x8e, 0x08, 0x89, 0xaf, 0x2a, 0x00,
- 0x94, 0x80, 0x75, 0x6b, 0x9f, 0x5c, 0xdf, 0x33, 0x82, 0xee, 0xac, 0xd7, 0xad, 0x5e, 0x19, 0xe0,
- 0x56, 0x1f, 0x33, 0x84, 0x4b, 0xdc, 0x95, 0x40, 0x8e, 0xcb, 0x6e, 0x23, 0xc7, 0xbe, 0x12, 0x18,
- 0x5d, 0x7f, 0xf2, 0x18, 0x7f, 0x99, 0x5a, 0x73, 0xc1, 0x01, 0xd3, 0x5f, 0x1e, 0x09, 0xca, 0xdc,
- 0xec, 0x5f, 0x11, 0x67, 0xff, 0x87, 0xc0, 0x76, 0x58, 0x1b, 0x71, 0xd0, 0xc1, 0xd1, 0xe4, 0x6d,
- 0xc4, 0xa3, 0x3b, 0x20, 0xfa, 0x53, 0x19, 0x38, 0xce, 0x3a, 0x91, 0x1f, 0x06, 0x88, 0x63, 0x9e,
- 0xc3, 0x13, 0x3a, 0xc9, 0x01, 0x28, 0x8f, 0x6a, 0x41, 0x2a, 0xce, 0x52, 0xa6, 0x04, 0x79, 0x63,
- 0x59, 0xdd, 0xc8, 0x69, 0x97, 0x3b, 0x46, 0xbb, 0x29, 0x1f, 0xee, 0x77, 0x00, 0xf0, 0xde, 0x5a,
- 0xa3, 0x22, 0xae, 0x35, 0xf6, 0x59, 0x99, 0x8c, 0xbd, 0x73, 0x4d, 0x58, 0x46, 0xc9, 0x1d, 0xfb,
- 0xce, 0x75, 0x78, 0xdd, 0xc9, 0xa3, 0xf4, 0x1e, 0x05, 0x32, 0x55, 0xcb, 0x76, 0xd0, 0x43, 0x71,
- 0xb4, 0x93, 0x72, 0x3e, 0x00, 0xc9, 0x7b, 0x57, 0x8b, 0xc2, 0xfd, 0xca, 0xb7, 0x45, 0x1f, 0x75,
- 0x36, 0x1c, 0x83, 0x78, 0x75, 0xbb, 0xf5, 0x73, 0x17, 0x2d, 0xc7, 0x8d, 0xa7, 0x43, 0xf9, 0x57,
- 0x0d, 0x3f, 0x80, 0x91, 0x58, 0x3c, 0x9d, 0xd0, 0x9a, 0x93, 0xc7, 0xed, 0xbf, 0xcd, 0x31, 0xdf,
- 0xd6, 0x65, 0xb3, 0x85, 0xd1, 0x43, 0xd4, 0x65, 0xa4, 0x6c, 0xec, 0x62, 0xf9, 0x23, 0x31, 0x91,
- 0xae, 0xad, 0x24, 0xbe, 0xac, 0x12, 0xc4, 0x97, 0x8d, 0xab, 0x50, 0xf4, 0x00, 0x3a, 0x25, 0x69,
- 0xdc, 0x0a, 0x15, 0x51, 0xf7, 0x58, 0xe2, 0x74, 0x9e, 0xa8, 0x62, 0x87, 0x1a, 0x95, 0x15, 0xef,
- 0xae, 0x96, 0x9f, 0x18, 0x49, 0xc4, 0x4e, 0xff, 0x2a, 0x18, 0xa5, 0xe7, 0x2a, 0x98, 0xf7, 0xf3,
- 0xe0, 0xac, 0x8b, 0xe0, 0x3c, 0x25, 0x9c, 0x41, 0x22, 0x91, 0x23, 0x81, 0xe9, 0xed, 0x3e, 0x4c,
- 0x1b, 0x02, 0x4c, 0x77, 0x0f, 0x49, 0x45, 0xf2, 0x80, 0x7d, 0xc1, 0x35, 0x55, 0xc8, 0xa4, 0xbf,
- 0xd0, 0x6e, 0xb2, 0x08, 0xab, 0xff, 0x78, 0xd4, 0x9b, 0x6d, 0x07, 0x43, 0xb0, 0x0a, 0xb1, 0x9c,
- 0xb3, 0xbd, 0xf7, 0xda, 0x2f, 0xd2, 0x70, 0xae, 0x6e, 0x27, 0x4a, 0x76, 0xda, 0xe4, 0xef, 0xb6,
- 0xf7, 0xff, 0x43, 0x7f, 0x16, 0x6f, 0xfd, 0x8d, 0x14, 0xd1, 0xc3, 0xb8, 0x84, 0x6d, 0xa0, 0x18,
- 0x2b, 0x73, 0x12, 0xd4, 0xfd, 0xfb, 0x70, 0x0b, 0x0b, 0x22, 0x81, 0x0c, 0xe9, 0x16, 0x46, 0x0a,
- 0x38, 0x4a, 0xb7, 0xb0, 0x41, 0x04, 0x8c, 0xe1, 0x3e, 0xfa, 0x2c, 0xdb, 0x95, 0x27, 0x3e, 0x93,
- 0xe8, 0xaf, 0xd3, 0x89, 0x8f, 0xb6, 0xdf, 0x4b, 0xc5, 0xf2, 0x63, 0x26, 0x74, 0x45, 0x0f, 0xb7,
- 0x71, 0x3c, 0x93, 0xa3, 0x8a, 0x1b, 0xc3, 0xfa, 0x4f, 0x9a, 0xf8, 0x94, 0x9f, 0x37, 0x9b, 0xce,
- 0xce, 0x88, 0x4e, 0x66, 0x5c, 0x72, 0xcb, 0xf2, 0x2e, 0x36, 0x26, 0x2f, 0xe8, 0x5f, 0x52, 0xb1,
- 0x42, 0x41, 0xf9, 0x2c, 0x21, 0x64, 0x85, 0xb0, 0x38, 0x46, 0x00, 0xa7, 0xc8, 0xf2, 0xc6, 0x28,
- 0xd1, 0xe7, 0xcc, 0x26, 0xb6, 0x1e, 0x86, 0x12, 0x4d, 0xe8, 0x1a, 0x9d, 0x44, 0x47, 0x15, 0xf7,
- 0xef, 0x54, 0xa2, 0x7d, 0x96, 0x8c, 0x48, 0xa2, 0x23, 0xcb, 0x4b, 0x9e, 0xc7, 0xaf, 0x9a, 0x61,
- 0x13, 0xa2, 0x35, 0xb3, 0x7d, 0x11, 0xfd, 0x53, 0xce, 0xbb, 0x52, 0xf9, 0xbc, 0xe9, 0xec, 0xb0,
- 0x98, 0x2e, 0xbf, 0x27, 0x7d, 0xc7, 0xc9, 0x10, 0x71, 0x5b, 0xc4, 0xb0, 0x50, 0xd9, 0x03, 0x61,
- 0xa1, 0x0a, 0x30, 0x6b, 0xb6, 0x1d, 0x6c, 0xb7, 0x8d, 0xd6, 0x72, 0xcb, 0xd8, 0xee, 0xce, 0x4f,
- 0xf4, 0xbd, 0x84, 0xae, 0xc4, 0xe5, 0xd1, 0xc5, 0x3f, 0xf8, 0x8b, 0x27, 0x27, 0xc5, 0x0b, 0xf4,
- 0x43, 0xa2, 0x58, 0x4d, 0x85, 0x47, 0xb1, 0xf2, 0xa3, 0x54, 0xc1, 0xe0, 0x20, 0xd7, 0xb2, 0x36,
- 0x6e, 0xcc, 0xb0, 0x7d, 0xb7, 0x49, 0x46, 0x53, 0xf3, 0x43, 0x38, 0xfe, 0xaa, 0x12, 0x6b, 0x95,
- 0xce, 0x15, 0x84, 0x85, 0x5e, 0x21, 0x88, 0x6d, 0xa1, 0xf2, 0x8d, 0x57, 0x7a, 0x1a, 0xef, 0x9b,
- 0x3c, 0x19, 0x09, 0x93, 0x87, 0x17, 0xaa, 0xac, 0x9c, 0x50, 0xc5, 0x59, 0xf4, 0x93, 0x69, 0xed,
- 0x18, 0x4e, 0x15, 0x65, 0xe1, 0x84, 0x17, 0xb5, 0xb6, 0xd3, 0xc1, 0x86, 0x6d, 0xb4, 0x1b, 0x18,
- 0x7d, 0x34, 0x3d, 0x0a, 0xb3, 0x77, 0x19, 0x26, 0xcd, 0x86, 0xd5, 0xae, 0x9a, 0xcf, 0xf2, 0x2e,
- 0x89, 0x8b, 0x0e, 0x96, 0x4e, 0x38, 0x52, 0x62, 0x7f, 0xe8, 0xfe, 0xbf, 0x6a, 0x09, 0xa6, 0x1a,
- 0x86, 0xdd, 0xa4, 0xc1, 0xf4, 0xb2, 0x3d, 0x17, 0x32, 0x85, 0x16, 0x54, 0xf4, 0x7e, 0xd1, 0x83,
- 0xbf, 0xd5, 0x8a, 0xc8, 0xc4, 0x5c, 0x4f, 0x54, 0x8e, 0xd0, 0xc2, 0x96, 0x82, 0x9f, 0x04, 0x9e,
- 0xbb, 0xdc, 0xb1, 0x71, 0x8b, 0xdc, 0x1e, 0x4f, 0x7b, 0x88, 0x29, 0x3d, 0x48, 0x88, 0x3b, 0xcd,
- 0x27, 0x55, 0x1d, 0x40, 0x63, 0xdc, 0xd3, 0x7c, 0x29, 0x2a, 0x92, 0x97, 0xcc, 0x77, 0xe6, 0x60,
- 0x96, 0xf6, 0x6a, 0x8c, 0x9d, 0xe8, 0xe7, 0xc8, 0xe5, 0xcf, 0xce, 0xfd, 0xf8, 0x0a, 0xaa, 0x1e,
- 0x7e, 0x4c, 0xce, 0x83, 0x72, 0xd1, 0x0f, 0x1c, 0xe8, 0x3e, 0xc6, 0xdd, 0x7f, 0xf7, 0xe8, 0x5a,
- 0xa0, 0x34, 0x8d, 0x7b, 0xff, 0x3d, 0xba, 0xfa, 0xe4, 0xf1, 0xf9, 0x45, 0x05, 0x94, 0x42, 0xb3,
- 0x89, 0x1a, 0x87, 0x87, 0xe2, 0x7a, 0x98, 0xf6, 0x74, 0x26, 0x88, 0xe5, 0xc8, 0x27, 0xc5, 0x5d,
- 0xcc, 0xf4, 0x79, 0x53, 0x68, 0x8e, 0x7d, 0x77, 0x20, 0xa2, 0xee, 0xe4, 0x41, 0xf9, 0xe5, 0x09,
- 0xa6, 0x34, 0x8b, 0x96, 0x75, 0x91, 0x1c, 0x79, 0x79, 0x48, 0x81, 0xec, 0x32, 0x76, 0x1a, 0x3b,
- 0x23, 0xd2, 0x99, 0x3d, 0xbb, 0xe5, 0xe9, 0xcc, 0x81, 0x9b, 0xec, 0x07, 0xdb, 0xb0, 0x1e, 0x59,
- 0x0b, 0x84, 0xa4, 0x71, 0x47, 0x69, 0x8e, 0xac, 0x3d, 0x79, 0x70, 0xfe, 0x45, 0x81, 0x39, 0x7f,
- 0x85, 0x8b, 0x62, 0xf2, 0x0b, 0x0f, 0xbb, 0x75, 0x4b, 0xf4, 0xf9, 0x78, 0xa1, 0xce, 0x7c, 0x9e,
- 0x8a, 0x2d, 0x4b, 0x78, 0x61, 0x31, 0x46, 0x10, 0x34, 0x39, 0x02, 0xc7, 0x30, 0x83, 0x57, 0x60,
- 0x92, 0x10, 0xb4, 0x64, 0xee, 0x13, 0x17, 0x40, 0x61, 0xa1, 0xf1, 0xd9, 0x23, 0x59, 0x68, 0xbc,
- 0x5b, 0x5c, 0x68, 0x94, 0x8c, 0x5c, 0xec, 0xad, 0x33, 0xc6, 0xf4, 0x89, 0x71, 0xff, 0x1f, 0xf9,
- 0x32, 0x63, 0x0c, 0x9f, 0x98, 0x01, 0xf5, 0x27, 0x8f, 0xe8, 0x27, 0xeb, 0xac, 0xb3, 0xf5, 0x36,
- 0x46, 0xd1, 0x7f, 0x3b, 0x01, 0x99, 0x73, 0xee, 0xc3, 0xff, 0x0c, 0x6e, 0xb6, 0x7a, 0xf9, 0x08,
- 0x82, 0x2c, 0x3c, 0x1d, 0x32, 0x6e, 0xf9, 0x6c, 0xda, 0x72, 0x8b, 0xdc, 0x2e, 0xad, 0x4b, 0x88,
- 0x4e, 0xfe, 0x53, 0x4f, 0x43, 0xae, 0x6b, 0xed, 0xd9, 0x0d, 0xd7, 0x7c, 0x76, 0x25, 0x86, 0xbd,
- 0xc5, 0x0d, 0x2e, 0x2a, 0x14, 0xbd, 0x30, 0x3a, 0xd7, 0x4f, 0xee, 0xa2, 0x23, 0x45, 0xb8, 0xe8,
- 0x28, 0xc6, 0xfe, 0x81, 0x04, 0x6d, 0xc9, 0x4b, 0xc4, 0x5f, 0x93, 0x3b, 0xff, 0x9a, 0xa3, 0x82,
- 0x3d, 0x84, 0x2d, 0x87, 0x15, 0x87, 0xb8, 0x8e, 0xdb, 0x22, 0x6b, 0xfd, 0x78, 0xee, 0x63, 0x75,
- 0xdc, 0x96, 0xa0, 0x61, 0x2c, 0xa7, 0xcd, 0x73, 0xcc, 0xd9, 0xf4, 0x81, 0x51, 0xa2, 0x9b, 0x11,
- 0x84, 0xfe, 0x50, 0xe8, 0x8c, 0xd0, 0x09, 0x75, 0x68, 0x74, 0x8e, 0xc8, 0x0d, 0xf5, 0x8f, 0x14,
- 0x12, 0xd1, 0xd2, 0x33, 0x72, 0xe4, 0x2f, 0x2c, 0x8a, 0x0d, 0x91, 0x3b, 0x06, 0x0b, 0xf1, 0x9c,
- 0x67, 0x87, 0x0f, 0xf1, 0x2d, 0xb2, 0x8e, 0xa3, 0x7f, 0xdc, 0x21, 0xbe, 0x65, 0x09, 0x49, 0x1e,
- 0xc8, 0x37, 0xd0, 0x0b, 0xc2, 0x0a, 0x0d, 0xc7, 0xdc, 0x1f, 0xb1, 0xa6, 0x89, 0xc3, 0x4b, 0xcc,
- 0xa8, 0xbe, 0x07, 0x38, 0x44, 0x29, 0x1c, 0x77, 0x54, 0x5f, 0x39, 0x32, 0xc6, 0x70, 0x1c, 0x1d,
- 0x5c, 0xee, 0xb1, 0xb5, 0x99, 0x37, 0xb1, 0xd5, 0x00, 0x7c, 0x78, 0xb4, 0xce, 0xc2, 0x0c, 0x37,
- 0xf5, 0xf7, 0x2e, 0x9e, 0x11, 0xd2, 0xe2, 0x1e, 0x58, 0xf7, 0x59, 0x36, 0xf2, 0x85, 0x81, 0x18,
- 0x0b, 0xbe, 0x32, 0x44, 0x8c, 0xe5, 0x5e, 0x37, 0x6f, 0x0c, 0x1b, 0x13, 0x56, 0xbf, 0xc7, 0x63,
- 0x55, 0x11, 0xb1, 0xba, 0x53, 0x86, 0x4d, 0x72, 0x63, 0x9a, 0xd4, 0xbc, 0xf1, 0x1d, 0x3e, 0x5c,
- 0xba, 0x00, 0xd7, 0xd3, 0x87, 0xa6, 0x23, 0x79, 0xc4, 0xde, 0xac, 0xd0, 0xcb, 0x9d, 0x0a, 0xfb,
- 0x86, 0xd9, 0x22, 0x51, 0x06, 0x46, 0x70, 0x39, 0xf1, 0x9f, 0xf3, 0xa0, 0x9c, 0x13, 0x41, 0xb9,
- 0x4f, 0x86, 0x19, 0x02, 0x45, 0x21, 0xd8, 0x3c, 0x89, 0x5f, 0x1c, 0xa7, 0x21, 0x86, 0xaf, 0xee,
- 0x0d, 0xe7, 0xc7, 0xbe, 0xf3, 0xab, 0xe6, 0xbf, 0xed, 0x83, 0xf4, 0x80, 0x00, 0x92, 0x76, 0x58,
- 0xba, 0x92, 0xc7, 0xea, 0x15, 0x74, 0xe8, 0xaa, 0xd2, 0xe9, 0xd5, 0x68, 0x86, 0x2e, 0x36, 0x73,
- 0x53, 0x84, 0x99, 0x5b, 0xcc, 0x33, 0x0e, 0x81, 0xeb, 0xae, 0x47, 0xdc, 0x20, 0x75, 0xca, 0x8c,
- 0xf8, 0x8c, 0xc3, 0x40, 0x0a, 0x92, 0x07, 0xe7, 0x1f, 0x14, 0x80, 0x15, 0xdb, 0xda, 0xeb, 0x54,
- 0xec, 0x26, 0xb6, 0xd1, 0xdf, 0x06, 0x93, 0xb5, 0x97, 0x8c, 0x60, 0xb2, 0xb6, 0x01, 0xb0, 0xed,
- 0x17, 0xce, 0x7a, 0xa3, 0xc7, 0xcb, 0x4d, 0xcd, 0x02, 0xa2, 0x74, 0xae, 0x0c, 0xf1, 0x9a, 0xdf,
- 0x1f, 0x15, 0x31, 0x8e, 0x1a, 0x5f, 0x82, 0xe2, 0x46, 0x39, 0x59, 0x7b, 0x97, 0x8f, 0x75, 0x4d,
- 0xc0, 0xfa, 0xbe, 0x43, 0x50, 0x92, 0x3c, 0xe6, 0xff, 0x38, 0x01, 0xd3, 0x74, 0x6b, 0x95, 0xf2,
- 0xf4, 0xef, 0x03, 0xd0, 0x7f, 0x79, 0x04, 0xa0, 0x6f, 0xc2, 0x8c, 0x15, 0x94, 0x4e, 0xc7, 0x3f,
- 0x7e, 0xb1, 0x2c, 0x12, 0x76, 0x8e, 0x2e, 0x5d, 0x28, 0x06, 0x7d, 0x98, 0x47, 0x5e, 0x17, 0x91,
- 0xbf, 0x3b, 0x82, 0xdf, 0x5c, 0x89, 0xa3, 0x84, 0xfe, 0xdd, 0x3e, 0xf4, 0x9b, 0x02, 0xf4, 0x85,
- 0xc3, 0x90, 0x32, 0x86, 0x2b, 0x0e, 0x14, 0xc8, 0x90, 0x13, 0x89, 0xbf, 0x91, 0xe0, 0x5a, 0xcc,
- 0x3c, 0x4c, 0x10, 0x95, 0xf5, 0xe7, 0x88, 0xde, 0xab, 0xfb, 0xc5, 0xd8, 0x72, 0xb0, 0xed, 0x7b,
- 0x97, 0x78, 0xaf, 0x2e, 0x0d, 0x9e, 0x27, 0x78, 0x77, 0x3e, 0x47, 0x37, 0x8d, 0xfd, 0x84, 0xa1,
- 0x27, 0x90, 0x3c, 0xc7, 0x47, 0x76, 0x46, 0x71, 0x98, 0x09, 0xe4, 0x00, 0x42, 0x92, 0x07, 0xfe,
- 0x8b, 0x19, 0x98, 0xa7, 0x2b, 0x80, 0xcb, 0xb6, 0xb5, 0xdb, 0x73, 0xa3, 0x98, 0x79, 0x78, 0x59,
- 0xb8, 0x09, 0xe6, 0x1c, 0xc1, 0x07, 0x9e, 0xc9, 0x44, 0x4f, 0x2a, 0xfa, 0x0c, 0xef, 0xff, 0xf2,
- 0x4c, 0x11, 0xc9, 0xc5, 0x08, 0x06, 0x86, 0xd1, 0x1e, 0x7b, 0x53, 0x45, 0x92, 0x50, 0x6e, 0x41,
- 0x51, 0x19, 0x6a, 0x7d, 0xd9, 0x97, 0xa9, 0xac, 0x8c, 0x4c, 0x7d, 0xc0, 0x97, 0xa9, 0x1f, 0x17,
- 0x64, 0x6a, 0xe5, 0xf0, 0x2c, 0x49, 0x5e, 0xb6, 0x5e, 0xe3, 0x6f, 0xe2, 0xf9, 0x5b, 0xac, 0xbb,
- 0x09, 0x6c, 0xac, 0xf2, 0xbe, 0x63, 0x19, 0xc1, 0x77, 0x4c, 0xbc, 0x03, 0x24, 0xc6, 0xaa, 0x85,
- 0x48, 0x75, 0x88, 0x2c, 0xcd, 0x41, 0xda, 0xf4, 0xa8, 0x4b, 0x9b, 0xcd, 0xa1, 0xd6, 0x25, 0x22,
- 0x2b, 0x1a, 0xc3, 0x3a, 0xe0, 0x1c, 0xe4, 0x96, 0xcd, 0x96, 0x83, 0x6d, 0xf4, 0x65, 0xb6, 0x2a,
- 0xf1, 0x9a, 0x04, 0x07, 0x80, 0x25, 0xc8, 0x6d, 0x91, 0xda, 0x98, 0xc9, 0x7c, 0xab, 0x9c, 0xf6,
- 0x50, 0x0a, 0x75, 0xf6, 0x6f, 0xdc, 0x88, 0x88, 0x3d, 0xc5, 0x8c, 0x6c, 0x39, 0x23, 0x46, 0x44,
- 0xc4, 0xc1, 0x24, 0x8c, 0xe5, 0x32, 0xb0, 0x9c, 0x8e, 0x77, 0xdd, 0x31, 0xfe, 0x62, 0x72, 0x08,
- 0xe7, 0x41, 0x31, 0x9b, 0x5d, 0xd2, 0x39, 0x4e, 0xe9, 0xee, 0x63, 0x5c, 0xbf, 0xae, 0x5e, 0x56,
- 0x51, 0x92, 0xc7, 0xed, 0xd7, 0x25, 0x45, 0x45, 0xf2, 0x98, 0x7d, 0x8f, 0x38, 0xf5, 0x76, 0x5a,
- 0x46, 0x03, 0xbb, 0xd4, 0x27, 0x86, 0x1a, 0xed, 0xc9, 0x32, 0x5e, 0x4f, 0xc6, 0xe9, 0x69, 0xf6,
- 0x10, 0x7a, 0x3a, 0xec, 0x92, 0xb1, 0xcf, 0x73, 0xd2, 0xf0, 0x23, 0x5b, 0x32, 0x8e, 0x24, 0x63,
- 0x0c, 0x57, 0xbd, 0x7a, 0x87, 0x97, 0xc7, 0xaa, 0xad, 0xc3, 0x6e, 0xa8, 0x31, 0x66, 0x8d, 0xec,
- 0xa0, 0xf2, 0x30, 0x1b, 0x6a, 0xe1, 0x34, 0x8c, 0x01, 0xad, 0x39, 0x86, 0xd6, 0xe7, 0xd8, 0x30,
- 0x9a, 0xf0, 0x9e, 0x76, 0xd7, 0xb2, 0x9d, 0x78, 0x7b, 0xda, 0x2e, 0x75, 0x3a, 0xf9, 0x2f, 0xee,
- 0x21, 0x39, 0xf1, 0x2c, 0xfb, 0xa8, 0x86, 0xcf, 0x18, 0x87, 0xe4, 0x06, 0x11, 0x90, 0x3c, 0xbc,
- 0x6f, 0x3d, 0xa2, 0xc1, 0x73, 0x58, 0x75, 0x64, 0x3a, 0x30, 0xb2, 0xa1, 0x73, 0x18, 0x75, 0x0c,
- 0xa7, 0x21, 0x79, 0xbc, 0xbe, 0xcd, 0x0d, 0x9c, 0x6f, 0x1e, 0xe3, 0xc0, 0xe9, 0x69, 0x66, 0x76,
- 0x48, 0xcd, 0x1c, 0x76, 0xaf, 0x8e, 0xf1, 0x7a, 0x74, 0x03, 0xe6, 0x30, 0x7b, 0x75, 0x11, 0x44,
- 0x24, 0x8f, 0xf8, 0x5b, 0x14, 0xc8, 0x56, 0xc7, 0x3f, 0x5e, 0x0e, 0x3b, 0x17, 0x21, 0xbc, 0xaa,
- 0x8e, 0x6c, 0xb8, 0x1c, 0x66, 0x2e, 0x12, 0x4a, 0xc2, 0x18, 0x2e, 0x3b, 0x38, 0x0e, 0x33, 0x64,
- 0x49, 0xc4, 0xdb, 0x12, 0xff, 0x36, 0x1b, 0x35, 0xdf, 0x98, 0xa0, 0xae, 0x3e, 0x03, 0x26, 0xbd,
- 0x7d, 0x33, 0x36, 0x72, 0x2e, 0xc8, 0xe9, 0xa7, 0xbf, 0xef, 0xe6, 0xff, 0x7f, 0x28, 0xc7, 0x95,
- 0x91, 0xef, 0xab, 0x0f, 0xeb, 0xb8, 0x72, 0xa4, 0x7b, 0xeb, 0x7f, 0x16, 0x8c, 0xa8, 0xff, 0x31,
- 0x39, 0xcc, 0x7b, 0xf7, 0xdc, 0x33, 0x7d, 0xf6, 0xdc, 0x3f, 0xca, 0x63, 0x59, 0x15, 0xb1, 0xbc,
- 0x47, 0x96, 0x85, 0x23, 0x1c, 0x6b, 0xdf, 0xe3, 0xc3, 0x79, 0x4e, 0x80, 0x73, 0xf1, 0x50, 0xb4,
- 0x8c, 0xe1, 0x90, 0x6a, 0x26, 0x18, 0x73, 0x3f, 0x96, 0xa0, 0x1e, 0xf7, 0x9c, 0x80, 0xc9, 0x1c,
- 0x38, 0x01, 0x23, 0x68, 0x7a, 0xf6, 0x90, 0x9a, 0xfe, 0x31, 0x5e, 0x3a, 0x6a, 0xa2, 0x74, 0x3c,
- 0x5d, 0x1e, 0x91, 0xd1, 0x8d, 0xcc, 0xef, 0xf5, 0xc5, 0xe3, 0xbc, 0x20, 0x1e, 0xc5, 0xc3, 0x11,
- 0x93, 0xbc, 0x7c, 0xfc, 0xb1, 0x37, 0xa1, 0x3d, 0x62, 0x7d, 0x1f, 0x76, 0xab, 0x58, 0x60, 0xe2,
- 0xc8, 0x46, 0xee, 0x61, 0xb6, 0x8a, 0x07, 0x51, 0x32, 0x86, 0xf8, 0x77, 0xb3, 0x30, 0x4d, 0x68,
- 0x3a, 0x6f, 0x36, 0xb7, 0xb1, 0x83, 0x7e, 0x95, 0xfa, 0x93, 0x7a, 0xd1, 0x46, 0x47, 0x14, 0x12,
- 0x2a, 0xec, 0x6c, 0x72, 0x5c, 0x8f, 0x0e, 0x4a, 0xe4, 0x02, 0x47, 0xe0, 0xb8, 0xa3, 0x56, 0x0e,
- 0xa4, 0x20, 0x79, 0xc8, 0x3e, 0x4c, 0xdd, 0x6d, 0xd6, 0x8c, 0x2b, 0xd6, 0x9e, 0x83, 0x9e, 0x3b,
- 0x82, 0x0e, 0x7a, 0x11, 0x72, 0x2d, 0x52, 0x1a, 0x3b, 0x42, 0x13, 0x3d, 0xdd, 0x61, 0x2c, 0xa0,
- 0xf5, 0xeb, 0xec, 0xcf, 0xb8, 0xe7, 0x68, 0x02, 0x3e, 0xd2, 0x72, 0xc6, 0x7d, 0x8e, 0x66, 0x40,
- 0xfd, 0x63, 0xb9, 0xd7, 0x68, 0xd2, 0xad, 0xdd, 0xdc, 0x35, 0x9d, 0x11, 0x45, 0xdb, 0x68, 0xb9,
- 0x65, 0x79, 0xd1, 0x36, 0xc8, 0x4b, 0xdc, 0xd3, 0xbd, 0x1c, 0x57, 0xdc, 0xdf, 0xc7, 0x7d, 0xba,
- 0x37, 0xba, 0xfa, 0xe4, 0x31, 0xf9, 0x2f, 0x54, 0xb3, 0xce, 0x51, 0x47, 0xe9, 0x04, 0x7d, 0xb0,
- 0x87, 0x56, 0x16, 0x4a, 0xda, 0xd1, 0x29, 0x4b, 0xdf, 0xfa, 0x93, 0x07, 0xe6, 0x53, 0x67, 0x20,
- 0xbb, 0x84, 0x2f, 0xec, 0x6d, 0xa3, 0xbb, 0x61, 0xb2, 0x66, 0x63, 0x5c, 0x6a, 0x6f, 0x59, 0x2e,
- 0x77, 0x1d, 0xf7, 0xd9, 0x83, 0x84, 0xbd, 0xb9, 0x78, 0xec, 0x60, 0xa3, 0x19, 0x9c, 0x15, 0xf4,
- 0x5e, 0xd1, 0xcb, 0xd3, 0x90, 0xa9, 0x3a, 0x86, 0x83, 0xa6, 0x7c, 0x6c, 0xd1, 0x73, 0x79, 0x2c,
- 0xee, 0x16, 0xb1, 0xb8, 0x49, 0xe0, 0x05, 0xa1, 0x60, 0xc1, 0xfd, 0x3f, 0x04, 0x00, 0x04, 0x93,
- 0x0f, 0x76, 0xad, 0xb6, 0x9b, 0xc3, 0x3b, 0xae, 0xea, 0xbd, 0xa3, 0x57, 0xfb, 0xec, 0xbe, 0x57,
- 0x60, 0xf7, 0x63, 0xe5, 0xaa, 0x18, 0xc3, 0x4a, 0x5b, 0x1a, 0xa6, 0x5c, 0xd6, 0xae, 0x62, 0xa3,
- 0xd9, 0x45, 0x8f, 0x0a, 0x84, 0x3f, 0x84, 0xcd, 0xe8, 0x83, 0xd2, 0x01, 0x50, 0x69, 0xab, 0xfc,
- 0xc2, 0xc3, 0x3d, 0x3a, 0xbc, 0xcd, 0xff, 0xb4, 0x18, 0x38, 0xe6, 0x36, 0xc8, 0x98, 0xed, 0x2d,
- 0x8b, 0xf9, 0x17, 0x3e, 0x22, 0xa4, 0x6c, 0x57, 0x26, 0x74, 0x92, 0x51, 0x32, 0x3a, 0x6a, 0x34,
- 0x59, 0x63, 0xb9, 0x68, 0x30, 0xe3, 0xd6, 0x8e, 0xfe, 0xaf, 0x81, 0xcc, 0x56, 0x55, 0xc8, 0x74,
- 0x0c, 0x67, 0x87, 0x55, 0x4d, 0x9e, 0x5d, 0x1b, 0x79, 0xaf, 0x6d, 0xb4, 0xad, 0xf6, 0x95, 0x5d,
- 0xf3, 0x59, 0xfe, 0x7d, 0xc6, 0x42, 0x9a, 0x4b, 0xf9, 0x36, 0x6e, 0x63, 0xdb, 0x70, 0x70, 0x75,
- 0x7f, 0x9b, 0xcc, 0xb1, 0x26, 0x75, 0x3e, 0x29, 0xb6, 0xfc, 0xbb, 0x14, 0x87, 0xcb, 0xff, 0x96,
- 0xd9, 0xc2, 0x24, 0xaa, 0x16, 0x93, 0x7f, 0xef, 0x3d, 0x96, 0xfc, 0xf7, 0xa9, 0x22, 0x79, 0x34,
- 0xbe, 0x9f, 0x86, 0x99, 0xaa, 0x2b, 0x70, 0xd5, 0xbd, 0xdd, 0x5d, 0xc3, 0xbe, 0x82, 0x6e, 0x08,
- 0x50, 0xe1, 0x44, 0x33, 0x25, 0xfa, 0xa5, 0xfc, 0x91, 0xf4, 0x55, 0xde, 0x4c, 0xb5, 0xb9, 0x1a,
- 0x62, 0xeb, 0xc1, 0x13, 0x20, 0xeb, 0x8a, 0xb7, 0xe7, 0x71, 0x19, 0xa9, 0x08, 0x34, 0xa7, 0x64,
- 0xf4, 0xb1, 0x81, 0xb4, 0x8d, 0x21, 0xf2, 0x49, 0x1a, 0x8e, 0x57, 0x1d, 0xa3, 0x71, 0x71, 0xc5,
- 0xb2, 0xad, 0x3d, 0xc7, 0x6c, 0xe3, 0x2e, 0x7a, 0x64, 0x80, 0x80, 0x27, 0xff, 0xa9, 0x40, 0xfe,
- 0xd1, 0xbf, 0xa6, 0x64, 0x47, 0x51, 0xbf, 0x5b, 0xe5, 0x8b, 0x0f, 0x09, 0x26, 0x26, 0x37, 0x2e,
- 0xca, 0x94, 0x38, 0x96, 0x53, 0x12, 0x79, 0xed, 0x72, 0xc7, 0xb2, 0x9d, 0x35, 0xab, 0x61, 0xb4,
- 0xba, 0x8e, 0x65, 0x63, 0x54, 0x89, 0xe4, 0x9a, 0xdb, 0xc3, 0x34, 0xad, 0x46, 0x30, 0x38, 0xb2,
- 0x37, 0x5e, 0xec, 0x14, 0x51, 0xc6, 0x3f, 0x2c, 0xbd, 0xcb, 0x48, 0xb9, 0xd2, 0x4b, 0x51, 0x88,
- 0x9c, 0xf7, 0xeb, 0xd2, 0xe2, 0x1d, 0x6c, 0x91, 0xdb, 0x79, 0x94, 0x22, 0x6a, 0x0c, 0x4b, 0xe5,
- 0x69, 0x98, 0xad, 0xee, 0x5d, 0xf0, 0x0b, 0xe9, 0xf2, 0x46, 0xc8, 0x6b, 0xa5, 0x23, 0x8a, 0x30,
- 0xc1, 0xe3, 0x0b, 0x0a, 0xe1, 0xef, 0x8d, 0x30, 0xdb, 0xe5, 0xb3, 0x31, 0xbc, 0xc5, 0x44, 0xc9,
- 0x48, 0x22, 0x83, 0x6b, 0x4d, 0x9e, 0x81, 0xef, 0x4d, 0xc3, 0x6c, 0xa5, 0x83, 0xdb, 0xb8, 0x49,
- 0xbd, 0x20, 0x05, 0x06, 0xbe, 0x3c, 0x26, 0x03, 0x85, 0x82, 0x42, 0x18, 0x18, 0x78, 0x2c, 0x2f,
- 0x79, 0xcc, 0x0b, 0x12, 0x62, 0x31, 0x2e, 0xaa, 0xb6, 0xe4, 0x19, 0xf7, 0xa5, 0x34, 0x4c, 0xeb,
- 0x7b, 0xed, 0x0d, 0xdb, 0x72, 0x47, 0x63, 0x1b, 0xdd, 0x13, 0x74, 0x10, 0xb7, 0xc2, 0x89, 0xe6,
- 0x9e, 0x4d, 0xd6, 0x9f, 0x4a, 0xed, 0x2a, 0x6e, 0x58, 0xed, 0x66, 0x97, 0xb4, 0x23, 0xab, 0x1f,
- 0xfc, 0x70, 0x57, 0xe6, 0xa1, 0x6f, 0x28, 0x29, 0xf4, 0x73, 0xd2, 0x61, 0x89, 0x68, 0xe3, 0xb9,
- 0xaa, 0xe5, 0x7b, 0x02, 0xc9, 0xe0, 0x43, 0x83, 0x6a, 0x48, 0x9e, 0xb9, 0x9f, 0x4b, 0x83, 0x5a,
- 0x68, 0x34, 0xac, 0xbd, 0xb6, 0x53, 0xc5, 0x2d, 0xdc, 0x70, 0x6a, 0xb6, 0xd1, 0xc0, 0xbc, 0xfd,
- 0x9c, 0x07, 0xa5, 0x69, 0xda, 0xac, 0x0f, 0x76, 0x1f, 0x19, 0x1f, 0x5f, 0x2e, 0xbd, 0xe3, 0x48,
- 0x5b, 0x79, 0xb0, 0x96, 0x18, 0xec, 0x94, 0xdb, 0x57, 0x94, 0xac, 0x68, 0x0c, 0x37, 0xef, 0xa4,
- 0x21, 0xb3, 0x61, 0xb6, 0xb7, 0xf9, 0xf8, 0x4d, 0x27, 0x5d, 0xeb, 0xa7, 0x89, 0x2f, 0x33, 0xf9,
- 0xa4, 0x2f, 0xea, 0xed, 0x70, 0xb2, 0xbd, 0xb7, 0x7b, 0x01, 0xdb, 0x95, 0x2d, 0x32, 0x36, 0x74,
- 0x6b, 0x56, 0x15, 0xb7, 0xa9, 0xe9, 0x94, 0xd5, 0xfb, 0x7e, 0x13, 0x0d, 0x07, 0x09, 0x93, 0xd7,
- 0xa5, 0x24, 0x84, 0xd7, 0x3e, 0x51, 0x69, 0x8e, 0xa8, 0x58, 0xc6, 0x6e, 0x9f, 0xc2, 0x93, 0xe7,
- 0xef, 0xd7, 0xd3, 0x30, 0xb1, 0x8e, 0x1d, 0xdb, 0x6c, 0x74, 0xd1, 0x17, 0xdc, 0x81, 0x09, 0x3b,
- 0x1b, 0x86, 0x6d, 0xec, 0x62, 0x07, 0xdb, 0x5d, 0xa4, 0x05, 0x4c, 0x47, 0x30, 0xd9, 0x69, 0x19,
- 0xce, 0x96, 0x65, 0xef, 0x32, 0x09, 0xf6, 0xdf, 0x5d, 0x8b, 0x61, 0x1f, 0xdb, 0xdd, 0x80, 0x2c,
- 0xef, 0x95, 0x09, 0xb8, 0xbc, 0x7d, 0xc6, 0x48, 0x59, 0x10, 0xc8, 0x38, 0x94, 0x7d, 0x26, 0x53,
- 0xe2, 0x58, 0x6e, 0x97, 0x51, 0xd6, 0xac, 0x6d, 0xf4, 0x4a, 0x05, 0x32, 0x44, 0xf2, 0xde, 0x92,
- 0x12, 0x26, 0x15, 0xbb, 0xb8, 0xdb, 0x35, 0xb6, 0xb1, 0x37, 0xa9, 0x60, 0xaf, 0xea, 0x9d, 0x90,
- 0x6d, 0xe1, 0x7d, 0xdc, 0x22, 0x64, 0xcc, 0xdd, 0x7e, 0x83, 0xd0, 0xb2, 0x35, 0x6b, 0x7b, 0xc1,
- 0x2d, 0x6b, 0x81, 0x95, 0xb3, 0xb0, 0xe6, 0x66, 0xd5, 0xe9, 0x1f, 0x67, 0x9f, 0x01, 0x59, 0xf2,
- 0xae, 0x4e, 0x41, 0x76, 0x49, 0x5b, 0xdc, 0x5c, 0xc9, 0x1f, 0x73, 0x1f, 0x3d, 0xfa, 0xa6, 0x20,
- 0xbb, 0x5c, 0xa8, 0x15, 0xd6, 0xf2, 0x69, 0xb7, 0x1d, 0xa5, 0xf2, 0x72, 0x25, 0xaf, 0xb8, 0x89,
- 0x1b, 0x85, 0x72, 0xa9, 0x98, 0xcf, 0xa8, 0xd3, 0x30, 0x71, 0xbe, 0xa0, 0x97, 0x4b, 0xe5, 0x95,
- 0x7c, 0x16, 0xfd, 0x1d, 0x8f, 0xdf, 0x5d, 0x22, 0x7e, 0x37, 0x86, 0xd1, 0xd4, 0x0f, 0xb2, 0x5f,
- 0xf1, 0x21, 0xbb, 0x47, 0x80, 0xec, 0x47, 0x64, 0x0a, 0x19, 0x03, 0x4a, 0x69, 0x98, 0xd8, 0xb0,
- 0xad, 0x06, 0xee, 0x76, 0xd1, 0xcb, 0xd2, 0x90, 0x2b, 0x1a, 0xed, 0x06, 0x6e, 0xa1, 0x6b, 0x02,
- 0xa8, 0xa8, 0x77, 0x50, 0xca, 0x3f, 0x20, 0xf0, 0x0f, 0x3c, 0x67, 0xee, 0x13, 0x39, 0x73, 0x8b,
- 0xd0, 0x28, 0x56, 0xee, 0x02, 0x2d, 0x33, 0x84, 0x3f, 0xaf, 0xf3, 0xf9, 0x53, 0x14, 0xf8, 0x73,
- 0x9b, 0x7c, 0x51, 0xc9, 0x73, 0xe9, 0xbb, 0x29, 0x38, 0xb9, 0x82, 0xdb, 0xd8, 0x36, 0x1b, 0x94,
- 0x78, 0xaf, 0xfd, 0xf7, 0x88, 0xed, 0x7f, 0x8c, 0x40, 0x74, 0xbf, 0x3f, 0xc4, 0xc6, 0xbf, 0xc6,
- 0x6f, 0xfc, 0x7d, 0x42, 0xe3, 0x6f, 0x95, 0x2c, 0x67, 0x0c, 0x57, 0xc9, 0x4e, 0xc1, 0x4c, 0xd9,
- 0x72, 0xcc, 0x2d, 0xb3, 0x41, 0xb7, 0x92, 0x5f, 0xa1, 0x40, 0x66, 0xcd, 0xec, 0x3a, 0xfc, 0x99,
- 0xf4, 0xeb, 0x61, 0xda, 0x6c, 0x37, 0x5a, 0x7b, 0x4d, 0xac, 0x63, 0x83, 0xca, 0xca, 0xa4, 0xce,
- 0x27, 0x05, 0x2b, 0xf4, 0x2e, 0x59, 0x8a, 0xb7, 0x42, 0xff, 0x29, 0x69, 0x6b, 0x8a, 0x27, 0x81,
- 0x9c, 0xf8, 0x0e, 0x19, 0x92, 0x0a, 0x30, 0xdb, 0xe6, 0xb2, 0x7a, 0x87, 0xd0, 0x7b, 0x63, 0x38,
- 0xf3, 0xc5, 0xe9, 0xe2, 0x1f, 0xe8, 0xfd, 0x52, 0xc6, 0xd7, 0x20, 0x82, 0xe2, 0x21, 0xb3, 0x1c,
- 0x1f, 0x19, 0x55, 0x85, 0xb9, 0x52, 0xb9, 0xa6, 0xe9, 0xe5, 0xc2, 0x1a, 0xcb, 0xa2, 0xa0, 0xef,
- 0xa7, 0x21, 0xab, 0xe3, 0x4e, 0xeb, 0x0a, 0x1f, 0xa4, 0x93, 0xf9, 0x7b, 0xa5, 0x7c, 0x7f, 0x2f,
- 0x75, 0x19, 0xc0, 0x68, 0xb8, 0x15, 0x93, 0xdb, 0x48, 0xd2, 0x7d, 0x43, 0xc7, 0x09, 0x0d, 0x2c,
- 0xf8, 0xb9, 0x75, 0xee, 0x4f, 0xf4, 0x42, 0xe9, 0x05, 0x20, 0xa1, 0x34, 0x42, 0x61, 0x48, 0x77,
- 0xf0, 0x01, 0xa9, 0x35, 0x9b, 0x81, 0xc5, 0x1d, 0x0d, 0xfb, 0xbf, 0x92, 0x86, 0x4c, 0xcd, 0x9d,
- 0x91, 0x71, 0x93, 0xb3, 0x4f, 0x0e, 0x27, 0xe3, 0x6e, 0x31, 0x21, 0x32, 0x7e, 0x2f, 0xcc, 0xf0,
- 0x12, 0xcb, 0x76, 0x3c, 0x22, 0x45, 0x5c, 0xf8, 0x61, 0x18, 0x09, 0xef, 0x43, 0xce, 0xd1, 0xb0,
- 0xf8, 0xab, 0xb7, 0x00, 0xac, 0x63, 0xd7, 0xae, 0xed, 0xee, 0x98, 0x1d, 0xf4, 0x5f, 0x15, 0x98,
- 0x5a, 0xc1, 0x4e, 0xd5, 0x31, 0x9c, 0xbd, 0x6e, 0xcf, 0xaa, 0x65, 0xdb, 0x2a, 0x1a, 0x8d, 0x1d,
- 0xcc, 0xba, 0x23, 0xef, 0x15, 0xbd, 0x5b, 0x91, 0xdd, 0x16, 0x0c, 0xea, 0x59, 0xf0, 0xeb, 0x08,
- 0xc1, 0xe4, 0x71, 0x90, 0x69, 0x1a, 0x8e, 0xc1, 0xb0, 0xb8, 0xa6, 0x07, 0x8b, 0xa0, 0x20, 0x9d,
- 0x64, 0x43, 0xbf, 0x95, 0x96, 0xd9, 0x17, 0x94, 0xa8, 0x3f, 0x1e, 0x08, 0xef, 0x4f, 0x0d, 0x81,
- 0xc2, 0x09, 0x98, 0x2d, 0x57, 0x6a, 0xf5, 0xb5, 0xca, 0xca, 0x8a, 0xe6, 0xa6, 0xe6, 0x15, 0xf5,
- 0x34, 0xa8, 0x1b, 0x85, 0x07, 0xd6, 0xb5, 0x72, 0xad, 0x5e, 0xae, 0x2c, 0x69, 0xec, 0xcf, 0x8c,
- 0x7a, 0x1c, 0xa6, 0x8b, 0x85, 0xe2, 0xaa, 0x97, 0x90, 0x55, 0xe7, 0xe1, 0xe4, 0xba, 0xb6, 0xbe,
- 0xa8, 0xe9, 0xd5, 0xd5, 0xd2, 0x46, 0xdd, 0x2d, 0x66, 0xb9, 0xb2, 0x59, 0x5e, 0xca, 0xe7, 0x54,
- 0x04, 0xa7, 0xb9, 0x2f, 0xe7, 0xf5, 0x4a, 0x79, 0xa5, 0x5e, 0xad, 0x15, 0x6a, 0x5a, 0x7e, 0x42,
- 0xbd, 0x0a, 0x8e, 0x17, 0x0b, 0x65, 0x92, 0xbd, 0x58, 0x29, 0x97, 0xb5, 0x62, 0x2d, 0x3f, 0x89,
- 0xfe, 0x35, 0x03, 0xd3, 0xa5, 0x6e, 0xd9, 0xd8, 0xc5, 0xe7, 0x8c, 0x96, 0xd9, 0x44, 0x3f, 0xc7,
- 0x59, 0x93, 0x37, 0xc2, 0xac, 0x4d, 0x1f, 0x71, 0xb3, 0x66, 0x62, 0x8a, 0xe6, 0xac, 0x2e, 0x26,
- 0xaa, 0xa7, 0x21, 0xd7, 0x26, 0x05, 0x30, 0xd6, 0xb0, 0x37, 0x75, 0x11, 0x80, 0x3e, 0xd5, 0x82,
- 0x7b, 0xf1, 0xce, 0xf6, 0x6a, 0x93, 0xb1, 0x8b, 0xbb, 0xd8, 0xde, 0x37, 0x1b, 0xd8, 0xcb, 0xa9,
- 0x73, 0x7f, 0xa1, 0xaf, 0x2a, 0xb2, 0xcb, 0x84, 0x1c, 0xa8, 0x5c, 0x73, 0x42, 0x7a, 0xc3, 0x9f,
- 0x55, 0x64, 0x16, 0xf9, 0xa4, 0x8a, 0x8c, 0x27, 0x29, 0x2f, 0x4e, 0x0f, 0x21, 0x29, 0xb3, 0x30,
- 0x55, 0xab, 0x54, 0xea, 0xd5, 0xd5, 0x8a, 0x5e, 0xcb, 0x2b, 0xea, 0x0c, 0x4c, 0xba, 0xaf, 0x6b,
- 0x95, 0xf2, 0x4a, 0x3e, 0xa3, 0x9e, 0x82, 0x13, 0xab, 0x85, 0x6a, 0xbd, 0x54, 0x3e, 0x57, 0x58,
- 0x2b, 0x2d, 0xd5, 0x8b, 0xab, 0x05, 0xbd, 0x9a, 0xcf, 0xaa, 0xd7, 0xc0, 0xa9, 0x5a, 0x49, 0xd3,
- 0xeb, 0xcb, 0x5a, 0xa1, 0xb6, 0xa9, 0x6b, 0xd5, 0x7a, 0xb9, 0x52, 0x2f, 0x17, 0xd6, 0xb5, 0x7c,
- 0xce, 0x55, 0x7f, 0xf2, 0x29, 0x10, 0x9b, 0x89, 0x83, 0xc2, 0x38, 0x19, 0x22, 0x8c, 0x53, 0xbd,
- 0xc2, 0x08, 0xbc, 0x58, 0xe9, 0x5a, 0x55, 0xd3, 0xcf, 0x69, 0xf9, 0xe9, 0x7e, 0xb2, 0x36, 0xa3,
- 0x9e, 0x84, 0xbc, 0x4b, 0x43, 0xbd, 0x54, 0xf5, 0x72, 0x2e, 0xe5, 0x67, 0xd1, 0xc7, 0x72, 0x70,
- 0x5a, 0xc7, 0xdb, 0x66, 0xd7, 0xc1, 0xf6, 0x86, 0x71, 0x65, 0x17, 0xb7, 0x1d, 0xaf, 0x93, 0xff,
- 0x5f, 0xb1, 0x85, 0x71, 0x1d, 0x66, 0x3b, 0xb4, 0x8c, 0x75, 0xec, 0xec, 0x58, 0x4d, 0x36, 0x0a,
- 0x3f, 0x26, 0xb4, 0xe7, 0x58, 0xd8, 0xe0, 0xb3, 0xeb, 0xe2, 0xdf, 0x9c, 0x6c, 0x2b, 0x11, 0xb2,
- 0x9d, 0x19, 0x46, 0xb6, 0xd5, 0x6b, 0x61, 0x6a, 0xaf, 0x8b, 0x6d, 0x6d, 0xd7, 0x30, 0x5b, 0xde,
- 0xbd, 0x66, 0x7e, 0x02, 0x7a, 0x47, 0x46, 0xd6, 0xf1, 0x94, 0x6b, 0x4b, 0x7f, 0x36, 0x86, 0xf4,
- 0xad, 0x67, 0x00, 0x58, 0x63, 0x37, 0xed, 0x16, 0x13, 0x56, 0x2e, 0xc5, 0xa5, 0xef, 0x82, 0xd9,
- 0x6a, 0x99, 0xed, 0x6d, 0x7f, 0xf9, 0x3e, 0x48, 0x40, 0x2f, 0x56, 0x64, 0x1c, 0x51, 0xe3, 0xd2,
- 0x16, 0x4f, 0x9b, 0x5e, 0x98, 0x1e, 0x73, 0xbf, 0x7b, 0x50, 0x75, 0x72, 0x6a, 0x1e, 0x66, 0x48,
- 0x1a, 0xd3, 0xc0, 0xfc, 0x84, 0xdb, 0x07, 0x7b, 0xc5, 0xad, 0x6b, 0xb5, 0xd5, 0xca, 0x92, 0xff,
- 0x6d, 0xd2, 0x2d, 0xd2, 0x25, 0xa6, 0x50, 0x7e, 0x80, 0x68, 0xe3, 0x94, 0xfa, 0x48, 0xb8, 0x86,
- 0xeb, 0xb0, 0x0b, 0x6b, 0xba, 0x56, 0x58, 0x7a, 0xa0, 0xae, 0x3d, 0xb3, 0x54, 0xad, 0x55, 0x45,
- 0xe5, 0xf2, 0xf4, 0x68, 0xda, 0xa5, 0x57, 0x5b, 0x2f, 0x94, 0xd6, 0x58, 0xff, 0xbe, 0x5c, 0xd1,
- 0xd7, 0x0b, 0xb5, 0xfc, 0x0c, 0x7a, 0xa5, 0x02, 0xf9, 0x15, 0xec, 0x6c, 0x58, 0xb6, 0x63, 0xb4,
- 0xd6, 0xcc, 0xf6, 0xc5, 0x4d, 0xbb, 0xc5, 0xdb, 0x4c, 0xff, 0x22, 0x7d, 0xda, 0x56, 0x1c, 0x22,
- 0x85, 0x02, 0xc3, 0x17, 0xb6, 0x3b, 0x24, 0x5b, 0x20, 0x4c, 0x41, 0x02, 0x7a, 0x76, 0x5a, 0xe6,
- 0x74, 0xad, 0x7c, 0xad, 0xf1, 0xe4, 0xe4, 0x39, 0xe3, 0x1e, 0x9f, 0xfb, 0xa0, 0x96, 0x43, 0x0f,
- 0x65, 0x60, 0x72, 0xd9, 0x6c, 0x1b, 0x2d, 0xf3, 0x59, 0x42, 0xc8, 0xb8, 0xa0, 0x8f, 0x49, 0x45,
- 0xf4, 0x31, 0xe9, 0xa1, 0xc6, 0xcf, 0x5f, 0x52, 0x64, 0xb7, 0x30, 0x38, 0xde, 0x7b, 0x44, 0x86,
- 0x0c, 0x9e, 0x7f, 0x90, 0x96, 0xd9, 0xa4, 0x18, 0x5c, 0x5e, 0x3c, 0x0c, 0x3f, 0xf1, 0xc3, 0x61,
- 0x63, 0xf5, 0xe8, 0xf7, 0x64, 0x3f, 0x51, 0x98, 0x42, 0x7f, 0xae, 0x00, 0x5a, 0xc1, 0xce, 0x39,
- 0x6c, 0xfb, 0x53, 0x01, 0xd2, 0xeb, 0x33, 0x7b, 0x9b, 0x53, 0xd9, 0xb7, 0xf0, 0x00, 0x9e, 0x17,
- 0x01, 0x2c, 0x44, 0x28, 0x4f, 0x48, 0xd1, 0x21, 0xca, 0x5b, 0x82, 0x5c, 0x97, 0x7c, 0x67, 0x62,
- 0xf6, 0x84, 0xf0, 0xe1, 0x92, 0x14, 0xc6, 0x97, 0x4e, 0x0b, 0xd6, 0x59, 0x01, 0xe8, 0x7b, 0xfe,
- 0x24, 0xe8, 0xc7, 0x04, 0xe9, 0x58, 0x3e, 0x34, 0xb1, 0xf1, 0xe4, 0xc5, 0x4e, 0x56, 0x5c, 0xfa,
- 0xd9, 0x37, 0xe8, 0x8b, 0x19, 0x38, 0xd9, 0xaf, 0x39, 0xfc, 0xcd, 0x72, 0x27, 0x21, 0x8b, 0xc9,
- 0x88, 0x4f, 0x95, 0x9d, 0xbe, 0xa8, 0x4f, 0x84, 0x53, 0x6c, 0x0b, 0xf5, 0x02, 0xae, 0x59, 0x65,
- 0x7c, 0xa9, 0xdb, 0xc2, 0x8e, 0x83, 0x6d, 0xd2, 0xb2, 0x49, 0xbd, 0xff, 0x47, 0xf4, 0xf7, 0x8a,
- 0xac, 0xb3, 0xfa, 0x00, 0x7e, 0x87, 0x68, 0xfa, 0x0b, 0x14, 0x19, 0xf7, 0xf3, 0x78, 0x65, 0xc7,
- 0x43, 0xf1, 0xf9, 0xe3, 0x1e, 0xe1, 0xfb, 0x0f, 0xad, 0x44, 0xe7, 0x69, 0xba, 0x37, 0x42, 0x9f,
- 0xd3, 0xf4, 0xd2, 0x72, 0x49, 0x73, 0xc7, 0xfb, 0x53, 0x70, 0x22, 0xf8, 0xb6, 0xf4, 0x40, 0xbd,
- 0xaa, 0x95, 0x6b, 0xf9, 0x49, 0xb7, 0x03, 0xa1, 0xc9, 0xcb, 0x85, 0xd2, 0x9a, 0xb6, 0x54, 0xaf,
- 0x55, 0xdc, 0x2f, 0x4b, 0xc3, 0x8d, 0xf9, 0xe8, 0xb9, 0x19, 0x38, 0x4e, 0x78, 0x7b, 0x85, 0x70,
- 0xd5, 0x65, 0x4a, 0x8f, 0x2f, 0x8b, 0x0f, 0xd0, 0x14, 0x65, 0x2f, 0xfa, 0xac, 0xf4, 0xad, 0x61,
- 0x1c, 0x84, 0x3d, 0x75, 0x84, 0x48, 0xc6, 0x77, 0xd3, 0x32, 0x27, 0x40, 0xa5, 0x8b, 0x8d, 0x27,
- 0x14, 0xff, 0x3c, 0xee, 0xa1, 0x20, 0x1c, 0x7c, 0x62, 0xfe, 0x15, 0xc9, 0xcf, 0xcf, 0xdc, 0x28,
- 0xe9, 0x44, 0x1c, 0xe6, 0x00, 0x48, 0x0a, 0x91, 0x20, 0x2a, 0x07, 0x7d, 0x07, 0x92, 0x30, 0x39,
- 0x28, 0x14, 0x6b, 0xa5, 0x73, 0x5a, 0x98, 0x1c, 0x7c, 0x5a, 0x81, 0xc9, 0x15, 0xec, 0xb8, 0x93,
- 0x9d, 0x2e, 0x7a, 0x9a, 0xc4, 0xc2, 0x8c, 0x6b, 0x5f, 0x90, 0xeb, 0x92, 0xfd, 0xf9, 0x39, 0x7d,
- 0x43, 0xcf, 0x1b, 0xc6, 0x36, 0xf0, 0xaa, 0x0e, 0x19, 0x48, 0x9e, 0x02, 0x59, 0xc7, 0xfd, 0xcc,
- 0xd6, 0x87, 0x1f, 0x15, 0x3a, 0x8e, 0xb8, 0x85, 0x2c, 0x19, 0x8e, 0xa1, 0xd3, 0xfc, 0xdc, 0xb0,
- 0x21, 0x69, 0x54, 0x84, 0x10, 0xf2, 0xc3, 0x68, 0x18, 0xfe, 0x9d, 0x02, 0xa7, 0xa8, 0x7e, 0x14,
- 0x3a, 0x9d, 0xaa, 0x63, 0xd9, 0x58, 0xc7, 0x0d, 0x6c, 0x76, 0x9c, 0x9e, 0x85, 0x37, 0x9b, 0xa6,
- 0x7a, 0x3b, 0x7b, 0xec, 0x15, 0xbd, 0x49, 0x91, 0x8d, 0x71, 0x78, 0x40, 0x1f, 0x7b, 0xea, 0x0b,
- 0x51, 0xf6, 0x8f, 0xa6, 0x65, 0xa2, 0x16, 0xc6, 0x2c, 0x3c, 0x1e, 0x50, 0x1f, 0x3a, 0x02, 0xa0,
- 0xbc, 0x25, 0x15, 0x5d, 0x2b, 0x6a, 0xa5, 0x0d, 0x77, 0x10, 0xb8, 0x0e, 0x1e, 0xb1, 0xb1, 0xa9,
- 0x17, 0x57, 0x0b, 0x55, 0xad, 0xae, 0x6b, 0x2b, 0xa5, 0x6a, 0x4d, 0x2f, 0xd4, 0x4a, 0x15, 0x8f,
- 0x80, 0x09, 0xf5, 0x5a, 0x98, 0xaf, 0x6e, 0x2e, 0x56, 0x8b, 0x7a, 0x69, 0x83, 0xa4, 0xeb, 0x5a,
- 0x59, 0x3b, 0xcf, 0xbe, 0x4e, 0xa2, 0x0f, 0xe6, 0x61, 0xda, 0xb5, 0xcc, 0xab, 0xd4, 0x60, 0x47,
- 0xdf, 0xca, 0xc0, 0xb4, 0x8e, 0xbb, 0x56, 0x6b, 0x9f, 0x18, 0xef, 0xe3, 0x9a, 0x13, 0x7c, 0x47,
- 0x91, 0x3d, 0x1f, 0xc5, 0x11, 0xbb, 0xc0, 0x11, 0x1a, 0x3e, 0x03, 0x34, 0xbc, 0x78, 0xc1, 0xcc,
- 0x6e, 0x09, 0x12, 0xd4, 0x05, 0x50, 0xad, 0x4b, 0x6d, 0x6c, 0x57, 0x1b, 0x97, 0x34, 0x67, 0xa7,
- 0xd0, 0x6c, 0xda, 0xb8, 0xdb, 0x65, 0xcb, 0x0a, 0x7d, 0xbe, 0xa8, 0x37, 0xc3, 0x71, 0x92, 0xca,
- 0x65, 0xa6, 0x87, 0x39, 0x7b, 0x93, 0xfd, 0x9c, 0x85, 0xf6, 0x15, 0x2f, 0x67, 0x96, 0xcb, 0x19,
- 0x24, 0xf3, 0xee, 0x88, 0x39, 0xd1, 0x0b, 0xf6, 0x7a, 0x98, 0x6e, 0x1b, 0xbb, 0x58, 0xbb, 0xdc,
- 0x31, 0x6d, 0xdc, 0x9d, 0x9f, 0x20, 0xbb, 0x69, 0x7c, 0x12, 0xfa, 0x03, 0xa9, 0xf3, 0x5c, 0x72,
- 0x1c, 0x8b, 0x27, 0xfb, 0x2b, 0x43, 0x88, 0x7e, 0x9f, 0x7e, 0x46, 0x41, 0x1f, 0x54, 0x60, 0x86,
- 0x11, 0x55, 0x68, 0x5f, 0x29, 0x35, 0xd1, 0x75, 0x82, 0x59, 0x6a, 0xb8, 0x69, 0x9e, 0x59, 0x4a,
- 0x5e, 0xd0, 0xcf, 0x2b, 0xb2, 0xee, 0x44, 0x7d, 0x1a, 0x4e, 0xea, 0x08, 0x77, 0x71, 0xd9, 0xb2,
- 0xf6, 0x98, 0x4b, 0xcd, 0xa4, 0x4e, 0x5f, 0x92, 0x5c, 0x6d, 0x43, 0x7f, 0x28, 0xe5, 0xac, 0x24,
- 0xd9, 0x8c, 0x23, 0x02, 0xf0, 0xe3, 0x0a, 0xcc, 0x31, 0xaa, 0xaa, 0xcc, 0x8f, 0x56, 0xca, 0xa1,
- 0xfc, 0x17, 0xa4, 0x0d, 0xc1, 0x3e, 0xed, 0x67, 0x35, 0x3d, 0x6c, 0x80, 0xfc, 0xb0, 0x54, 0xf0,
- 0x11, 0xe9, 0x86, 0x1c, 0x11, 0x94, 0xef, 0xcc, 0xc0, 0xf4, 0x66, 0x17, 0xdb, 0xcc, 0x2f, 0x0e,
- 0xbd, 0x2e, 0x03, 0xca, 0x0a, 0x16, 0x76, 0x38, 0x5f, 0x94, 0x91, 0x5d, 0xad, 0xe3, 0x1b, 0xcb,
- 0x15, 0xea, 0xda, 0x48, 0x21, 0xb0, 0xdd, 0x04, 0x73, 0x94, 0xa5, 0x05, 0xc7, 0x71, 0x8d, 0x44,
- 0xef, 0x58, 0x40, 0x4f, 0xea, 0x28, 0xf6, 0x70, 0x48, 0x5d, 0x6e, 0x96, 0xa2, 0x4b, 0xd3, 0x1a,
- 0xde, 0xa2, 0xa1, 0xa9, 0x32, 0x7a, 0x4f, 0x2a, 0xb9, 0xca, 0xb9, 0x83, 0xa9, 0x7f, 0x28, 0x97,
- 0x39, 0x4b, 0x32, 0xf7, 0xfb, 0x84, 0xbe, 0x25, 0x15, 0xb3, 0x4f, 0x9e, 0x3b, 0xf1, 0x64, 0xa1,
- 0x33, 0x1a, 0x93, 0xe4, 0x24, 0xe4, 0xdd, 0x1c, 0x64, 0x63, 0x44, 0xd7, 0xaa, 0x95, 0xb5, 0x73,
- 0x5a, 0xff, 0xf5, 0x85, 0x2c, 0x7a, 0xbe, 0x02, 0x53, 0x8b, 0xb6, 0x65, 0x34, 0x1b, 0x46, 0xd7,
- 0x41, 0xdf, 0x4b, 0xc3, 0xcc, 0x86, 0x71, 0xa5, 0x65, 0x19, 0x4d, 0xe2, 0x89, 0xd8, 0xd3, 0x17,
- 0x74, 0xe8, 0x27, 0xaf, 0x2f, 0x60, 0xaf, 0xa2, 0xe3, 0xbd, 0xef, 0x1a, 0x9f, 0x92, 0xb9, 0x5c,
- 0xcc, 0xdf, 0x7f, 0x4b, 0xf7, 0x0b, 0x06, 0xe6, 0xd1, 0xb5, 0xc0, 0xd3, 0x14, 0x62, 0x51, 0x7e,
- 0x50, 0x2e, 0xbc, 0x97, 0x4c, 0x91, 0x47, 0xb3, 0x5d, 0xfe, 0xd0, 0x24, 0xe4, 0x96, 0x30, 0xb1,
- 0xe2, 0x7e, 0x3b, 0x0d, 0x13, 0xec, 0x7a, 0x7d, 0x74, 0xa7, 0xe0, 0xe4, 0xd8, 0x24, 0x19, 0xfc,
- 0xee, 0xd8, 0x7f, 0x77, 0x27, 0xeb, 0xdc, 0x79, 0x26, 0xf2, 0x1c, 0xc3, 0xfd, 0x8b, 0xd6, 0x1b,
- 0x72, 0xa5, 0x7f, 0x3c, 0xf7, 0xaf, 0xc8, 0xa2, 0x92, 0x77, 0x82, 0x7a, 0x77, 0x9a, 0xf9, 0x3c,
- 0x71, 0xbd, 0xde, 0xaf, 0xf2, 0xf2, 0x19, 0xe9, 0x06, 0xc6, 0x88, 0x8f, 0xf0, 0x5a, 0xba, 0x03,
- 0x26, 0x28, 0xcf, 0xbd, 0xf9, 0x68, 0xaf, 0x03, 0x01, 0x2d, 0x82, 0x9c, 0x6d, 0xf2, 0x72, 0x4a,
- 0xfa, 0x8e, 0x85, 0x57, 0x3e, 0x96, 0x33, 0x7e, 0x33, 0x65, 0xec, 0x5c, 0xb2, 0xec, 0x8b, 0x55,
- 0xc7, 0x70, 0x30, 0xfa, 0xe7, 0x34, 0x28, 0x55, 0xec, 0xf0, 0xa7, 0x8b, 0xcb, 0x70, 0x82, 0x36,
- 0x88, 0x65, 0x24, 0xfd, 0x37, 0x6d, 0xc8, 0xf5, 0x7d, 0x99, 0xc0, 0xe5, 0xd3, 0x0f, 0xfe, 0x8a,
- 0x5e, 0xd6, 0x37, 0xa8, 0x42, 0xba, 0xcf, 0xa4, 0x81, 0x71, 0x86, 0x27, 0xd0, 0x15, 0xb0, 0x10,
- 0x39, 0xfd, 0x7d, 0x29, 0xb3, 0x5a, 0xae, 0xcc, 0xa3, 0xe9, 0x0a, 0x5e, 0x7d, 0x0d, 0x64, 0x8a,
- 0x3b, 0x86, 0x83, 0xde, 0xa5, 0x00, 0x14, 0x9a, 0xcd, 0x75, 0xea, 0x70, 0xcb, 0x7b, 0x8a, 0x9d,
- 0x85, 0x99, 0xc6, 0x8e, 0x11, 0xc4, 0x0e, 0xa7, 0xfd, 0x81, 0x90, 0xa6, 0x3e, 0x31, 0xf0, 0xdc,
- 0xa5, 0x5c, 0x45, 0x3d, 0x30, 0xb9, 0x75, 0xb0, 0xb2, 0x7d, 0xaf, 0x5e, 0x31, 0xd4, 0x54, 0xe4,
- 0x79, 0x59, 0xf7, 0xf7, 0x85, 0x80, 0xbc, 0xf0, 0x39, 0x1c, 0x2b, 0xda, 0x3f, 0x29, 0x18, 0x24,
- 0xc4, 0x3c, 0x49, 0x25, 0x77, 0x60, 0x36, 0x9a, 0xae, 0xb1, 0x84, 0x86, 0x53, 0xb5, 0xa6, 0xe9,
- 0xb1, 0x96, 0x05, 0xa4, 0x40, 0x2f, 0x4c, 0xc5, 0x83, 0x2f, 0x9a, 0x71, 0xf7, 0xc1, 0x2c, 0x6e,
- 0x9a, 0x0e, 0xf6, 0x5a, 0xc9, 0x18, 0x18, 0x05, 0xb1, 0xf8, 0x03, 0x7a, 0x8e, 0x74, 0x50, 0x13,
- 0xc2, 0xd0, 0x83, 0x2d, 0x0a, 0xd1, 0x3f, 0xb9, 0x30, 0x25, 0x72, 0x65, 0x26, 0x0f, 0xd6, 0xf3,
- 0x14, 0x38, 0x55, 0xb3, 0xb6, 0xb7, 0x5b, 0xd8, 0x63, 0x13, 0xa6, 0x6e, 0x93, 0xc8, 0x18, 0x25,
- 0x5c, 0x64, 0x8f, 0xc6, 0x7a, 0xd0, 0x64, 0xb3, 0x17, 0xfa, 0x82, 0x5e, 0x20, 0x1d, 0x7e, 0x91,
- 0xb0, 0xab, 0x2f, 0x9d, 0x21, 0x28, 0xc8, 0x05, 0x54, 0x94, 0x2e, 0x36, 0x79, 0x20, 0xbe, 0x90,
- 0x86, 0x59, 0x7a, 0x8b, 0x97, 0x27, 0xa0, 0xf7, 0x8f, 0x10, 0x00, 0xf4, 0xbd, 0x94, 0xac, 0x03,
- 0x2c, 0xe1, 0x89, 0x40, 0x49, 0x08, 0x8b, 0xe5, 0x0e, 0x2d, 0x0f, 0x2c, 0x2e, 0x79, 0xd6, 0xfe,
- 0xba, 0x02, 0xd3, 0x2b, 0xd8, 0xd3, 0xb4, 0x2e, 0x7f, 0xcd, 0x86, 0x0c, 0x63, 0x6f, 0x84, 0xd9,
- 0x0b, 0x78, 0xcb, 0xb2, 0x31, 0xb9, 0x36, 0xc4, 0x67, 0xae, 0x98, 0x18, 0x12, 0xd9, 0x45, 0x08,
- 0x21, 0xb2, 0x28, 0xb2, 0xfd, 0xd6, 0x83, 0x7c, 0xe2, 0xa8, 0x0c, 0x19, 0x4e, 0x9e, 0x0c, 0x93,
- 0x0c, 0x54, 0xcf, 0x02, 0x8b, 0xea, 0xf2, 0xfc, 0xbc, 0xe8, 0x0d, 0x3e, 0x58, 0x9a, 0x00, 0xd6,
- 0x13, 0xe2, 0x10, 0x31, 0x96, 0x6b, 0x6c, 0xf3, 0x5c, 0xfd, 0x8b, 0x57, 0x4a, 0xcd, 0x2e, 0x5a,
- 0x8f, 0x87, 0xd7, 0x19, 0x00, 0x5f, 0xee, 0xbd, 0x13, 0xa1, 0x5c, 0x8a, 0x18, 0xf4, 0x35, 0xf2,
- 0xc0, 0x53, 0x2f, 0x3b, 0x08, 0x39, 0x23, 0x06, 0x46, 0xee, 0xa0, 0x94, 0x0c, 0x25, 0x63, 0x08,
- 0xf0, 0xa2, 0xc0, 0xa9, 0xaa, 0xb7, 0x6f, 0xbe, 0x66, 0x74, 0x03, 0x95, 0x2a, 0xc6, 0x83, 0x48,
- 0x38, 0x64, 0xe1, 0x2b, 0xcb, 0xb7, 0xe3, 0x0d, 0x07, 0x7d, 0x29, 0x19, 0x2d, 0x3a, 0xea, 0xad,
- 0x70, 0xa2, 0xbd, 0xb7, 0xeb, 0x73, 0x9d, 0x68, 0x3c, 0xd3, 0xf0, 0x83, 0x1f, 0xe2, 0x0c, 0x3a,
- 0x32, 0xc4, 0x8f, 0x65, 0xba, 0x38, 0xbd, 0xd9, 0xf6, 0x5d, 0x21, 0xd0, 0xe3, 0x62, 0xc1, 0x88,
- 0xfe, 0x29, 0x15, 0xab, 0x77, 0xe3, 0x6a, 0x0a, 0x19, 0x52, 0x62, 0xf4, 0x52, 0xe1, 0x85, 0x25,
- 0xce, 0xb6, 0xb3, 0x13, 0x90, 0xd5, 0x76, 0x3b, 0xce, 0x95, 0xb3, 0x8f, 0x86, 0xd9, 0xaa, 0x63,
- 0x63, 0x63, 0x97, 0x5b, 0xf4, 0x77, 0xac, 0x8b, 0xb8, 0xed, 0x2d, 0xfa, 0x93, 0x97, 0xbb, 0xee,
- 0x84, 0x89, 0xb6, 0x55, 0x37, 0xf6, 0x9c, 0x1d, 0xf5, 0xba, 0x85, 0x6d, 0xcb, 0xda, 0x6e, 0xe1,
- 0x85, 0x8e, 0x6d, 0x39, 0xd6, 0x85, 0xbd, 0xad, 0x05, 0x06, 0x7e, 0x85, 0x1d, 0xff, 0xff, 0xea,
- 0xdd, 0x64, 0xd9, 0x37, 0xd7, 0xb6, 0x0a, 0x7b, 0xce, 0xce, 0xe2, 0xb5, 0x1f, 0xff, 0xdb, 0x33,
- 0xa9, 0x4f, 0xff, 0xed, 0x99, 0xd4, 0x57, 0xfe, 0xf6, 0x4c, 0xea, 0x17, 0xbe, 0x76, 0xe6, 0xd8,
- 0xa7, 0xbf, 0x76, 0xe6, 0xd8, 0x17, 0xbe, 0x76, 0xe6, 0xd8, 0x8f, 0xa5, 0x3b, 0x17, 0x2e, 0xe4,
- 0x48, 0x29, 0x77, 0xfc, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x19, 0x2a, 0xf9, 0x4e, 0x3b, 0xec,
- 0x01, 0x00,
+ // 18577 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x7b, 0x98, 0x24, 0x47,
+ 0x75, 0x27, 0x3a, 0x55, 0x59, 0x55, 0xdd, 0x1d, 0xfd, 0x98, 0x9a, 0xd4, 0xcc, 0x68, 0x14, 0x88,
+ 0xd1, 0x30, 0x12, 0xb2, 0x2c, 0x44, 0x0b, 0x24, 0x5e, 0x12, 0x12, 0x52, 0x75, 0x75, 0x76, 0x77,
+ 0xa1, 0xee, 0xaa, 0x26, 0x2b, 0x7b, 0x06, 0xd9, 0xd7, 0xb7, 0x36, 0xa7, 0x2a, 0xba, 0x3b, 0x35,
+ 0xd5, 0x99, 0xe5, 0xac, 0xec, 0x9e, 0x19, 0xee, 0xb7, 0x77, 0x6d, 0xf3, 0x12, 0xb6, 0x59, 0x8c,
+ 0x31, 0x8b, 0x01, 0x03, 0xe6, 0x69, 0x83, 0x0d, 0x98, 0xb7, 0xc1, 0x36, 0xb6, 0x01, 0x19, 0x8c,
+ 0x31, 0xe6, 0x61, 0x6c, 0x81, 0xcd, 0x67, 0x30, 0x98, 0xc5, 0x7b, 0x97, 0xe5, 0xda, 0xdf, 0x1a,
+ 0x16, 0x1b, 0xae, 0xef, 0x17, 0x8f, 0xcc, 0x8c, 0xa8, 0xae, 0xcc, 0x8a, 0xac, 0xae, 0xac, 0x16,
+ 0xf6, 0xfe, 0x97, 0x19, 0x19, 0x19, 0x71, 0xe2, 0xfc, 0xce, 0x89, 0x38, 0x11, 0x71, 0xe2, 0x04,
+ 0x38, 0xd5, 0xb9, 0x70, 0x6b, 0xc7, 0x75, 0x3c, 0xa7, 0x7b, 0x6b, 0xd3, 0xd9, 0xd9, 0x31, 0xed,
+ 0x56, 0x77, 0x9e, 0xbc, 0xab, 0x13, 0xa6, 0x7d, 0xc5, 0xbb, 0xd2, 0x41, 0xf0, 0x86, 0xce, 0xc5,
+ 0xad, 0x5b, 0xdb, 0xd6, 0x85, 0x5b, 0x3b, 0x17, 0x6e, 0xdd, 0x71, 0x5a, 0xa8, 0xed, 0xff, 0x40,
+ 0x5e, 0x58, 0x76, 0x78, 0x53, 0x54, 0xae, 0xb6, 0xd3, 0x34, 0xdb, 0x5d, 0xcf, 0x71, 0x11, 0xcb,
+ 0x79, 0x32, 0xac, 0x12, 0xed, 0x21, 0xdb, 0xf3, 0x4b, 0xb8, 0x76, 0xcb, 0x71, 0xb6, 0xda, 0x88,
+ 0x7e, 0xbb, 0xb0, 0xbb, 0x79, 0x6b, 0xd7, 0x73, 0x77, 0x9b, 0x1e, 0xfb, 0x7a, 0xa6, 0xf7, 0x6b,
+ 0x0b, 0x75, 0x9b, 0xae, 0xd5, 0xf1, 0x1c, 0x97, 0xe6, 0x38, 0xfb, 0xbc, 0x2f, 0x4e, 0x00, 0x45,
+ 0xef, 0x34, 0xe1, 0x77, 0x26, 0x80, 0x52, 0xea, 0x74, 0xe0, 0x43, 0x59, 0x00, 0x96, 0x91, 0x77,
+ 0x0e, 0xb9, 0x5d, 0xcb, 0xb1, 0xe1, 0x51, 0x30, 0xa1, 0xa3, 0x9f, 0xdc, 0x45, 0x5d, 0xef, 0xce,
+ 0xdc, 0x83, 0xdf, 0x50, 0x32, 0xf0, 0xcd, 0x59, 0x30, 0xa9, 0xa3, 0x6e, 0xc7, 0xb1, 0xbb, 0x48,
+ 0xbd, 0x17, 0xe4, 0x91, 0xeb, 0x3a, 0xee, 0xa9, 0xcc, 0x99, 0xcc, 0x4d, 0xd3, 0xb7, 0xdd, 0x3c,
+ 0xcf, 0x9a, 0x3f, 0xaf, 0x77, 0x9a, 0xf3, 0xa5, 0x4e, 0x67, 0x3e, 0x2c, 0x69, 0xde, 0xff, 0x69,
+ 0x5e, 0xc3, 0x7f, 0xe8, 0xf4, 0x47, 0xf5, 0x14, 0x98, 0xd8, 0xa3, 0x19, 0x4e, 0x65, 0xcf, 0x64,
+ 0x6e, 0x9a, 0xd2, 0xfd, 0x57, 0xfc, 0xa5, 0x85, 0x3c, 0xd3, 0x6a, 0x77, 0x4f, 0x29, 0xf4, 0x0b,
+ 0x7b, 0x85, 0x6f, 0xc8, 0x80, 0x3c, 0x29, 0x44, 0x2d, 0x83, 0x5c, 0xd3, 0x69, 0x21, 0x52, 0xfd,
+ 0xdc, 0x6d, 0xb7, 0xca, 0x57, 0x3f, 0x5f, 0x76, 0x5a, 0x48, 0x27, 0x3f, 0xab, 0x67, 0xc0, 0xb4,
+ 0xcf, 0x96, 0x90, 0x0c, 0x3e, 0xe9, 0xec, 0x6d, 0x20, 0x87, 0xf3, 0xab, 0x93, 0x20, 0x57, 0xdd,
+ 0x58, 0x5d, 0x2d, 0x1e, 0x51, 0x8f, 0x81, 0xd9, 0x8d, 0xea, 0x7d, 0xd5, 0xda, 0xf9, 0x6a, 0x43,
+ 0xd3, 0xf5, 0x9a, 0x5e, 0xcc, 0xa8, 0xb3, 0x60, 0x6a, 0xa1, 0xb4, 0xd8, 0xa8, 0x54, 0xd7, 0x37,
+ 0x8c, 0x62, 0x16, 0xbe, 0x56, 0x01, 0x73, 0x75, 0xe4, 0x2d, 0xa2, 0x3d, 0xab, 0x89, 0xea, 0x9e,
+ 0xe9, 0x21, 0xf8, 0x92, 0x4c, 0xc0, 0x4c, 0x75, 0x03, 0x57, 0x1a, 0x7c, 0x62, 0x0d, 0xb8, 0x7d,
+ 0x5f, 0x03, 0xc4, 0x12, 0xe6, 0xd9, 0xdf, 0xf3, 0x5c, 0x9a, 0xce, 0x97, 0x73, 0xf6, 0xf1, 0x60,
+ 0x9a, 0xfb, 0xa6, 0xce, 0x01, 0xb0, 0x50, 0x2a, 0xdf, 0xb7, 0xac, 0xd7, 0x36, 0xaa, 0x8b, 0xc5,
+ 0x23, 0xf8, 0x7d, 0xa9, 0xa6, 0x6b, 0xec, 0x3d, 0x03, 0xbf, 0x97, 0xe1, 0xc0, 0x5c, 0x14, 0xc1,
+ 0x9c, 0x1f, 0x4c, 0x4c, 0x1f, 0x40, 0xe1, 0x5b, 0x02, 0x70, 0x96, 0x05, 0x70, 0x6e, 0x4f, 0x56,
+ 0x5c, 0xfa, 0x00, 0x3d, 0x3f, 0x0b, 0x26, 0xeb, 0xdb, 0xbb, 0x5e, 0xcb, 0xb9, 0x64, 0xc3, 0xa9,
+ 0x00, 0x19, 0xf8, 0x2d, 0x9e, 0x27, 0xcf, 0x10, 0x79, 0x72, 0xd3, 0xfe, 0x46, 0xb0, 0x12, 0x22,
+ 0xb8, 0xf1, 0xab, 0x01, 0x37, 0x4a, 0x02, 0x37, 0x1e, 0x2f, 0x5b, 0x50, 0xfa, 0x7c, 0xf8, 0x85,
+ 0xdb, 0x41, 0xbe, 0xde, 0x31, 0x9b, 0x08, 0x7e, 0x4a, 0x01, 0x33, 0xab, 0xc8, 0xdc, 0x43, 0xa5,
+ 0x4e, 0xc7, 0x75, 0xf6, 0x10, 0x2c, 0x87, 0xf2, 0x7a, 0x0a, 0x4c, 0x74, 0x71, 0xa6, 0x4a, 0x8b,
+ 0xb4, 0x60, 0x4a, 0xf7, 0x5f, 0xd5, 0xd3, 0x00, 0x58, 0x2d, 0x64, 0x7b, 0x96, 0x67, 0xa1, 0xee,
+ 0xa9, 0xec, 0x19, 0xe5, 0xa6, 0x29, 0x9d, 0x4b, 0x81, 0xdf, 0xc9, 0xca, 0xca, 0x18, 0xa1, 0x62,
+ 0x9e, 0xa7, 0x20, 0x82, 0xab, 0x6f, 0xcc, 0xca, 0xc8, 0xd8, 0xc0, 0xe2, 0x92, 0xf1, 0xf6, 0x1d,
+ 0x99, 0xe4, 0xcc, 0xc5, 0x39, 0xaa, 0xb5, 0x46, 0x7d, 0xa3, 0xbc, 0xd2, 0xa8, 0xaf, 0x97, 0xca,
+ 0x5a, 0x11, 0xa9, 0xc7, 0x41, 0x91, 0x3c, 0x36, 0x2a, 0xf5, 0xc6, 0xa2, 0xb6, 0xaa, 0x19, 0xda,
+ 0x62, 0x71, 0x53, 0x55, 0xc1, 0x9c, 0xae, 0x3d, 0x6b, 0x43, 0xab, 0x1b, 0x8d, 0xa5, 0x52, 0x65,
+ 0x55, 0x5b, 0x2c, 0x6e, 0xe1, 0x9f, 0x57, 0x2b, 0x6b, 0x15, 0xa3, 0xa1, 0x6b, 0xa5, 0xf2, 0x8a,
+ 0xb6, 0x58, 0xdc, 0x56, 0xaf, 0x06, 0x57, 0x55, 0x6b, 0x8d, 0xd2, 0xfa, 0xba, 0x5e, 0x3b, 0xa7,
+ 0x35, 0xd8, 0x1f, 0xf5, 0xa2, 0x45, 0x2b, 0x32, 0x1a, 0xf5, 0x95, 0x92, 0xae, 0x95, 0x16, 0x56,
+ 0xb5, 0xe2, 0x03, 0xf0, 0xb9, 0x0a, 0x98, 0x5d, 0x33, 0x2f, 0xa2, 0xfa, 0xb6, 0xe9, 0x22, 0xf3,
+ 0x42, 0x1b, 0xc1, 0xeb, 0x25, 0xf0, 0x84, 0x9f, 0xe2, 0xf1, 0xd2, 0x44, 0xbc, 0x6e, 0xed, 0xc3,
+ 0x60, 0xa1, 0x8a, 0x08, 0xc0, 0xfe, 0x57, 0xa0, 0x06, 0x2b, 0x02, 0x60, 0x4f, 0x4a, 0x58, 0x5e,
+ 0x32, 0xc4, 0x7e, 0xe6, 0x11, 0x80, 0x18, 0xfc, 0xb2, 0x02, 0xe6, 0x2a, 0xf6, 0x9e, 0xe5, 0xa1,
+ 0x65, 0x64, 0x23, 0x17, 0x8f, 0x03, 0x52, 0x30, 0xbc, 0x59, 0xe1, 0x60, 0x58, 0x12, 0x61, 0x78,
+ 0x42, 0x1f, 0xb6, 0x89, 0x75, 0x44, 0x8c, 0xb6, 0xd7, 0x82, 0x29, 0x8b, 0xe4, 0x2b, 0x5b, 0x2d,
+ 0xc6, 0xb1, 0x30, 0x41, 0xbd, 0x01, 0xcc, 0xd2, 0x97, 0x25, 0xab, 0x8d, 0xee, 0x43, 0x57, 0xd8,
+ 0xb8, 0x2b, 0x26, 0xc2, 0x9f, 0x0f, 0x94, 0xaf, 0x22, 0x60, 0xf9, 0xe4, 0xa4, 0x44, 0x25, 0x03,
+ 0xf3, 0xe5, 0x8f, 0x04, 0xf5, 0xdb, 0xa7, 0x65, 0x16, 0xfc, 0x41, 0x16, 0x4c, 0xd7, 0x3d, 0xa7,
+ 0x83, 0x45, 0xd6, 0xb2, 0xb7, 0xe4, 0xc0, 0xfd, 0x04, 0xaf, 0x63, 0x65, 0x11, 0xdc, 0xc7, 0xf7,
+ 0xe1, 0x23, 0x57, 0x41, 0x84, 0x86, 0x7d, 0x27, 0xd0, 0xb0, 0x25, 0x01, 0x95, 0xdb, 0x12, 0x95,
+ 0xf6, 0x43, 0xa8, 0x5f, 0x2f, 0x57, 0x40, 0xd1, 0x17, 0x33, 0xaf, 0xbc, 0xeb, 0xba, 0xc8, 0xf6,
+ 0xe4, 0x40, 0xf8, 0x2b, 0x1e, 0x84, 0x15, 0x11, 0x84, 0xdb, 0x62, 0x84, 0xd9, 0xaf, 0x25, 0x45,
+ 0x1d, 0xfb, 0x83, 0x00, 0xcd, 0xfb, 0x04, 0x34, 0x9f, 0x9a, 0x9c, 0xac, 0x64, 0x90, 0xae, 0x0c,
+ 0x81, 0xe8, 0x71, 0x50, 0xc4, 0x63, 0x52, 0xd9, 0xa8, 0x9c, 0xd3, 0x1a, 0x95, 0xea, 0xb9, 0x8a,
+ 0xa1, 0x15, 0x11, 0x7c, 0x99, 0x02, 0x66, 0x28, 0x69, 0x3a, 0xda, 0x73, 0x2e, 0x4a, 0xf6, 0x7a,
+ 0x5f, 0x4e, 0x68, 0x2c, 0xf0, 0x35, 0x44, 0x68, 0xc6, 0xcf, 0x26, 0x30, 0x16, 0x62, 0x8a, 0x7b,
+ 0x24, 0xf5, 0x56, 0xfb, 0xd4, 0x60, 0xab, 0x8f, 0xb6, 0xf4, 0xed, 0xad, 0x5e, 0x9e, 0x03, 0x80,
+ 0x36, 0xf2, 0x9c, 0x85, 0x2e, 0xc1, 0xb5, 0x10, 0x13, 0x41, 0x6c, 0x33, 0x03, 0xc5, 0x36, 0xdb,
+ 0x4f, 0x6c, 0x3f, 0xc0, 0x8f, 0x59, 0x0b, 0x22, 0x7a, 0xb7, 0x44, 0xb2, 0x1b, 0x53, 0x12, 0x3d,
+ 0x3b, 0xf4, 0x05, 0x25, 0x2b, 0x5a, 0x9d, 0xd7, 0x82, 0x29, 0xf2, 0x58, 0x35, 0x77, 0x10, 0xd3,
+ 0xa1, 0x30, 0x41, 0x3d, 0x0b, 0x66, 0x68, 0xc6, 0xa6, 0x63, 0xe3, 0xf6, 0xe4, 0x48, 0x06, 0x21,
+ 0x0d, 0x83, 0xd8, 0x74, 0x91, 0xe9, 0x39, 0x2e, 0x29, 0x23, 0x4f, 0x41, 0xe4, 0x92, 0xe0, 0x37,
+ 0x03, 0x2d, 0xd4, 0x04, 0xc9, 0x79, 0x62, 0x92, 0xa6, 0x24, 0x93, 0x9b, 0xbd, 0xe1, 0xf4, 0x8f,
+ 0x6a, 0x5d, 0x03, 0xa3, 0xbd, 0x44, 0xa6, 0x76, 0x48, 0x3d, 0x09, 0x54, 0x96, 0x8a, 0xf3, 0x96,
+ 0x6b, 0x55, 0x43, 0xab, 0x1a, 0xc5, 0xcd, 0xbe, 0x12, 0xb5, 0x05, 0xdf, 0x98, 0x03, 0xb9, 0x67,
+ 0x3a, 0x96, 0x0d, 0x9f, 0x9f, 0x11, 0x44, 0xc2, 0x46, 0xde, 0x25, 0xc7, 0xbd, 0x18, 0x28, 0x6a,
+ 0x98, 0x10, 0x8f, 0x4d, 0x28, 0x4a, 0xca, 0x40, 0x51, 0xca, 0xf5, 0x13, 0xa5, 0x5f, 0xe4, 0x45,
+ 0xe9, 0x2e, 0x51, 0x94, 0x6e, 0xec, 0xc3, 0x7f, 0x4c, 0x7c, 0x44, 0x07, 0xf0, 0xf1, 0xa0, 0x03,
+ 0xb8, 0x47, 0x80, 0xf1, 0x71, 0x72, 0xc5, 0x24, 0x03, 0xf0, 0x4b, 0xa9, 0x2a, 0x7e, 0x3f, 0xa8,
+ 0xb7, 0x22, 0xa0, 0xde, 0xee, 0xd3, 0x27, 0x58, 0xfb, 0xbb, 0x8e, 0x07, 0xf6, 0x77, 0x13, 0x17,
+ 0xd5, 0x13, 0xe0, 0xd8, 0x62, 0x65, 0x69, 0x49, 0xd3, 0xb5, 0xaa, 0xd1, 0xa8, 0x6a, 0xc6, 0xf9,
+ 0x9a, 0x7e, 0x5f, 0xb1, 0x0d, 0xdf, 0xa0, 0x00, 0x80, 0x39, 0x54, 0x36, 0xed, 0x26, 0x6a, 0xcb,
+ 0xf5, 0xe8, 0xff, 0x23, 0x9b, 0xac, 0x4f, 0x08, 0xcb, 0x8f, 0x80, 0xf3, 0x35, 0x59, 0x79, 0xad,
+ 0x8c, 0x2c, 0x2c, 0x19, 0xa8, 0x6f, 0x7b, 0x24, 0xd8, 0x9e, 0x57, 0x81, 0xa3, 0x7e, 0x79, 0x2c,
+ 0x7b, 0xff, 0x69, 0xdf, 0x3b, 0x73, 0x60, 0x8e, 0xc1, 0xe2, 0xcf, 0xe3, 0x1f, 0xcc, 0xc8, 0x4c,
+ 0xe4, 0x21, 0x98, 0x64, 0xd3, 0x76, 0xbf, 0x7b, 0x0f, 0xde, 0xd5, 0x65, 0x30, 0xdd, 0x41, 0xee,
+ 0x8e, 0xd5, 0xed, 0x5a, 0x8e, 0x4d, 0x17, 0xe4, 0xe6, 0x6e, 0x7b, 0x6c, 0xc0, 0x71, 0xb2, 0x76,
+ 0x39, 0xbf, 0x6e, 0xba, 0x9e, 0xd5, 0xb4, 0x3a, 0xa6, 0xed, 0xad, 0x87, 0x99, 0x75, 0xfe, 0x4f,
+ 0xf8, 0xd2, 0x84, 0xd3, 0x1a, 0xb1, 0x25, 0x11, 0x22, 0xf1, 0xbb, 0x09, 0xa6, 0x24, 0xb1, 0x05,
+ 0x26, 0x13, 0x8b, 0x87, 0x52, 0x15, 0x8b, 0x3e, 0x78, 0x6f, 0xa9, 0xd7, 0x80, 0x13, 0x95, 0x6a,
+ 0xb9, 0xa6, 0xeb, 0x5a, 0xd9, 0x68, 0xac, 0x6b, 0xfa, 0x5a, 0xa5, 0x5e, 0xaf, 0xd4, 0xaa, 0xf5,
+ 0x83, 0x68, 0x3b, 0xfc, 0xa4, 0x12, 0x48, 0xcc, 0x22, 0x6a, 0xb6, 0x2d, 0x1b, 0xc1, 0x7b, 0x0e,
+ 0x28, 0x30, 0xe2, 0xaa, 0x8f, 0x3c, 0xce, 0xac, 0xfe, 0x08, 0x9c, 0x5f, 0x9f, 0x1c, 0xe7, 0xfe,
+ 0x05, 0xfe, 0x1b, 0x56, 0xff, 0x2f, 0x2b, 0xe0, 0x18, 0xa7, 0x88, 0x3a, 0xda, 0x19, 0xd9, 0x4a,
+ 0xde, 0xcf, 0xf0, 0xba, 0x5b, 0x11, 0x31, 0xed, 0x67, 0x4d, 0xef, 0x23, 0x23, 0x02, 0xd6, 0xb7,
+ 0x05, 0xb0, 0xae, 0x0a, 0xb0, 0x3e, 0x6d, 0x88, 0x32, 0x93, 0x21, 0xfb, 0x5b, 0xa9, 0x22, 0x7b,
+ 0x0d, 0x38, 0xb1, 0x5e, 0xd2, 0x8d, 0x4a, 0xb9, 0xb2, 0x5e, 0xc2, 0xe3, 0x28, 0x37, 0x64, 0x47,
+ 0x98, 0xeb, 0x22, 0xe8, 0x7d, 0xf1, 0xfd, 0xfd, 0x1c, 0xb8, 0xb6, 0x7f, 0x47, 0x5b, 0xde, 0x36,
+ 0xed, 0x2d, 0x04, 0x2d, 0x19, 0xa8, 0x17, 0xc1, 0x44, 0x93, 0x64, 0xa7, 0x38, 0xf3, 0x5b, 0x37,
+ 0x31, 0x7d, 0x39, 0xad, 0x41, 0xf7, 0x7f, 0x85, 0xef, 0xe1, 0x05, 0xc2, 0x10, 0x05, 0xe2, 0x19,
+ 0xf1, 0xe0, 0xed, 0xa3, 0x3b, 0x42, 0x36, 0x3e, 0x13, 0xc8, 0xc6, 0x79, 0x41, 0x36, 0xca, 0x07,
+ 0x2b, 0x3e, 0x99, 0x98, 0xfc, 0xc9, 0x23, 0xa1, 0x03, 0x88, 0x94, 0x26, 0x2b, 0x7a, 0x54, 0xe8,
+ 0xdb, 0xdd, 0xbf, 0x4e, 0x01, 0x85, 0x45, 0xd4, 0x46, 0xb2, 0x2b, 0x91, 0xdf, 0xce, 0xca, 0x6e,
+ 0x88, 0x50, 0x18, 0x68, 0xd9, 0xd1, 0xab, 0x23, 0x9e, 0xb5, 0x83, 0xba, 0x9e, 0xb9, 0xd3, 0x21,
+ 0xac, 0x56, 0xf4, 0x30, 0x01, 0x3e, 0x2f, 0x2b, 0xb3, 0x5d, 0x12, 0x53, 0xcd, 0xbf, 0x8d, 0x35,
+ 0xc5, 0xaf, 0xcd, 0x81, 0xc2, 0x79, 0xb3, 0xdd, 0x46, 0x1e, 0xfc, 0x7a, 0x16, 0x14, 0xca, 0x78,
+ 0x4e, 0x8a, 0xe0, 0xe3, 0x42, 0xb0, 0x20, 0x98, 0x74, 0x1d, 0xc7, 0x5b, 0x37, 0xbd, 0x6d, 0x86,
+ 0x56, 0xf0, 0xce, 0xb6, 0x69, 0x7f, 0x93, 0x07, 0xed, 0x1e, 0x11, 0xb4, 0x1f, 0x15, 0xb8, 0x49,
+ 0x2b, 0x9a, 0xa7, 0x95, 0x44, 0xa0, 0x06, 0xc1, 0xe4, 0x8e, 0x8d, 0x76, 0x1c, 0xdb, 0x6a, 0xfa,
+ 0x23, 0xbd, 0xff, 0x0e, 0x3f, 0x12, 0xcc, 0x92, 0x17, 0x04, 0xcc, 0xe6, 0xa5, 0x6b, 0x49, 0x06,
+ 0x5a, 0x7d, 0x08, 0xcc, 0xae, 0x03, 0x8f, 0xa2, 0x10, 0x34, 0x8c, 0x5a, 0xa3, 0xac, 0x6b, 0x25,
+ 0x43, 0x6b, 0xac, 0xd6, 0xca, 0xa5, 0xd5, 0x86, 0xae, 0xad, 0xd7, 0x8a, 0x08, 0xfe, 0xd7, 0x2c,
+ 0x66, 0x6e, 0xd3, 0xd9, 0x43, 0x2e, 0x5c, 0x96, 0xe2, 0x73, 0x1c, 0x4f, 0x18, 0x06, 0xbf, 0x28,
+ 0xbd, 0x55, 0xce, 0xb8, 0xc3, 0x28, 0x88, 0xe8, 0x0a, 0x3f, 0x2a, 0xb5, 0xed, 0x1d, 0x5b, 0xd4,
+ 0x23, 0x80, 0xd3, 0xff, 0x33, 0x0b, 0x26, 0xca, 0x8e, 0xbd, 0x87, 0x5c, 0x8f, 0xb7, 0x32, 0x79,
+ 0x6e, 0x66, 0x44, 0x6e, 0xe2, 0xae, 0x09, 0xd9, 0x9e, 0xeb, 0x74, 0x7c, 0x33, 0xd3, 0x7f, 0x85,
+ 0xbf, 0x96, 0x94, 0xc3, 0xac, 0xe6, 0xe8, 0xe5, 0xa6, 0xfe, 0x15, 0x09, 0xe4, 0x29, 0x3d, 0x0a,
+ 0xf0, 0x86, 0x24, 0xb8, 0xf4, 0x27, 0x20, 0xfd, 0x5d, 0xde, 0xaf, 0x28, 0x60, 0x96, 0x2a, 0x5f,
+ 0x1d, 0x91, 0x71, 0x11, 0xd6, 0xf8, 0x85, 0x9e, 0x1e, 0xe6, 0xaf, 0x1c, 0x11, 0xd8, 0x5f, 0x30,
+ 0x3b, 0x9d, 0x60, 0xd1, 0x6f, 0xe5, 0x88, 0xce, 0xde, 0xa9, 0x98, 0x2f, 0x14, 0x40, 0xce, 0xdc,
+ 0xf5, 0xb6, 0xe1, 0x0f, 0xa4, 0x4d, 0x7e, 0xa1, 0x33, 0x60, 0xf4, 0x44, 0x40, 0x72, 0x1c, 0xe4,
+ 0x3d, 0xe7, 0x22, 0xf2, 0xf9, 0x40, 0x5f, 0x30, 0x1c, 0x66, 0xa7, 0x63, 0x90, 0x0f, 0x0c, 0x0e,
+ 0xff, 0x1d, 0x8f, 0x30, 0x66, 0xb3, 0xe9, 0xec, 0xda, 0x5e, 0xc5, 0x5f, 0xf8, 0x0b, 0x13, 0xe0,
+ 0xc3, 0x19, 0x99, 0x29, 0x84, 0x04, 0x81, 0xc9, 0x20, 0xbb, 0x30, 0x84, 0x2a, 0xcd, 0x83, 0x9b,
+ 0x4b, 0xeb, 0xeb, 0x0d, 0xa3, 0x76, 0x9f, 0x56, 0x0d, 0x87, 0xfb, 0x46, 0xa5, 0xda, 0x30, 0x56,
+ 0xb4, 0x46, 0x79, 0x43, 0x27, 0xab, 0x33, 0xa5, 0x72, 0xb9, 0xb6, 0x51, 0x35, 0x8a, 0x08, 0xbe,
+ 0x3d, 0x0b, 0x66, 0xca, 0x6d, 0xa7, 0x1b, 0x20, 0x7c, 0x5d, 0x88, 0x70, 0xc0, 0xc6, 0x0c, 0xc7,
+ 0x46, 0xf8, 0x2f, 0x19, 0xd9, 0xad, 0x5e, 0x9f, 0x21, 0x5c, 0xf1, 0x11, 0xbd, 0xd4, 0xaf, 0x49,
+ 0x6d, 0xf5, 0x0e, 0x2e, 0x2f, 0x7d, 0x95, 0xf8, 0xfc, 0x9d, 0x60, 0xa2, 0x44, 0x05, 0x03, 0xfe,
+ 0x4d, 0x06, 0x14, 0xca, 0x8e, 0xbd, 0x69, 0x6d, 0xa9, 0x37, 0x82, 0x39, 0x64, 0x9b, 0x17, 0xda,
+ 0x68, 0xd1, 0xf4, 0xcc, 0x3d, 0x0b, 0x5d, 0x22, 0x0d, 0x98, 0xd4, 0x7b, 0x52, 0x31, 0x51, 0x2c,
+ 0x05, 0x5d, 0xd8, 0xdd, 0x22, 0x44, 0x4d, 0xea, 0x7c, 0x92, 0xfa, 0x34, 0x70, 0x35, 0x7d, 0x5d,
+ 0x77, 0x91, 0x8b, 0xda, 0xc8, 0xec, 0x22, 0x6c, 0x8c, 0xda, 0xa8, 0x4d, 0x84, 0x76, 0x52, 0x8f,
+ 0xfa, 0xac, 0x9e, 0x05, 0x33, 0xf4, 0x13, 0x31, 0x75, 0xba, 0x44, 0x8c, 0x27, 0x75, 0x21, 0x4d,
+ 0x7d, 0x3c, 0xc8, 0xa3, 0xcb, 0x9e, 0x6b, 0x9e, 0x6a, 0x11, 0xbc, 0xae, 0x9e, 0xa7, 0xbe, 0x5e,
+ 0xf3, 0xbe, 0xaf, 0xd7, 0x7c, 0x9d, 0x78, 0x82, 0xe9, 0x34, 0x17, 0xfc, 0x95, 0xc9, 0xc0, 0x90,
+ 0xf8, 0xd7, 0x6c, 0x28, 0x18, 0x2a, 0xc8, 0xd9, 0xe6, 0x0e, 0x62, 0x72, 0x41, 0x9e, 0xd5, 0x9b,
+ 0xc1, 0x51, 0x73, 0xcf, 0xf4, 0x4c, 0x77, 0xd5, 0x69, 0x9a, 0x6d, 0x32, 0xf8, 0xf9, 0x9a, 0xdf,
+ 0xfb, 0x81, 0xac, 0xc3, 0x7b, 0x8e, 0x8b, 0x48, 0x2e, 0x7f, 0x1d, 0xde, 0x4f, 0xc0, 0xa5, 0x5b,
+ 0x4d, 0xc7, 0x26, 0xf4, 0x2b, 0x3a, 0x79, 0xc6, 0x5c, 0x69, 0x59, 0x5d, 0xdc, 0x10, 0x52, 0x4a,
+ 0x95, 0x2e, 0x28, 0xd7, 0xaf, 0xd8, 0x4d, 0xb2, 0x06, 0x3f, 0xa9, 0x47, 0x7d, 0x56, 0x17, 0xc0,
+ 0x34, 0x5b, 0x7e, 0x5e, 0xc3, 0x72, 0x55, 0x20, 0x72, 0x75, 0x46, 0xf4, 0xa4, 0xa1, 0x78, 0xce,
+ 0x57, 0xc3, 0x7c, 0x3a, 0xff, 0x93, 0x7a, 0x2f, 0x78, 0x14, 0x7b, 0x2d, 0xef, 0x76, 0x3d, 0x67,
+ 0x87, 0x82, 0xbe, 0x64, 0xb5, 0x69, 0x0b, 0x26, 0x48, 0x0b, 0xe2, 0xb2, 0xa8, 0xb7, 0x81, 0xe3,
+ 0x1d, 0x17, 0x6d, 0x22, 0xf7, 0x7e, 0x73, 0x67, 0xf7, 0xb2, 0xe1, 0x9a, 0x76, 0xb7, 0xe3, 0xb8,
+ 0xde, 0xa9, 0x49, 0x42, 0x7c, 0xdf, 0x6f, 0xac, 0xa3, 0x9c, 0x04, 0x05, 0xca, 0x3e, 0xf8, 0x92,
+ 0xbc, 0xb4, 0x13, 0x1d, 0x6b, 0x50, 0xac, 0x79, 0xf6, 0x04, 0x30, 0xc1, 0x7a, 0x38, 0x02, 0xd4,
+ 0xf4, 0x6d, 0x27, 0x7b, 0x66, 0x73, 0xac, 0x14, 0xdd, 0xcf, 0xa6, 0xde, 0x0e, 0x0a, 0x4d, 0xd2,
+ 0x2c, 0x82, 0xd9, 0xf4, 0x6d, 0x8f, 0xea, 0x5f, 0x29, 0xc9, 0xa2, 0xb3, 0xac, 0xf0, 0x8b, 0x8a,
+ 0x94, 0xdf, 0x5d, 0x1c, 0xc5, 0xc9, 0xb4, 0xfa, 0x9b, 0xd9, 0x21, 0xba, 0xcd, 0x5b, 0xc0, 0x4d,
+ 0xac, 0x4f, 0x64, 0xf6, 0xc7, 0x62, 0x63, 0x61, 0xc3, 0x37, 0xc1, 0xb1, 0x55, 0x52, 0x37, 0x4a,
+ 0x3a, 0x9e, 0x3f, 0x2d, 0x62, 0xd3, 0xfd, 0x66, 0x70, 0xe3, 0x80, 0xdc, 0x9a, 0xd1, 0xa8, 0x96,
+ 0xd6, 0xb4, 0xe2, 0xa6, 0x68, 0xdb, 0xd4, 0x8d, 0xda, 0x7a, 0x43, 0xdf, 0xa8, 0x56, 0x2b, 0xd5,
+ 0x65, 0x5a, 0x18, 0x36, 0x09, 0x4f, 0x86, 0x19, 0xce, 0xeb, 0x15, 0x43, 0x6b, 0x94, 0x6b, 0xd5,
+ 0xa5, 0xca, 0x72, 0xd1, 0x1a, 0x64, 0x18, 0x3d, 0xa0, 0x9e, 0x01, 0xd7, 0x0a, 0x94, 0x54, 0x6a,
+ 0x55, 0x3c, 0x9f, 0x28, 0x97, 0xaa, 0x65, 0x0d, 0x4f, 0x1e, 0x2e, 0xaa, 0x10, 0x9c, 0xa0, 0xc5,
+ 0x35, 0x96, 0x2a, 0xab, 0xfc, 0x16, 0xc0, 0x27, 0x32, 0xea, 0x29, 0x70, 0x15, 0xff, 0xad, 0x52,
+ 0x3d, 0x57, 0x5a, 0xad, 0x2c, 0x16, 0xff, 0x38, 0xa3, 0xde, 0x00, 0xae, 0x13, 0xfe, 0xa2, 0xab,
+ 0xf9, 0x8d, 0xca, 0x62, 0x63, 0xad, 0x52, 0x5f, 0x2b, 0x19, 0xe5, 0x95, 0xe2, 0x27, 0xc9, 0x7c,
+ 0x21, 0x30, 0x80, 0x39, 0x67, 0xb8, 0x97, 0xf3, 0x63, 0x7a, 0x49, 0x14, 0xd4, 0xc7, 0xf5, 0x85,
+ 0x3d, 0xde, 0x86, 0x7d, 0x28, 0x18, 0x1d, 0x16, 0x05, 0x11, 0x7a, 0x42, 0x82, 0xb2, 0x92, 0xc9,
+ 0x90, 0x31, 0x84, 0x08, 0x9d, 0x01, 0xd7, 0x56, 0x35, 0x8a, 0x94, 0xae, 0x95, 0x6b, 0xe7, 0x34,
+ 0xbd, 0x71, 0xbe, 0xb4, 0xba, 0xaa, 0x19, 0x8d, 0xa5, 0x8a, 0x5e, 0x37, 0x8a, 0x9b, 0xf0, 0x9f,
+ 0xb2, 0xc1, 0x1c, 0x9a, 0xe3, 0xd6, 0xdf, 0x64, 0x93, 0xaa, 0x75, 0xec, 0x5c, 0xf9, 0xc9, 0xa0,
+ 0xd0, 0xf5, 0x4c, 0x6f, 0xb7, 0xcb, 0xb4, 0xfa, 0xd1, 0xfd, 0xb5, 0x7a, 0xbe, 0x4e, 0x32, 0xe9,
+ 0x2c, 0x33, 0xfc, 0x62, 0x26, 0x89, 0x9a, 0x8e, 0x60, 0x1a, 0x6d, 0x0d, 0xc1, 0xe2, 0xd3, 0x00,
+ 0xfa, 0xd2, 0x5e, 0xa9, 0x37, 0x4a, 0xab, 0xba, 0x56, 0x5a, 0xbc, 0x3f, 0x98, 0x3c, 0x23, 0xf5,
+ 0x04, 0x38, 0xb6, 0x51, 0xc5, 0xd3, 0x61, 0xa2, 0x2e, 0xb5, 0x6a, 0x55, 0x2b, 0x63, 0xbe, 0x3f,
+ 0x8f, 0x2c, 0x55, 0x63, 0x0b, 0x9a, 0xd0, 0x8d, 0xad, 0x1c, 0x8e, 0xff, 0xdf, 0x90, 0xf6, 0xe8,
+ 0x08, 0x25, 0x8c, 0x2f, 0x6b, 0xb4, 0x38, 0x3c, 0x2c, 0xe5, 0xc4, 0x21, 0x45, 0x49, 0x32, 0x3c,
+ 0xfe, 0xc3, 0x10, 0x78, 0x9c, 0x00, 0xc7, 0x78, 0x3c, 0x88, 0x33, 0x47, 0x34, 0x0c, 0x5f, 0x9d,
+ 0x04, 0x85, 0x3a, 0x6a, 0xa3, 0xa6, 0x07, 0xdf, 0xc9, 0x19, 0x13, 0x73, 0x20, 0x1b, 0x38, 0x0f,
+ 0x64, 0xad, 0x96, 0x30, 0x7d, 0xce, 0xf6, 0x4c, 0x9f, 0x63, 0xcc, 0x00, 0x25, 0x91, 0x19, 0x90,
+ 0x4b, 0xc1, 0x0c, 0xc8, 0x0f, 0x6f, 0x06, 0x14, 0x06, 0x99, 0x01, 0xf0, 0x4d, 0x85, 0xa4, 0xbd,
+ 0x04, 0x65, 0xf5, 0xe1, 0x0e, 0xfe, 0xff, 0x23, 0x97, 0xa4, 0x57, 0xe9, 0x4b, 0x71, 0x32, 0x29,
+ 0xfe, 0x81, 0x92, 0xc2, 0xf2, 0x83, 0x7a, 0x3d, 0xb8, 0x2e, 0x7c, 0x6f, 0x68, 0xcf, 0xae, 0xd4,
+ 0x8d, 0x3a, 0x19, 0xf1, 0xcb, 0x35, 0x5d, 0xdf, 0x58, 0xa7, 0x2b, 0x77, 0x27, 0x81, 0x1a, 0x96,
+ 0xa2, 0x6f, 0x54, 0xe9, 0xf8, 0xbe, 0x25, 0x96, 0xbe, 0x54, 0xa9, 0x2e, 0x36, 0x02, 0x9d, 0xa9,
+ 0x2e, 0xd5, 0x8a, 0xdb, 0x78, 0xca, 0xc6, 0x95, 0x8e, 0x07, 0x68, 0x56, 0x43, 0xa9, 0xba, 0xd8,
+ 0x58, 0xab, 0x6a, 0x6b, 0xb5, 0x6a, 0xa5, 0x4c, 0xd2, 0xeb, 0x9a, 0x51, 0xb4, 0xf0, 0x40, 0xd3,
+ 0x63, 0x51, 0xd4, 0xb5, 0x92, 0x5e, 0x5e, 0xd1, 0x74, 0x5a, 0xe5, 0x03, 0xea, 0x8d, 0xe0, 0x6c,
+ 0xa9, 0x5a, 0x33, 0x70, 0x4a, 0xa9, 0x7a, 0xbf, 0x71, 0xff, 0xba, 0xd6, 0x58, 0xd7, 0x6b, 0x65,
+ 0xad, 0x5e, 0xc7, 0x7a, 0xca, 0xec, 0x8f, 0x62, 0x5b, 0x7d, 0x06, 0xb8, 0x93, 0x23, 0x4d, 0x33,
+ 0xc8, 0x36, 0xd1, 0x5a, 0x8d, 0x78, 0x0a, 0x2c, 0x6a, 0x8d, 0x95, 0x52, 0xbd, 0x51, 0xa9, 0x96,
+ 0x6b, 0x6b, 0xeb, 0x25, 0xa3, 0x82, 0xd5, 0x79, 0x5d, 0xaf, 0x19, 0xb5, 0xc6, 0x39, 0x4d, 0xaf,
+ 0x57, 0x6a, 0xd5, 0xa2, 0x8d, 0x9b, 0xcc, 0xe9, 0xbf, 0xdf, 0x0f, 0x3b, 0xea, 0xb5, 0xe0, 0x94,
+ 0x9f, 0xbe, 0x5a, 0xc3, 0x8c, 0xe6, 0x2c, 0x92, 0x4e, 0xaa, 0x16, 0xc9, 0x3f, 0x67, 0x41, 0xae,
+ 0xee, 0x39, 0x1d, 0xf8, 0xa3, 0x61, 0x07, 0x73, 0x1a, 0x00, 0x97, 0xec, 0xfa, 0xe0, 0x59, 0x18,
+ 0x9b, 0x97, 0x71, 0x29, 0xf0, 0x8f, 0xa4, 0x97, 0xaa, 0xc3, 0x3e, 0xdb, 0xe9, 0x44, 0xd8, 0x2a,
+ 0xdf, 0x93, 0xf3, 0xdd, 0x8f, 0x2e, 0x28, 0x99, 0xbc, 0xff, 0xec, 0x30, 0x8b, 0xd1, 0x10, 0x9c,
+ 0xe4, 0x60, 0xc3, 0xfc, 0xf7, 0x45, 0x02, 0xa9, 0x57, 0x83, 0xab, 0x7a, 0x84, 0x8b, 0xc8, 0xd4,
+ 0xa6, 0xfa, 0x18, 0xf0, 0x68, 0x4e, 0xbc, 0xb5, 0xb5, 0xda, 0x39, 0x2d, 0x10, 0xe4, 0xc5, 0x92,
+ 0x51, 0x2a, 0x6e, 0xc1, 0xcf, 0x2b, 0x20, 0xb7, 0xe6, 0xec, 0xf5, 0xee, 0x10, 0xd8, 0xe8, 0x12,
+ 0xb7, 0x16, 0xea, 0xbf, 0x8a, 0xbe, 0xca, 0x52, 0x6c, 0x5f, 0x8b, 0xde, 0x0d, 0x7c, 0x38, 0x9b,
+ 0x84, 0xed, 0x6b, 0x07, 0xdd, 0x02, 0xfc, 0xfb, 0x61, 0xd8, 0x1e, 0xc1, 0x5a, 0xa4, 0x9e, 0x05,
+ 0xa7, 0xc3, 0x0f, 0x95, 0x45, 0xad, 0x6a, 0x54, 0x96, 0xee, 0x0f, 0x99, 0x5b, 0xd1, 0xa5, 0xd8,
+ 0x3f, 0xa8, 0x1b, 0x8b, 0x9f, 0x69, 0x9c, 0x02, 0xc7, 0xc3, 0x6f, 0xcb, 0x9a, 0xe1, 0x7f, 0x79,
+ 0x00, 0x3e, 0x3f, 0x0f, 0x66, 0x68, 0xb7, 0xbe, 0xd1, 0x69, 0x99, 0x1e, 0x82, 0xb7, 0x87, 0xe8,
+ 0xde, 0x04, 0x8e, 0x56, 0xd6, 0x97, 0xea, 0x75, 0xcf, 0x71, 0xcd, 0x2d, 0x54, 0x6a, 0xb5, 0x5c,
+ 0xc6, 0xad, 0xde, 0x64, 0xf8, 0x3e, 0xe9, 0x75, 0x3e, 0x71, 0x28, 0xa1, 0x75, 0x46, 0xa0, 0xfe,
+ 0x15, 0xa9, 0x75, 0x39, 0x89, 0x02, 0x93, 0xa1, 0xff, 0xc0, 0x88, 0x75, 0x2e, 0x1a, 0x97, 0xcd,
+ 0xb3, 0x2f, 0xcc, 0x82, 0x29, 0xc3, 0xda, 0x41, 0xcf, 0x71, 0x6c, 0xd4, 0x55, 0x27, 0x80, 0xb2,
+ 0xbc, 0x66, 0x14, 0x8f, 0xe0, 0x07, 0x6c, 0x54, 0x65, 0xc8, 0x83, 0x86, 0x2b, 0xc0, 0x0f, 0x25,
+ 0xa3, 0xa8, 0xe0, 0x87, 0x35, 0xcd, 0x28, 0xe6, 0xf0, 0x43, 0x55, 0x33, 0x8a, 0x79, 0xfc, 0xb0,
+ 0xbe, 0x6a, 0x14, 0x0b, 0xf8, 0xa1, 0x52, 0x37, 0x8a, 0x13, 0xf8, 0x61, 0xa1, 0x6e, 0x14, 0x27,
+ 0xf1, 0xc3, 0xb9, 0xba, 0x51, 0x9c, 0xc2, 0x0f, 0x65, 0xc3, 0x28, 0x02, 0xfc, 0xf0, 0xcc, 0xba,
+ 0x51, 0x9c, 0xc6, 0x0f, 0xa5, 0xb2, 0x51, 0x9c, 0x21, 0x0f, 0x9a, 0x51, 0x9c, 0xc5, 0x0f, 0xf5,
+ 0xba, 0x51, 0x9c, 0x23, 0x25, 0xd7, 0x8d, 0xe2, 0x51, 0x52, 0x57, 0xc5, 0x28, 0x16, 0xf1, 0xc3,
+ 0x4a, 0xdd, 0x28, 0x1e, 0x23, 0x99, 0xeb, 0x46, 0x51, 0x25, 0x95, 0xd6, 0x8d, 0xe2, 0x55, 0x24,
+ 0x4f, 0xdd, 0x28, 0x1e, 0x27, 0x55, 0xd4, 0x8d, 0xe2, 0x09, 0x42, 0x86, 0x66, 0x14, 0x4f, 0x92,
+ 0x3c, 0xba, 0x51, 0xbc, 0x9a, 0x7c, 0xaa, 0x1a, 0xc5, 0x53, 0x84, 0x30, 0xcd, 0x28, 0x5e, 0x43,
+ 0x1e, 0x74, 0xa3, 0x08, 0xc9, 0xa7, 0x92, 0x51, 0x7c, 0x14, 0x7c, 0x34, 0x98, 0x5a, 0x46, 0x1e,
+ 0x05, 0x11, 0x16, 0x81, 0xb2, 0x8c, 0x3c, 0xde, 0x8c, 0xff, 0x9a, 0x02, 0xae, 0x66, 0x53, 0xbf,
+ 0x25, 0xd7, 0xd9, 0x59, 0x45, 0x5b, 0x66, 0xf3, 0x8a, 0x76, 0x19, 0x9b, 0x50, 0xb0, 0x2e, 0x2c,
+ 0x5d, 0x75, 0xc2, 0xce, 0x88, 0x3c, 0xc7, 0x5a, 0x9c, 0xfe, 0x62, 0x94, 0x12, 0x2e, 0x46, 0x31,
+ 0x8b, 0xec, 0x1f, 0x79, 0x89, 0x16, 0xd6, 0x8f, 0x33, 0x3d, 0xeb, 0xc7, 0x58, 0x4d, 0x3a, 0xc8,
+ 0xed, 0x3a, 0xb6, 0xd9, 0xae, 0xb3, 0xed, 0x52, 0xba, 0xea, 0xd5, 0x9b, 0xac, 0x3e, 0xcb, 0xd7,
+ 0x0c, 0x6a, 0x95, 0x3d, 0x3d, 0x6e, 0x86, 0xdb, 0xdb, 0xcc, 0x08, 0x25, 0xf9, 0x64, 0xa0, 0x24,
+ 0x86, 0xa0, 0x24, 0xf7, 0x1e, 0xa0, 0xec, 0x64, 0xfa, 0x52, 0x19, 0x6e, 0x6a, 0x11, 0x3a, 0x13,
+ 0xfa, 0xcb, 0xd5, 0x0a, 0xfc, 0x7c, 0x16, 0x9c, 0xd4, 0xec, 0x7e, 0x16, 0x3e, 0x2f, 0x0b, 0x6f,
+ 0xe7, 0xa1, 0x59, 0x17, 0x59, 0x7a, 0x67, 0xdf, 0x66, 0xf7, 0x2f, 0x33, 0x82, 0xa3, 0x9f, 0x0e,
+ 0x38, 0x5a, 0x17, 0x38, 0x7a, 0xcf, 0xf0, 0x45, 0x27, 0x63, 0x68, 0x75, 0xa4, 0x1d, 0x50, 0x0e,
+ 0x7e, 0x33, 0x07, 0x1e, 0x4d, 0x3d, 0x1e, 0x18, 0x85, 0x54, 0xcb, 0x4a, 0x76, 0x4b, 0x47, 0x5d,
+ 0xcf, 0x74, 0x3d, 0xe1, 0x14, 0x6a, 0xcf, 0x54, 0x2a, 0x93, 0xc2, 0x54, 0x2a, 0x3b, 0x70, 0x2a,
+ 0x05, 0xdf, 0xcb, 0x9b, 0x0f, 0xe7, 0x45, 0x8c, 0x4b, 0xfd, 0xfb, 0xff, 0xb8, 0x16, 0x46, 0x41,
+ 0x1d, 0xd8, 0x15, 0x3f, 0x26, 0x40, 0xbd, 0x74, 0xe0, 0x1a, 0x92, 0x21, 0xfe, 0x47, 0xa3, 0xb5,
+ 0xf3, 0x72, 0xfc, 0x37, 0xd1, 0x28, 0x29, 0xb6, 0x52, 0x35, 0xd0, 0x3f, 0x33, 0x01, 0xa6, 0x88,
+ 0x2e, 0xac, 0x5a, 0xf6, 0x45, 0xf8, 0x06, 0x05, 0xcc, 0x54, 0xd1, 0xa5, 0xf2, 0xb6, 0xd9, 0x6e,
+ 0x23, 0x7b, 0x0b, 0xf1, 0x66, 0xfb, 0x29, 0x30, 0x61, 0x76, 0x3a, 0xd5, 0x70, 0x9f, 0xc1, 0x7f,
+ 0x65, 0xfd, 0xef, 0x37, 0xfa, 0x2a, 0x79, 0x26, 0x46, 0xc9, 0x83, 0x7a, 0xe7, 0xf9, 0x3a, 0x23,
+ 0x66, 0xc8, 0x67, 0xc0, 0x74, 0xd3, 0xcf, 0x12, 0x78, 0xab, 0xf3, 0x49, 0xf0, 0xef, 0x12, 0x75,
+ 0x03, 0x52, 0x95, 0x27, 0x13, 0x0a, 0x34, 0x62, 0x3b, 0xe4, 0x04, 0x38, 0x66, 0xd4, 0x6a, 0x8d,
+ 0xb5, 0x52, 0xf5, 0xfe, 0xf0, 0x94, 0xe8, 0x26, 0x7c, 0x4d, 0x0e, 0xcc, 0xd5, 0x9d, 0xf6, 0x1e,
+ 0x0a, 0x61, 0xaa, 0x84, 0x30, 0xf5, 0xf0, 0x29, 0xb3, 0x8f, 0x4f, 0xea, 0x49, 0x50, 0x30, 0xed,
+ 0xee, 0x25, 0xe4, 0xdb, 0x86, 0xec, 0x8d, 0xc1, 0xf8, 0xfb, 0xbc, 0x1e, 0xeb, 0x22, 0x8c, 0x77,
+ 0x0d, 0xe0, 0xa4, 0x48, 0x55, 0x04, 0x90, 0x67, 0xc1, 0x4c, 0x97, 0x6e, 0x16, 0x1a, 0xdc, 0x9e,
+ 0xb0, 0x90, 0x46, 0x48, 0xa4, 0xbb, 0xd5, 0x0a, 0x23, 0x91, 0xbc, 0xc1, 0x37, 0x04, 0xea, 0xbf,
+ 0x21, 0x40, 0x5c, 0x3a, 0x08, 0x61, 0xc9, 0x40, 0x7e, 0xdd, 0xa8, 0x67, 0x78, 0xa7, 0xc0, 0x71,
+ 0xa6, 0xb5, 0x8d, 0xf2, 0x4a, 0x69, 0x75, 0x55, 0xab, 0x2e, 0x6b, 0x8d, 0xca, 0x22, 0xdd, 0xaa,
+ 0x08, 0x53, 0x4a, 0x86, 0xa1, 0xad, 0xad, 0x1b, 0xf5, 0x86, 0xf6, 0xec, 0xb2, 0xa6, 0x2d, 0x12,
+ 0x47, 0x24, 0x72, 0x92, 0xc0, 0x77, 0x19, 0x2b, 0x55, 0xeb, 0xe7, 0x35, 0xbd, 0xb8, 0x7d, 0xb6,
+ 0x04, 0xa6, 0xb9, 0x7e, 0x1e, 0x53, 0xb7, 0x88, 0x36, 0xcd, 0xdd, 0x36, 0xb3, 0xd5, 0x8a, 0x47,
+ 0x30, 0x75, 0x84, 0x37, 0x35, 0xbb, 0x7d, 0xa5, 0x98, 0x51, 0x8b, 0x60, 0x86, 0xef, 0xd2, 0x8b,
+ 0x59, 0xf8, 0x8a, 0x6b, 0xc1, 0xd4, 0x79, 0xc7, 0xbd, 0x48, 0xbc, 0xc7, 0xe0, 0x07, 0x69, 0x34,
+ 0x09, 0xff, 0x5c, 0x1e, 0x37, 0xb0, 0xbf, 0x4e, 0xde, 0x5b, 0xc0, 0x2f, 0x6d, 0x7e, 0xe0, 0xd9,
+ 0xbb, 0x33, 0x60, 0xfa, 0x92, 0x9f, 0x3b, 0xd4, 0x74, 0x2e, 0x09, 0xfe, 0xba, 0xdc, 0xfe, 0xff,
+ 0xe0, 0x2a, 0xd3, 0xdf, 0x9f, 0x7e, 0x67, 0x16, 0x14, 0x96, 0x91, 0x57, 0x6a, 0xb7, 0x79, 0xbe,
+ 0xbd, 0x52, 0xfa, 0x3c, 0x85, 0xd0, 0x88, 0x52, 0xbb, 0x1d, 0xad, 0x54, 0x1c, 0x83, 0x7c, 0xbf,
+ 0x5f, 0x21, 0x0d, 0xbe, 0x49, 0xea, 0x24, 0xd4, 0x80, 0x0a, 0xd3, 0xe7, 0xd8, 0xc7, 0x94, 0x60,
+ 0x8f, 0xfb, 0xd7, 0x38, 0x2b, 0xe7, 0x89, 0x61, 0x24, 0x91, 0x4c, 0xfc, 0x5e, 0xb9, 0x9f, 0x4f,
+ 0xbd, 0x0f, 0x4c, 0xec, 0x76, 0x51, 0xd9, 0xec, 0x22, 0x42, 0x5b, 0x6f, 0x4b, 0x6b, 0x17, 0x1e,
+ 0x40, 0x4d, 0x6f, 0xbe, 0xb2, 0x83, 0x0d, 0xea, 0x0d, 0x9a, 0x31, 0x08, 0xce, 0xc1, 0xde, 0x75,
+ 0xbf, 0x04, 0x3c, 0xa3, 0x68, 0x9a, 0xcd, 0x6d, 0x61, 0x8f, 0x3c, 0x48, 0x80, 0x2f, 0x19, 0x02,
+ 0xd0, 0xd8, 0xdd, 0xe0, 0xc8, 0x83, 0x59, 0x89, 0x61, 0x1c, 0xc1, 0x16, 0xee, 0x30, 0x30, 0x7e,
+ 0x26, 0x0b, 0x72, 0xb5, 0x0e, 0xb2, 0xe5, 0xdc, 0x53, 0xdf, 0x20, 0xef, 0x03, 0x16, 0x34, 0x0c,
+ 0x97, 0x1e, 0xc1, 0xbd, 0x5b, 0x41, 0xce, 0xb2, 0x37, 0x1d, 0x66, 0x7e, 0x3e, 0x2a, 0x62, 0xab,
+ 0xa7, 0x62, 0x6f, 0x3a, 0x3a, 0xc9, 0x28, 0xeb, 0xfe, 0x15, 0x57, 0x77, 0xfa, 0x2c, 0xfd, 0xd6,
+ 0x24, 0x28, 0x50, 0xa1, 0x85, 0x2f, 0x57, 0x80, 0x52, 0x6a, 0xb5, 0x22, 0x8e, 0x78, 0x64, 0xf7,
+ 0x1d, 0xf1, 0x70, 0xc8, 0x6f, 0x01, 0xdf, 0x83, 0x77, 0x31, 0x50, 0x84, 0x64, 0x0f, 0xce, 0x14,
+ 0xa7, 0xd4, 0x6a, 0x45, 0x7b, 0x9a, 0x06, 0x15, 0x66, 0xc5, 0x0a, 0x79, 0x3d, 0x56, 0xe4, 0xf4,
+ 0x38, 0x71, 0x77, 0x1f, 0x49, 0x5f, 0xfa, 0x10, 0xfd, 0x63, 0x16, 0x4c, 0xac, 0x5a, 0x5d, 0x0f,
+ 0x63, 0x53, 0x92, 0xc1, 0xe6, 0x5a, 0x30, 0xe5, 0xb3, 0x06, 0x77, 0x6c, 0xb8, 0xd7, 0x0e, 0x13,
+ 0xe0, 0x1b, 0x79, 0x74, 0x9e, 0x29, 0xa2, 0xf3, 0xa4, 0xf8, 0xd6, 0x33, 0x2a, 0xa2, 0x3d, 0xb8,
+ 0xc3, 0x6a, 0xb3, 0xbd, 0xd5, 0xfe, 0x66, 0xc0, 0xf0, 0x35, 0x81, 0xe1, 0x77, 0x0c, 0x53, 0x65,
+ 0xfa, 0x4c, 0xff, 0x42, 0x16, 0x00, 0x5c, 0x37, 0x3b, 0x26, 0xf3, 0x23, 0xc2, 0xe1, 0xd7, 0x18,
+ 0xee, 0xbe, 0x86, 0xe7, 0xee, 0x9a, 0xc8, 0xdd, 0xa7, 0x0e, 0x6e, 0x6a, 0xdc, 0x71, 0x18, 0xb5,
+ 0x08, 0x14, 0x2b, 0x60, 0x2d, 0x7e, 0x84, 0xef, 0x0c, 0x98, 0xba, 0x2e, 0x30, 0xf5, 0xae, 0x21,
+ 0x6b, 0x4a, 0x9f, 0xaf, 0x7f, 0x95, 0x05, 0x13, 0x75, 0xe4, 0xe1, 0x6e, 0x12, 0x9e, 0x93, 0x39,
+ 0x90, 0xc2, 0xe9, 0x76, 0x56, 0x52, 0xb7, 0xbf, 0x9b, 0x91, 0x0d, 0xa2, 0x11, 0x72, 0x86, 0xd1,
+ 0x14, 0xb1, 0x44, 0xf0, 0x66, 0xa9, 0x20, 0x1a, 0x83, 0x4a, 0x4b, 0x9f, 0xbb, 0x6f, 0xcf, 0x06,
+ 0xdb, 0xef, 0x8f, 0x13, 0xa6, 0x6f, 0xbc, 0xf1, 0x9b, 0xd9, 0x6f, 0xfc, 0xfe, 0x53, 0x26, 0xb9,
+ 0xa9, 0x11, 0xb7, 0xf7, 0x9c, 0xd8, 0xa0, 0x18, 0xc1, 0xb6, 0xf0, 0x30, 0xfc, 0x7a, 0xae, 0x02,
+ 0x0a, 0x6c, 0xfd, 0xf8, 0x9e, 0xf8, 0xf5, 0xe3, 0xc1, 0x13, 0x88, 0x0f, 0x0c, 0x61, 0xae, 0xc5,
+ 0x2d, 0xea, 0x06, 0x64, 0x64, 0x39, 0x32, 0x6e, 0x01, 0x79, 0x12, 0xe5, 0x8f, 0x8d, 0x73, 0xe1,
+ 0x8e, 0xbe, 0x5f, 0x84, 0x86, 0xbf, 0xea, 0x34, 0x53, 0x62, 0x14, 0x46, 0xb0, 0x0e, 0x3c, 0x0c,
+ 0x0a, 0x2f, 0xf9, 0x78, 0x26, 0x30, 0x42, 0x3e, 0x90, 0x63, 0x26, 0xde, 0xc7, 0xc5, 0x78, 0x03,
+ 0x4d, 0xc7, 0xf6, 0xd0, 0x65, 0x6e, 0xe5, 0x3d, 0x48, 0x88, 0xb5, 0x0c, 0x4e, 0x81, 0x09, 0xcf,
+ 0xe5, 0x57, 0xe3, 0xfd, 0x57, 0xbe, 0xc7, 0xc9, 0x8b, 0x3d, 0x4e, 0x15, 0x9c, 0xb5, 0xec, 0x66,
+ 0x7b, 0xb7, 0x85, 0x74, 0xd4, 0x36, 0x71, 0xab, 0xba, 0xa5, 0xee, 0x22, 0xea, 0x20, 0xbb, 0x85,
+ 0x6c, 0x8f, 0xd2, 0xe9, 0x7b, 0xde, 0x4a, 0xe4, 0x84, 0x5f, 0xe7, 0x05, 0xe3, 0x6e, 0x51, 0x30,
+ 0x7e, 0xa4, 0xdf, 0xec, 0x21, 0xc6, 0x08, 0xbd, 0x03, 0x00, 0xda, 0xb6, 0x73, 0x16, 0xba, 0xc4,
+ 0x3a, 0xc4, 0x6b, 0x7a, 0x4c, 0xd1, 0x5a, 0x90, 0x41, 0xe7, 0x32, 0xc3, 0x2f, 0x07, 0xc2, 0x70,
+ 0xaf, 0x20, 0x0c, 0xb7, 0x48, 0x92, 0x90, 0x4c, 0x0e, 0x3a, 0x43, 0xac, 0x68, 0xcc, 0x82, 0xa9,
+ 0x70, 0x1d, 0x52, 0x51, 0xaf, 0x01, 0x27, 0x7c, 0xcf, 0x86, 0xaa, 0xa6, 0x2d, 0xd6, 0x1b, 0x1b,
+ 0xeb, 0xcb, 0x7a, 0x69, 0x51, 0x2b, 0x02, 0x55, 0x05, 0x73, 0xb5, 0x85, 0x67, 0x6a, 0x65, 0x23,
+ 0x70, 0x48, 0xc8, 0xc1, 0xbf, 0xc8, 0x82, 0x3c, 0x71, 0x1b, 0x87, 0x3f, 0x31, 0x22, 0xc9, 0xe9,
+ 0x0a, 0xfb, 0x38, 0xc1, 0xbc, 0x42, 0x3e, 0x0e, 0x20, 0x63, 0x26, 0xa1, 0xea, 0x40, 0x71, 0x00,
+ 0x63, 0x0a, 0x4a, 0x5f, 0x3d, 0xb1, 0x4a, 0xd6, 0xb7, 0x9d, 0x4b, 0xff, 0x9e, 0x55, 0x12, 0xb7,
+ 0xff, 0x90, 0x55, 0xb2, 0x0f, 0x09, 0x63, 0x57, 0xc9, 0x3e, 0x7a, 0x17, 0xa3, 0xa6, 0xf0, 0xef,
+ 0x72, 0xc1, 0xb2, 0xcb, 0xff, 0x73, 0xb0, 0x65, 0x97, 0x12, 0x98, 0xb5, 0x6c, 0x0f, 0xb9, 0xb6,
+ 0xd9, 0x5e, 0x6a, 0x9b, 0x5b, 0xfe, 0xe1, 0xe4, 0xde, 0x59, 0x78, 0x85, 0xcb, 0xa3, 0x8b, 0x7f,
+ 0xa8, 0xa7, 0x01, 0xf0, 0xd0, 0x4e, 0xa7, 0x6d, 0x7a, 0xa1, 0xe8, 0x71, 0x29, 0xbc, 0xf4, 0xe5,
+ 0x44, 0xe9, 0x7b, 0x02, 0xb8, 0x8a, 0x82, 0x66, 0x5c, 0xe9, 0xa0, 0x0d, 0xdb, 0xfa, 0xc9, 0x5d,
+ 0x12, 0x9e, 0x86, 0xca, 0x68, 0xbf, 0x4f, 0xf0, 0xbf, 0x4b, 0x1f, 0xb2, 0xf4, 0x35, 0x7b, 0xc0,
+ 0x21, 0xcb, 0x40, 0x9b, 0x94, 0x1e, 0x6d, 0x0a, 0x0c, 0x82, 0x9c, 0x84, 0x41, 0xc0, 0x73, 0x3e,
+ 0x2f, 0x69, 0x4c, 0xbf, 0x5e, 0xea, 0x14, 0x67, 0x5c, 0x33, 0xd2, 0xef, 0xa1, 0x3e, 0xa8, 0x80,
+ 0x39, 0x5a, 0xf5, 0x82, 0xe3, 0x5c, 0xdc, 0x31, 0xdd, 0x8b, 0xfc, 0xdc, 0x62, 0x08, 0x71, 0x8b,
+ 0x5e, 0x29, 0xfb, 0x34, 0x8f, 0xec, 0xb2, 0x88, 0xec, 0x13, 0xa3, 0x59, 0xe2, 0xd3, 0x35, 0x9e,
+ 0xc5, 0x8d, 0xb7, 0x06, 0x98, 0x3d, 0x53, 0xc0, 0xec, 0x29, 0x89, 0x09, 0x4c, 0x1f, 0xbb, 0x3f,
+ 0x09, 0xb0, 0xf3, 0x3b, 0xec, 0xd4, 0xb0, 0xfb, 0xca, 0x70, 0xd8, 0xf9, 0x74, 0x0d, 0x81, 0x5d,
+ 0x11, 0x28, 0x17, 0x83, 0x0d, 0x27, 0xfc, 0xc8, 0x37, 0x28, 0x97, 0x1e, 0x9a, 0x11, 0x24, 0x8f,
+ 0x05, 0xcd, 0xe3, 0x22, 0x09, 0xb5, 0x4e, 0xaa, 0x98, 0x7e, 0x49, 0x7a, 0xbd, 0xa5, 0x2f, 0x83,
+ 0x28, 0x75, 0xe3, 0xd1, 0x4a, 0xb9, 0xc5, 0x1a, 0x79, 0x32, 0xd3, 0x47, 0xf3, 0x1f, 0x72, 0x60,
+ 0xca, 0x3f, 0xea, 0xea, 0xc1, 0xcf, 0x72, 0x43, 0xf8, 0x49, 0x50, 0xe8, 0x3a, 0xbb, 0x6e, 0x13,
+ 0xb1, 0x15, 0x30, 0xf6, 0x36, 0xc4, 0x6a, 0xcd, 0xc0, 0x71, 0x79, 0xdf, 0xd0, 0x9f, 0x4b, 0x3c,
+ 0xf4, 0x47, 0x1a, 0x96, 0xf0, 0x25, 0xd2, 0x81, 0x09, 0x05, 0x5c, 0xea, 0xc8, 0x7b, 0x24, 0x8e,
+ 0xd5, 0x7f, 0x28, 0x35, 0xdf, 0x1f, 0xd0, 0x92, 0x64, 0x62, 0x55, 0x1b, 0xc2, 0xa8, 0x7c, 0x14,
+ 0xb8, 0xda, 0xcf, 0xc1, 0xac, 0x49, 0x62, 0x3d, 0x6e, 0xe8, 0xab, 0x45, 0x05, 0x3e, 0x37, 0x07,
+ 0x8a, 0x94, 0xb4, 0x5a, 0x60, 0x58, 0xc1, 0x57, 0x1e, 0xba, 0xf5, 0x18, 0x3d, 0x1d, 0xfc, 0x5c,
+ 0x56, 0x36, 0xf8, 0x91, 0xc0, 0xf8, 0xb0, 0x75, 0x11, 0x92, 0x34, 0x84, 0x2a, 0xc5, 0x08, 0x1f,
+ 0xfc, 0x8d, 0x8c, 0x4c, 0x2c, 0x25, 0x39, 0x12, 0xd3, 0xef, 0x79, 0xde, 0x98, 0xf3, 0xa3, 0x12,
+ 0x2c, 0xb9, 0xce, 0xce, 0x86, 0xdb, 0x86, 0x1f, 0x91, 0x0a, 0x55, 0x17, 0x61, 0xaa, 0x67, 0x23,
+ 0x4d, 0x75, 0x3c, 0x44, 0xef, 0xba, 0x6d, 0x7f, 0x88, 0xde, 0x75, 0xdb, 0x43, 0x0c, 0xd1, 0xea,
+ 0x8d, 0x60, 0xce, 0x6c, 0xb5, 0xd6, 0xcd, 0x2d, 0x54, 0xc6, 0x73, 0x60, 0xdb, 0x63, 0x27, 0x96,
+ 0x7b, 0x52, 0x13, 0xec, 0x8c, 0x09, 0x40, 0x30, 0x1e, 0x3c, 0x92, 0x76, 0xc6, 0x24, 0xe8, 0x4b,
+ 0x5f, 0x4a, 0x7e, 0x37, 0x0b, 0x26, 0xca, 0xdb, 0x26, 0xd9, 0x19, 0x7b, 0xac, 0x10, 0x32, 0x24,
+ 0x72, 0x6f, 0xf2, 0x45, 0xd2, 0x9b, 0xc2, 0x7e, 0x0b, 0x69, 0xf9, 0x11, 0xbc, 0x3f, 0x09, 0x0a,
+ 0xcd, 0x6d, 0x33, 0xe4, 0x3c, 0x7b, 0x93, 0xdc, 0xfb, 0x8d, 0xad, 0x22, 0x7d, 0xf6, 0x7d, 0x32,
+ 0x0b, 0x66, 0x7d, 0xbb, 0x7f, 0x09, 0x79, 0xcd, 0x6d, 0x78, 0x87, 0xec, 0x02, 0x0f, 0xd3, 0x9a,
+ 0x6c, 0xa0, 0x35, 0xf0, 0x07, 0x99, 0x84, 0xa2, 0x2d, 0xd4, 0x1c, 0xb1, 0x3a, 0x96, 0x48, 0x16,
+ 0xe3, 0x0a, 0x4c, 0x9f, 0x99, 0x5f, 0xce, 0x02, 0x60, 0x38, 0xc1, 0xfc, 0xf3, 0x00, 0x9c, 0x7c,
+ 0x99, 0x74, 0x0c, 0x78, 0xd6, 0xf0, 0xb0, 0xda, 0xe4, 0x3d, 0x84, 0xe4, 0xd6, 0xd6, 0xa0, 0x9a,
+ 0xc6, 0xa2, 0xeb, 0x53, 0x8b, 0xbb, 0x9d, 0xb6, 0xd5, 0x34, 0xbd, 0xde, 0xfd, 0xd8, 0x68, 0xf6,
+ 0x92, 0xcb, 0x5c, 0x12, 0x19, 0x78, 0x41, 0x1d, 0x11, 0xbc, 0xa4, 0x47, 0x59, 0xb3, 0xfe, 0x51,
+ 0x56, 0xc9, 0x3d, 0x96, 0x01, 0x85, 0x8f, 0x41, 0x3c, 0x15, 0x70, 0xb4, 0xd6, 0x41, 0xf6, 0x82,
+ 0x8b, 0xcc, 0x56, 0xd3, 0xdd, 0xdd, 0xb9, 0xd0, 0xe5, 0x9d, 0x09, 0xe2, 0x65, 0x94, 0x5b, 0xb2,
+ 0xcd, 0x0a, 0x4b, 0xb6, 0xf0, 0x05, 0x8a, 0xec, 0xc1, 0x6a, 0x6e, 0x63, 0x81, 0xa3, 0x61, 0x88,
+ 0x21, 0x2d, 0xd1, 0x16, 0x58, 0xcf, 0xea, 0x6c, 0x2e, 0xc9, 0xea, 0xec, 0xdb, 0xa4, 0x8e, 0x69,
+ 0x4b, 0xb5, 0x6b, 0x2c, 0x3b, 0x99, 0x73, 0x75, 0xe4, 0x45, 0xc0, 0x7b, 0x03, 0x98, 0xbd, 0x10,
+ 0x7e, 0x09, 0x20, 0x16, 0x13, 0xfb, 0xf8, 0x17, 0xbc, 0x3d, 0xe9, 0x8a, 0x89, 0x48, 0x42, 0x04,
+ 0xba, 0x01, 0x82, 0x59, 0x99, 0x4d, 0xcc, 0x44, 0xcb, 0x1f, 0xb1, 0xf5, 0x8f, 0xc1, 0xcf, 0x30,
+ 0x0b, 0xa6, 0xc9, 0x15, 0x35, 0x0b, 0x57, 0x88, 0xef, 0xbb, 0xa4, 0x51, 0xf2, 0x62, 0x9e, 0xcd,
+ 0x2a, 0xc8, 0xb5, 0x2d, 0xfb, 0xa2, 0xbf, 0xfb, 0x8c, 0x9f, 0xc3, 0x0b, 0x0f, 0xb2, 0x7d, 0x2e,
+ 0x3c, 0x08, 0xf6, 0x07, 0x82, 0x7a, 0x0f, 0x74, 0x03, 0xd7, 0xc0, 0xe2, 0xd2, 0x67, 0xe3, 0x9f,
+ 0xe6, 0x40, 0xa1, 0x8e, 0x4c, 0xb7, 0xb9, 0x0d, 0x5f, 0xc3, 0x45, 0x11, 0x58, 0x02, 0x13, 0x9b,
+ 0x56, 0xdb, 0x43, 0x2e, 0xf5, 0xbb, 0xe1, 0x3b, 0x70, 0xaa, 0xc8, 0x0b, 0x6d, 0xa7, 0x79, 0x71,
+ 0x9e, 0x19, 0xdb, 0xf3, 0x7e, 0x40, 0xa6, 0xf9, 0x25, 0xf2, 0x93, 0xee, 0xff, 0x8c, 0xcd, 0xbe,
+ 0xae, 0xe3, 0x7a, 0x51, 0x11, 0x4e, 0x23, 0x4a, 0xa9, 0x3b, 0xae, 0xa7, 0xd3, 0x1f, 0x31, 0x98,
+ 0x9b, 0xbb, 0xed, 0xb6, 0x81, 0x2e, 0x7b, 0xfe, 0x44, 0xcb, 0x7f, 0xc7, 0x26, 0xa1, 0xb3, 0xb9,
+ 0xd9, 0x45, 0x74, 0x9a, 0x9f, 0xd7, 0xd9, 0x9b, 0x7a, 0x1c, 0xe4, 0xdb, 0xd6, 0x8e, 0x45, 0xa7,
+ 0x06, 0x79, 0x9d, 0xbe, 0xa8, 0x37, 0x83, 0x62, 0x38, 0x2b, 0xa1, 0x84, 0x9e, 0x2a, 0x10, 0x05,
+ 0xdc, 0x97, 0x8e, 0x25, 0xe3, 0x22, 0xba, 0xd2, 0x3d, 0x35, 0x41, 0xbe, 0x93, 0x67, 0xd1, 0xc9,
+ 0x51, 0x66, 0xa7, 0x81, 0xf2, 0x35, 0x7a, 0xce, 0xe9, 0xa2, 0xa6, 0xe3, 0xb6, 0x7c, 0xde, 0x44,
+ 0x4f, 0x17, 0x58, 0xbe, 0x64, 0xfb, 0x03, 0x7d, 0x2b, 0x4f, 0x5f, 0x9e, 0x5e, 0x55, 0xc0, 0x9d,
+ 0x23, 0xae, 0xfa, 0xbc, 0xe5, 0x6d, 0xaf, 0x21, 0xcf, 0x84, 0x7f, 0xaa, 0xfc, 0x6f, 0xb9, 0x8a,
+ 0x91, 0x2b, 0x7a, 0xa0, 0xde, 0xdb, 0x75, 0x6d, 0xcc, 0x2d, 0x16, 0xc2, 0x8a, 0x4b, 0x51, 0xef,
+ 0x02, 0xd7, 0x84, 0x6f, 0xfe, 0x32, 0xe5, 0x22, 0x9b, 0x6a, 0x4e, 0x91, 0xec, 0xd1, 0x19, 0xd4,
+ 0x75, 0x70, 0x3d, 0xfd, 0xb8, 0x62, 0xac, 0xad, 0xae, 0x58, 0x5b, 0xdb, 0x6d, 0x6b, 0x6b, 0xdb,
+ 0xeb, 0x56, 0xec, 0xae, 0x87, 0xcc, 0x56, 0x6d, 0x53, 0xa7, 0x11, 0x88, 0x01, 0x29, 0x47, 0x26,
+ 0xab, 0xe8, 0x7d, 0x23, 0x37, 0x52, 0xf1, 0xf2, 0x10, 0xa1, 0x0f, 0x4f, 0xc1, 0xfa, 0xd0, 0xdd,
+ 0x6d, 0x07, 0x98, 0x5e, 0xdb, 0x83, 0x69, 0x28, 0xd0, 0xbb, 0x6d, 0xa2, 0x14, 0x24, 0x73, 0xd2,
+ 0x31, 0x2b, 0x86, 0x92, 0xf4, 0x95, 0xe3, 0xff, 0x2b, 0x80, 0xfc, 0xb2, 0x6b, 0x76, 0xb6, 0xe1,
+ 0x73, 0x53, 0xe8, 0x6b, 0x03, 0xe9, 0xcc, 0x0e, 0x92, 0x4e, 0x65, 0x80, 0x74, 0xe6, 0x38, 0xe9,
+ 0x8c, 0xf6, 0x14, 0x38, 0x0b, 0x66, 0x9a, 0x4e, 0xbb, 0x8d, 0x9a, 0x98, 0x1f, 0x95, 0x16, 0x89,
+ 0xba, 0x32, 0xa5, 0x0b, 0x69, 0x24, 0x34, 0x1d, 0xf2, 0xea, 0x74, 0xfd, 0x9a, 0x0a, 0x7d, 0x98,
+ 0x00, 0x5f, 0x99, 0x05, 0x39, 0xad, 0xb5, 0x85, 0x84, 0x35, 0xee, 0x0c, 0xb7, 0xc6, 0x7d, 0x12,
+ 0x14, 0x3c, 0xd3, 0xdd, 0x42, 0x9e, 0x3f, 0xe7, 0xa7, 0x6f, 0x41, 0xc4, 0x3c, 0x85, 0x8b, 0x98,
+ 0xf7, 0x54, 0x90, 0xc3, 0x3c, 0x63, 0xb1, 0x68, 0xae, 0xef, 0x07, 0x3f, 0xe1, 0xfd, 0x3c, 0xae,
+ 0x71, 0x1e, 0xb7, 0x5a, 0x27, 0x3f, 0xf4, 0x62, 0x9d, 0xdf, 0x87, 0x35, 0xb9, 0x4c, 0xa5, 0xe9,
+ 0xd8, 0x95, 0x1d, 0x73, 0x0b, 0xb1, 0x66, 0x86, 0x09, 0xfe, 0x57, 0x6d, 0xc7, 0x79, 0xc0, 0x62,
+ 0xc1, 0xeb, 0xc2, 0x04, 0xdc, 0x84, 0x6d, 0xab, 0xd5, 0x42, 0x36, 0xd3, 0x6c, 0xf6, 0x76, 0xf6,
+ 0x34, 0xc8, 0x61, 0x1a, 0xb0, 0xfc, 0xe0, 0x81, 0xbf, 0x78, 0x44, 0x9d, 0xc1, 0x6a, 0x45, 0x95,
+ 0xb7, 0x98, 0x11, 0xd7, 0x3a, 0x65, 0x5c, 0x5f, 0x68, 0xe3, 0xfa, 0x2b, 0xd7, 0xe3, 0x41, 0xde,
+ 0x76, 0x5a, 0x68, 0xe0, 0x50, 0x43, 0x73, 0xa9, 0x4f, 0x02, 0x79, 0xd4, 0xc2, 0xbd, 0x82, 0x42,
+ 0xb2, 0x9f, 0x8e, 0xe7, 0xa5, 0x4e, 0x33, 0x27, 0xf3, 0xaf, 0xe9, 0x47, 0x6d, 0xfa, 0x0a, 0xf8,
+ 0x2b, 0x13, 0xe0, 0x28, 0xed, 0x03, 0xea, 0xbb, 0x17, 0x70, 0x51, 0x17, 0x10, 0x7c, 0x9f, 0x22,
+ 0x84, 0xe8, 0xec, 0xee, 0x5e, 0x08, 0xcc, 0x46, 0xfa, 0xc2, 0x2b, 0x68, 0x76, 0x24, 0x83, 0x96,
+ 0x32, 0xec, 0xa0, 0x25, 0x0c, 0x40, 0x8a, 0xaf, 0xe2, 0xe1, 0x70, 0x55, 0x20, 0xc9, 0xfe, 0x70,
+ 0xd5, 0x6f, 0xb0, 0x39, 0x05, 0x26, 0xcc, 0x4d, 0x0f, 0xb9, 0x95, 0x16, 0x91, 0xc7, 0x29, 0xdd,
+ 0x7f, 0xc5, 0x03, 0xe2, 0x05, 0xb4, 0xe9, 0xb8, 0x58, 0xd3, 0xa7, 0xe8, 0x80, 0xe8, 0xbf, 0x73,
+ 0xfa, 0x09, 0x84, 0x3d, 0xa8, 0x9b, 0xc0, 0x51, 0x6b, 0xcb, 0x76, 0x5c, 0x14, 0x38, 0x36, 0x9e,
+ 0x9a, 0xa1, 0x27, 0xf1, 0x7b, 0x92, 0xd5, 0x5b, 0xc0, 0x31, 0xdb, 0x59, 0x44, 0x1d, 0xc6, 0x77,
+ 0x8a, 0xea, 0x2c, 0xd1, 0x88, 0xfd, 0x1f, 0xf6, 0x75, 0x2d, 0x73, 0xfb, 0xbb, 0x16, 0xf8, 0x99,
+ 0xa4, 0xf3, 0xe1, 0x1e, 0xe0, 0x47, 0x66, 0x97, 0xa9, 0x4f, 0x07, 0x33, 0x2d, 0xe6, 0xf6, 0xd4,
+ 0xb4, 0x02, 0xad, 0x89, 0xfc, 0x4f, 0xc8, 0x1c, 0x8a, 0x5c, 0x8e, 0x17, 0xb9, 0x65, 0x30, 0x49,
+ 0x0e, 0xb9, 0x60, 0x99, 0xcb, 0xf7, 0x44, 0xfa, 0x23, 0x53, 0xb6, 0xa0, 0x51, 0x1c, 0xdb, 0xe6,
+ 0xcb, 0xec, 0x17, 0x3d, 0xf8, 0x39, 0xd9, 0xcc, 0x3a, 0x9e, 0x43, 0xe9, 0xab, 0xe7, 0xe7, 0x72,
+ 0xe0, 0xe8, 0xb2, 0xeb, 0xec, 0x76, 0xba, 0xa1, 0x7a, 0xfe, 0x4d, 0xff, 0xcd, 0x88, 0x82, 0x38,
+ 0x16, 0xf5, 0x57, 0xdc, 0x33, 0x60, 0xda, 0x65, 0x3d, 0x6a, 0xb8, 0x35, 0xc1, 0x27, 0xf1, 0xaa,
+ 0xad, 0x1c, 0x44, 0xb5, 0x43, 0x05, 0xc9, 0x09, 0x0a, 0xd2, 0x2b, 0xc8, 0xf9, 0x3e, 0x82, 0xfc,
+ 0xd7, 0xd9, 0x84, 0x82, 0xdc, 0xc3, 0xa2, 0x08, 0x41, 0x2e, 0x83, 0xc2, 0x16, 0xc9, 0xc8, 0xe4,
+ 0xf8, 0x71, 0x72, 0x2d, 0x23, 0x85, 0xeb, 0xec, 0xd7, 0x90, 0xaf, 0x0a, 0xc7, 0xd7, 0x64, 0x42,
+ 0x15, 0x4f, 0x6d, 0xfa, 0x42, 0xf5, 0xee, 0x1c, 0x98, 0x09, 0x6a, 0x27, 0xe7, 0x46, 0x32, 0x83,
+ 0x3a, 0xfc, 0x7d, 0xab, 0x33, 0x41, 0x57, 0xaa, 0x70, 0x5d, 0x69, 0x9f, 0xce, 0x6f, 0x3a, 0x41,
+ 0xe7, 0x37, 0x13, 0xd1, 0xf9, 0xc1, 0x9f, 0x56, 0x64, 0x23, 0x42, 0x8b, 0x7d, 0x00, 0x69, 0xdd,
+ 0x23, 0xb9, 0x57, 0x93, 0x8c, 0x4b, 0x3d, 0xb8, 0x55, 0xe9, 0x0b, 0xcd, 0x87, 0xb3, 0xe0, 0x18,
+ 0xed, 0x0d, 0x37, 0xec, 0x6e, 0xd0, 0x17, 0x3d, 0x46, 0xf4, 0xca, 0xc0, 0x6d, 0xea, 0x06, 0x5e,
+ 0x19, 0xe4, 0x4d, 0x5c, 0x04, 0x8f, 0x3d, 0xf2, 0x25, 0xf4, 0xb9, 0x5c, 0x2d, 0x11, 0x2b, 0x4a,
+ 0x72, 0x87, 0xba, 0x24, 0x0b, 0x4d, 0x9f, 0x81, 0xbf, 0xa4, 0x80, 0xa9, 0x3a, 0xf2, 0x56, 0xcd,
+ 0x2b, 0xce, 0xae, 0x07, 0x4d, 0xd9, 0xe5, 0xef, 0xa7, 0x81, 0x42, 0x9b, 0xfc, 0xc2, 0xae, 0x37,
+ 0x3b, 0xd3, 0x77, 0xfd, 0x98, 0xec, 0x93, 0xd3, 0xa2, 0x75, 0x96, 0x5f, 0x3c, 0x6b, 0x27, 0xb3,
+ 0xfb, 0x10, 0x50, 0x37, 0x92, 0xa5, 0xd3, 0x44, 0x7b, 0x13, 0x51, 0x55, 0xa7, 0x0f, 0xcb, 0x0b,
+ 0x14, 0x30, 0x5b, 0x47, 0x5e, 0xa5, 0xbb, 0x64, 0xee, 0x39, 0xae, 0xe5, 0x21, 0xfe, 0xa6, 0x8d,
+ 0x78, 0x68, 0x4e, 0x03, 0x60, 0x05, 0xbf, 0xb1, 0x50, 0xeb, 0x5c, 0x0a, 0xfc, 0x8d, 0xa4, 0x1b,
+ 0xee, 0x02, 0x1d, 0x23, 0x01, 0x21, 0xd1, 0x1e, 0x66, 0x5c, 0xf5, 0xe9, 0x03, 0xf1, 0x70, 0x96,
+ 0x01, 0x51, 0x72, 0x9b, 0xdb, 0xd6, 0x1e, 0x6a, 0x25, 0x04, 0xc2, 0xff, 0x2d, 0x04, 0x22, 0x28,
+ 0x28, 0xf1, 0xf6, 0xb0, 0x40, 0xc7, 0x28, 0xb6, 0x87, 0xe3, 0x0a, 0x1c, 0xcb, 0x21, 0x5e, 0xdc,
+ 0xf5, 0xb0, 0x35, 0x86, 0x7b, 0x64, 0xd9, 0x1a, 0x9a, 0x70, 0x59, 0xde, 0x84, 0x1b, 0xaa, 0x63,
+ 0xa1, 0x75, 0x0f, 0x92, 0xe9, 0x5c, 0x1a, 0x1d, 0x4b, 0xdf, 0xaa, 0xd3, 0x67, 0xfa, 0xfb, 0x15,
+ 0x70, 0x22, 0x30, 0x78, 0xea, 0xc8, 0x5b, 0x34, 0xbb, 0xdb, 0x17, 0x1c, 0xd3, 0x6d, 0xf1, 0xd7,
+ 0xde, 0x0d, 0x7d, 0x92, 0x05, 0xfe, 0x25, 0x0f, 0x42, 0x55, 0x04, 0xa1, 0xaf, 0x5b, 0x55, 0x5f,
+ 0x5a, 0x46, 0xd1, 0xc9, 0xc4, 0x7a, 0x7e, 0xfd, 0x56, 0x00, 0xd6, 0xb3, 0x04, 0xb0, 0xee, 0x1e,
+ 0x96, 0xc4, 0xf4, 0x81, 0xfb, 0x65, 0x3a, 0x22, 0x70, 0x1e, 0x80, 0xf7, 0xcb, 0x02, 0x16, 0xe1,
+ 0x01, 0xa6, 0x44, 0x1f, 0xd6, 0x18, 0x66, 0x8c, 0x18, 0xe8, 0xbd, 0x97, 0xee, 0x18, 0x71, 0x88,
+ 0x9e, 0x79, 0xef, 0x56, 0x40, 0x91, 0x1c, 0x6f, 0xe6, 0xbc, 0x23, 0xe1, 0x03, 0xb2, 0xe8, 0xec,
+ 0xf3, 0xc4, 0x9c, 0x48, 0xea, 0x89, 0x09, 0xdf, 0x95, 0xd4, 0xdf, 0xb2, 0x97, 0xda, 0x91, 0x20,
+ 0x96, 0xc8, 0x9d, 0x72, 0x00, 0x05, 0xe9, 0x83, 0xf6, 0x9f, 0x15, 0x00, 0xb0, 0x42, 0x33, 0x17,
+ 0xbf, 0x67, 0xcb, 0xc2, 0x75, 0x2b, 0xef, 0x83, 0x8a, 0x81, 0x3a, 0xd1, 0x03, 0x14, 0x2d, 0x31,
+ 0x74, 0x1e, 0x7c, 0x73, 0x52, 0xdf, 0xa5, 0x90, 0xaa, 0x91, 0xc0, 0x92, 0xc8, 0x9b, 0x29, 0xb2,
+ 0xee, 0xf4, 0x01, 0xf9, 0xed, 0x2c, 0xc8, 0x1b, 0x4e, 0x1d, 0x79, 0x07, 0x37, 0x05, 0x12, 0x1f,
+ 0x47, 0x25, 0xf5, 0x8e, 0xe2, 0x38, 0x6a, 0xbf, 0x82, 0xd2, 0x67, 0xdd, 0xfb, 0xb2, 0x60, 0xc6,
+ 0x70, 0xca, 0xc1, 0x62, 0x95, 0xbc, 0x2f, 0x98, 0xfc, 0xad, 0x56, 0x41, 0x03, 0xc3, 0x6a, 0x0e,
+ 0x74, 0xab, 0xd5, 0xe0, 0xf2, 0xd2, 0xe7, 0xdb, 0x1d, 0xe0, 0xe8, 0x86, 0xdd, 0x72, 0x74, 0xd4,
+ 0x72, 0xd8, 0x92, 0xac, 0xaa, 0x82, 0xdc, 0xae, 0xdd, 0x72, 0x08, 0xc9, 0x79, 0x9d, 0x3c, 0xe3,
+ 0x34, 0x17, 0xb5, 0x1c, 0xb6, 0x5f, 0x47, 0x9e, 0xe1, 0xd7, 0x15, 0x90, 0xc3, 0xff, 0xca, 0xb3,
+ 0xfa, 0xdd, 0x4a, 0xc2, 0x03, 0xb6, 0xb8, 0xf8, 0x91, 0x58, 0x42, 0xf7, 0x70, 0x8b, 0xd4, 0xd4,
+ 0x43, 0xec, 0xfa, 0xa8, 0xfa, 0x38, 0x56, 0x84, 0x8b, 0xd3, 0xea, 0x29, 0x30, 0x71, 0xa1, 0xed,
+ 0x34, 0x2f, 0x86, 0xe7, 0x40, 0xd9, 0xab, 0x7a, 0x33, 0xc8, 0xbb, 0xa6, 0xbd, 0x85, 0xd8, 0xe2,
+ 0xf7, 0xf1, 0x9e, 0xbe, 0x90, 0xec, 0x44, 0xeb, 0x34, 0x0b, 0x7c, 0x57, 0x92, 0xa3, 0xbd, 0x7d,
+ 0x1a, 0x9f, 0x4c, 0x1e, 0x16, 0x87, 0x38, 0x85, 0x51, 0x04, 0x33, 0xe5, 0x12, 0xbd, 0x3f, 0x6e,
+ 0xad, 0x76, 0x4e, 0x2b, 0x2a, 0x04, 0x66, 0xcc, 0x93, 0x14, 0x61, 0xc6, 0xc5, 0xff, 0xbb, 0x85,
+ 0xb9, 0x4f, 0xe3, 0x0f, 0x03, 0xe6, 0x4f, 0x66, 0xc1, 0xec, 0xaa, 0xd5, 0xf5, 0xa2, 0xbc, 0x69,
+ 0x63, 0xa2, 0x1b, 0xbd, 0x24, 0xa9, 0xa9, 0x2c, 0xd4, 0x23, 0x1d, 0xd6, 0x28, 0x91, 0x39, 0x1c,
+ 0x57, 0xc5, 0x78, 0xdc, 0xbe, 0x09, 0x05, 0xf4, 0xce, 0x27, 0x69, 0x4e, 0x26, 0x36, 0x94, 0xc2,
+ 0x4a, 0xc6, 0x6f, 0x28, 0x45, 0xd6, 0x9d, 0x3e, 0x7f, 0xbf, 0x9e, 0x05, 0xc7, 0x70, 0xf5, 0x71,
+ 0xcb, 0x52, 0xd1, 0x6c, 0x1e, 0xb8, 0x2c, 0x95, 0x78, 0x65, 0x7c, 0x1f, 0x2d, 0xa3, 0x58, 0x19,
+ 0x1f, 0x54, 0xe8, 0x98, 0xd9, 0x1c, 0xb1, 0x0c, 0x3b, 0x88, 0xcd, 0x31, 0xcb, 0xb0, 0xc3, 0xb3,
+ 0x39, 0x7e, 0x29, 0x76, 0x48, 0x36, 0x1f, 0xda, 0x02, 0xeb, 0x9b, 0x94, 0x80, 0xcd, 0x91, 0x6b,
+ 0x1b, 0x31, 0x6c, 0x4e, 0x7c, 0xba, 0x0d, 0xbe, 0x67, 0x48, 0xc6, 0x8f, 0x78, 0x7d, 0x63, 0x18,
+ 0x98, 0x0e, 0x71, 0x8d, 0xe3, 0x55, 0x0a, 0x98, 0x63, 0x54, 0xf4, 0x9f, 0x32, 0xc7, 0x60, 0x94,
+ 0x78, 0xca, 0x9c, 0xd8, 0xc7, 0x5e, 0xa4, 0x6c, 0xfc, 0x3e, 0xf6, 0xb1, 0xf5, 0xa7, 0x0f, 0xce,
+ 0x37, 0x72, 0xe0, 0x24, 0x26, 0x61, 0xcd, 0x69, 0x59, 0x9b, 0x57, 0x28, 0x15, 0xe7, 0xcc, 0xf6,
+ 0x2e, 0xea, 0xc2, 0x0f, 0x66, 0x65, 0x51, 0xfa, 0x3f, 0x00, 0x70, 0x3a, 0xc8, 0xa5, 0x01, 0x82,
+ 0x18, 0x50, 0x77, 0x45, 0x35, 0x76, 0x7f, 0x4d, 0x41, 0x48, 0xdf, 0x9a, 0x5f, 0x88, 0xce, 0x95,
+ 0x87, 0xad, 0xc2, 0xa9, 0xe0, 0x4b, 0xaf, 0xc3, 0x47, 0x66, 0xbf, 0xc3, 0xc7, 0x4d, 0x40, 0x31,
+ 0x5b, 0xad, 0x00, 0xaa, 0xde, 0xcd, 0x6c, 0x52, 0xa7, 0x8e, 0xb3, 0xe0, 0x9c, 0x5d, 0x14, 0x1e,
+ 0x7d, 0x89, 0xc8, 0xd9, 0x45, 0x9e, 0x3a, 0x0f, 0x0a, 0xf4, 0xfe, 0xab, 0x60, 0x45, 0xbf, 0x7f,
+ 0x66, 0x96, 0x4b, 0x34, 0xed, 0x6a, 0xa2, 0x18, 0xde, 0x91, 0x88, 0x33, 0xfd, 0xfa, 0xe9, 0xd0,
+ 0x4e, 0xd6, 0x05, 0x01, 0x7b, 0xc6, 0xd0, 0x25, 0x8f, 0x67, 0x37, 0xac, 0xd4, 0xe9, 0xb4, 0xaf,
+ 0x18, 0x2c, 0x18, 0x41, 0xa2, 0xdd, 0x30, 0x2e, 0xa6, 0x41, 0xb6, 0x37, 0xa6, 0x41, 0xf2, 0xdd,
+ 0x30, 0x81, 0x8e, 0x51, 0xec, 0x86, 0xc5, 0x15, 0x38, 0x86, 0xf5, 0xc8, 0x3c, 0xb5, 0x9a, 0x59,
+ 0xec, 0xc5, 0xb7, 0x66, 0xfb, 0xba, 0x53, 0x01, 0xd1, 0x9d, 0xaa, 0x5f, 0x58, 0xc6, 0xd8, 0x98,
+ 0xb3, 0xea, 0x93, 0x40, 0x61, 0xd3, 0x71, 0x77, 0x4c, 0x7f, 0xe3, 0xbe, 0xd7, 0x7b, 0x9b, 0xc5,
+ 0x3b, 0x5c, 0x22, 0x79, 0x74, 0x96, 0x17, 0xcf, 0x47, 0x9e, 0x63, 0x75, 0x58, 0x34, 0x31, 0xfc,
+ 0xa8, 0xde, 0x00, 0x66, 0x59, 0x50, 0xb1, 0x2a, 0xea, 0x7a, 0xa8, 0xc5, 0x4e, 0x77, 0x8b, 0x89,
+ 0xea, 0x59, 0x30, 0xc3, 0x12, 0x96, 0xac, 0x36, 0xea, 0xb2, 0x0b, 0x1f, 0x85, 0x34, 0xf5, 0x24,
+ 0x28, 0x58, 0xdd, 0x67, 0x76, 0x1d, 0x9b, 0xf8, 0xe4, 0x4e, 0xea, 0xec, 0x8d, 0xb8, 0xed, 0xd0,
+ 0x7c, 0x81, 0xb1, 0x4a, 0x9d, 0xe8, 0x7b, 0x93, 0xe1, 0xe7, 0x87, 0x99, 0x38, 0x24, 0x8e, 0x33,
+ 0x89, 0x51, 0xd8, 0x6d, 0x36, 0x11, 0x6a, 0xb1, 0xd3, 0x06, 0xfe, 0x6b, 0xc2, 0x08, 0x94, 0x89,
+ 0xa7, 0x19, 0x87, 0x14, 0x82, 0xf2, 0x23, 0x27, 0x40, 0x81, 0x06, 0x6d, 0x87, 0x2f, 0x9f, 0xeb,
+ 0x2b, 0x8c, 0x73, 0xa2, 0x30, 0x6e, 0x80, 0x19, 0xdb, 0xc1, 0xd5, 0xad, 0x9b, 0xae, 0xb9, 0xd3,
+ 0x8d, 0x5b, 0x45, 0xa4, 0xe5, 0x06, 0x43, 0x46, 0x95, 0xfb, 0x6d, 0xe5, 0x88, 0x2e, 0x14, 0xa3,
+ 0xfe, 0x9f, 0xe0, 0xe8, 0x05, 0x76, 0xc2, 0xb6, 0xcb, 0x4a, 0xce, 0x46, 0xfb, 0xdc, 0xf5, 0x94,
+ 0xbc, 0x20, 0xfe, 0xb9, 0x72, 0x44, 0xef, 0x2d, 0x4c, 0xfd, 0x71, 0x30, 0x87, 0x5f, 0x5b, 0xce,
+ 0x25, 0x9f, 0x70, 0x25, 0xda, 0xd0, 0xe8, 0x29, 0x7e, 0x4d, 0xf8, 0x71, 0xe5, 0x88, 0xde, 0x53,
+ 0x94, 0x5a, 0x03, 0x60, 0xdb, 0xdb, 0x69, 0xb3, 0x82, 0x73, 0xd1, 0x22, 0xd9, 0x53, 0xf0, 0x4a,
+ 0xf0, 0xd3, 0xca, 0x11, 0x9d, 0x2b, 0x42, 0x5d, 0x05, 0x53, 0xde, 0x65, 0x8f, 0x95, 0x97, 0x8f,
+ 0xde, 0xdc, 0xee, 0x29, 0xcf, 0xf0, 0xff, 0x59, 0x39, 0xa2, 0x87, 0x05, 0xa8, 0x15, 0x30, 0xd9,
+ 0xb9, 0xc0, 0x0a, 0x2b, 0xf4, 0xb9, 0xa8, 0xba, 0x7f, 0x61, 0xeb, 0x17, 0x82, 0xb2, 0x82, 0xdf,
+ 0x31, 0x61, 0xcd, 0xee, 0x1e, 0x2b, 0x6b, 0x42, 0x9a, 0xb0, 0xb2, 0xff, 0x0f, 0x26, 0x2c, 0x28,
+ 0x40, 0xad, 0x80, 0xa9, 0xae, 0x6d, 0x76, 0xba, 0xdb, 0x8e, 0xd7, 0x3d, 0x35, 0xd9, 0xe3, 0x17,
+ 0x19, 0x5d, 0x5a, 0x9d, 0xfd, 0xa3, 0x87, 0x7f, 0xab, 0x4f, 0x02, 0x27, 0x76, 0xc9, 0xe5, 0x77,
+ 0xda, 0x65, 0xab, 0xeb, 0x59, 0xf6, 0x96, 0x1f, 0x1b, 0x91, 0xf6, 0x26, 0xfd, 0x3f, 0xaa, 0xf3,
+ 0xec, 0x94, 0x02, 0x20, 0xba, 0x09, 0x7b, 0x37, 0xe3, 0x68, 0xb5, 0xdc, 0xe1, 0x84, 0xa7, 0x83,
+ 0x1c, 0xfe, 0x44, 0x3c, 0x0b, 0xe7, 0xfa, 0x2f, 0xf4, 0xf5, 0xca, 0x0e, 0x51, 0x60, 0xfc, 0x13,
+ 0x1e, 0x1b, 0x6d, 0x67, 0xdd, 0x75, 0xb6, 0x5c, 0xd4, 0xed, 0x32, 0x87, 0x43, 0x2e, 0x05, 0x2b,
+ 0xb8, 0xd5, 0x5d, 0xb3, 0xb6, 0xa8, 0xf5, 0xc4, 0xdc, 0xb1, 0xf9, 0x24, 0x3a, 0xdb, 0xac, 0xa2,
+ 0x4b, 0xe4, 0x42, 0xb5, 0x53, 0x47, 0xfd, 0xd9, 0xa6, 0x9f, 0x02, 0x6f, 0x04, 0x33, 0xbc, 0x92,
+ 0xd1, 0x9b, 0x5f, 0xac, 0xd0, 0xf6, 0x62, 0x6f, 0xf0, 0x06, 0x30, 0x27, 0xca, 0x34, 0x37, 0xc4,
+ 0x28, 0x7e, 0x57, 0x08, 0xaf, 0x07, 0x47, 0x7b, 0x14, 0xcb, 0x3f, 0xb3, 0x9f, 0x09, 0xcf, 0xec,
+ 0x9f, 0x01, 0x20, 0x94, 0xe2, 0xbe, 0xc5, 0x5c, 0x07, 0xa6, 0x02, 0xb9, 0xec, 0x9b, 0xe1, 0xab,
+ 0x19, 0x30, 0xe9, 0x0b, 0x5b, 0xbf, 0x0c, 0x78, 0x7c, 0xb1, 0xb9, 0x0d, 0x04, 0x36, 0xcd, 0x16,
+ 0xd2, 0xf0, 0x38, 0x12, 0xba, 0xf1, 0x1a, 0x96, 0xd7, 0xf6, 0x8f, 0xa3, 0xf4, 0x26, 0xab, 0xeb,
+ 0x00, 0x58, 0x04, 0x23, 0x23, 0x3c, 0x9f, 0xf2, 0x84, 0x04, 0xfa, 0x40, 0xe5, 0x81, 0x2b, 0xe3,
+ 0xec, 0x63, 0xd8, 0xe1, 0x91, 0x29, 0x90, 0xaf, 0xaf, 0x97, 0xca, 0x5a, 0xf1, 0x88, 0x3a, 0x07,
+ 0x80, 0xf6, 0xec, 0x75, 0x4d, 0xaf, 0x68, 0xd5, 0xb2, 0x56, 0xcc, 0xc0, 0x57, 0x67, 0xc1, 0x54,
+ 0xa0, 0x04, 0x7d, 0x1b, 0xa9, 0x31, 0xd1, 0x1a, 0x78, 0xb9, 0xc6, 0x7e, 0xa5, 0xe2, 0x85, 0xec,
+ 0x69, 0xe0, 0xea, 0xdd, 0x2e, 0x5a, 0xb2, 0xdc, 0xae, 0xa7, 0x3b, 0x97, 0x96, 0x1c, 0x37, 0x88,
+ 0x06, 0xea, 0x5f, 0x22, 0x1d, 0xf1, 0x19, 0x5b, 0x14, 0x2d, 0x44, 0x8e, 0x30, 0x20, 0x97, 0xad,
+ 0x0c, 0x87, 0x09, 0xb8, 0x5c, 0x8f, 0xde, 0xda, 0xdc, 0x45, 0xba, 0x73, 0xa9, 0x5b, 0xb2, 0x5b,
+ 0x65, 0xa7, 0xbd, 0xbb, 0x63, 0x77, 0x99, 0x4d, 0x10, 0xf5, 0x19, 0x73, 0x87, 0x5c, 0x9d, 0x33,
+ 0x07, 0x40, 0xb9, 0xb6, 0xba, 0xaa, 0x95, 0x8d, 0x4a, 0xad, 0x5a, 0x3c, 0x82, 0xb9, 0x65, 0x94,
+ 0x16, 0x56, 0x31, 0x77, 0x7e, 0x02, 0x4c, 0xfa, 0x3a, 0xbd, 0xef, 0xc6, 0xec, 0x12, 0x98, 0xf4,
+ 0xb5, 0x9c, 0x8d, 0x08, 0x8f, 0xed, 0x3d, 0x8a, 0xb6, 0x63, 0xba, 0x1e, 0xf1, 0x9f, 0xf6, 0x0b,
+ 0x59, 0x30, 0xbb, 0x48, 0x0f, 0x7e, 0x3b, 0xfb, 0x78, 0x46, 0x81, 0x0a, 0xe6, 0x4a, 0xab, 0xab,
+ 0x8d, 0x9a, 0xde, 0xa8, 0xd6, 0x8c, 0x95, 0x4a, 0x75, 0x99, 0x8e, 0x90, 0x95, 0xe5, 0x6a, 0x4d,
+ 0xd7, 0xe8, 0x00, 0x59, 0x2f, 0x66, 0xe8, 0xd5, 0x4d, 0x0b, 0x93, 0xa0, 0xd0, 0x21, 0xdc, 0x85,
+ 0x5f, 0x52, 0x12, 0x9e, 0x34, 0x0d, 0x70, 0x8a, 0xb8, 0x5c, 0x46, 0xf0, 0x41, 0xcf, 0xf6, 0x39,
+ 0xa7, 0x75, 0x16, 0xcc, 0x50, 0x5b, 0xae, 0x4b, 0x96, 0xef, 0xd9, 0xfd, 0x8c, 0x42, 0x1a, 0xfc,
+ 0x58, 0x36, 0xc1, 0xf1, 0xd3, 0xbe, 0x14, 0x25, 0x33, 0x2e, 0xfe, 0x7c, 0x98, 0xab, 0x9a, 0x54,
+ 0x30, 0x57, 0xa9, 0x1a, 0x9a, 0x5e, 0x2d, 0xad, 0xb2, 0x2c, 0x8a, 0x7a, 0x0a, 0x1c, 0xaf, 0xd6,
+ 0x58, 0xfc, 0xab, 0x3a, 0xb9, 0x14, 0x76, 0x6d, 0xbd, 0xa6, 0x1b, 0xc5, 0xbc, 0x7a, 0x12, 0xa8,
+ 0xf4, 0x59, 0xb8, 0x53, 0xb9, 0xa0, 0xfe, 0x08, 0xb8, 0x7e, 0xb5, 0xb2, 0x56, 0x31, 0x1a, 0xb5,
+ 0xa5, 0x86, 0x5e, 0x3b, 0x5f, 0xc7, 0x08, 0xea, 0xda, 0x6a, 0x09, 0x0b, 0x12, 0x77, 0x85, 0xd3,
+ 0x84, 0x7a, 0x15, 0x38, 0x4a, 0xae, 0x67, 0x23, 0xf7, 0x32, 0xd3, 0xfa, 0x26, 0xd5, 0x6b, 0xc1,
+ 0xa9, 0x4a, 0xb5, 0xbe, 0xb1, 0xb4, 0x54, 0x29, 0x57, 0xb4, 0xaa, 0xd1, 0x58, 0xd7, 0xf4, 0xb5,
+ 0x4a, 0xbd, 0x8e, 0xff, 0x2d, 0x4e, 0xc1, 0x8f, 0x28, 0xa0, 0x40, 0xfb, 0x4c, 0xf8, 0x01, 0x05,
+ 0xcc, 0x9e, 0x33, 0xdb, 0x16, 0x1e, 0x28, 0xc8, 0xcd, 0x59, 0xf0, 0x3a, 0xc1, 0x35, 0xdd, 0x23,
+ 0x37, 0x6c, 0x31, 0xd7, 0x74, 0xf2, 0x02, 0x9f, 0xc7, 0x8b, 0x86, 0x21, 0x8a, 0xc6, 0x33, 0x62,
+ 0x80, 0xa0, 0x35, 0xce, 0x0b, 0xb5, 0x45, 0x4c, 0x6e, 0x5e, 0x1f, 0xe0, 0x7c, 0x5e, 0xc0, 0xb9,
+ 0x7c, 0xb0, 0xe2, 0x93, 0x81, 0xff, 0x2b, 0xa3, 0x02, 0xbf, 0x08, 0x66, 0x36, 0xaa, 0xa5, 0x0d,
+ 0x63, 0xa5, 0xa6, 0x57, 0x7e, 0x8c, 0x44, 0xd1, 0x9d, 0x05, 0x53, 0x4b, 0x35, 0x7d, 0xa1, 0xb2,
+ 0xb8, 0xa8, 0x55, 0x8b, 0x79, 0xf5, 0x6a, 0x70, 0x55, 0x5d, 0xd3, 0xcf, 0x55, 0xca, 0x5a, 0x63,
+ 0xa3, 0x5a, 0x3a, 0x57, 0xaa, 0xac, 0x92, 0x3e, 0xa2, 0x10, 0x73, 0xeb, 0xd7, 0x04, 0xfc, 0xa9,
+ 0x1c, 0x00, 0xb4, 0xe9, 0xd8, 0x92, 0xe6, 0xef, 0x86, 0xfa, 0x8b, 0xa4, 0x93, 0x86, 0xb0, 0x98,
+ 0x08, 0xfd, 0xad, 0x80, 0x49, 0x97, 0x7d, 0x60, 0xcb, 0x27, 0x83, 0xca, 0xa1, 0x8f, 0x7e, 0x69,
+ 0x7a, 0xf0, 0x3b, 0xfc, 0x60, 0x92, 0x39, 0x42, 0x24, 0x61, 0xc9, 0x90, 0x5c, 0x1a, 0x0d, 0x90,
+ 0xf0, 0xc5, 0x19, 0x30, 0x27, 0x36, 0x0c, 0x37, 0x82, 0x18, 0x53, 0x72, 0x8d, 0x10, 0x7f, 0xe6,
+ 0x8c, 0xac, 0xb3, 0xb7, 0xb3, 0xe1, 0x14, 0xf8, 0x9a, 0x49, 0x4f, 0x63, 0xfa, 0x16, 0x4b, 0x31,
+ 0x83, 0x89, 0xc7, 0x46, 0x07, 0xbd, 0x18, 0xd8, 0xb8, 0xec, 0x15, 0x15, 0xf8, 0xf9, 0x1c, 0x98,
+ 0x15, 0x2e, 0x9f, 0x82, 0x2f, 0xcb, 0xca, 0x5c, 0x19, 0xc3, 0x5d, 0x6b, 0x95, 0x49, 0xf7, 0x5a,
+ 0xab, 0xb3, 0x3f, 0x93, 0x01, 0x13, 0xec, 0x17, 0xc2, 0xfe, 0x5a, 0x15, 0x5b, 0x0a, 0x47, 0xc1,
+ 0xf4, 0xb2, 0x66, 0x34, 0xea, 0x46, 0x49, 0x37, 0xb4, 0xc5, 0x62, 0x46, 0x3d, 0x01, 0x8e, 0xad,
+ 0x6b, 0x7a, 0xbd, 0x86, 0xb9, 0xbd, 0xae, 0xd7, 0x48, 0x37, 0x49, 0x41, 0xc0, 0x20, 0xad, 0x6a,
+ 0x8b, 0xcb, 0x5a, 0x63, 0xa1, 0x54, 0xd7, 0x8a, 0x0a, 0xfe, 0xb7, 0x5a, 0x33, 0xb4, 0x7a, 0x63,
+ 0xb1, 0x52, 0xd2, 0xef, 0x2f, 0xe6, 0xf0, 0xbf, 0x75, 0x43, 0x2f, 0x19, 0xda, 0x72, 0xa5, 0x4c,
+ 0x2e, 0x5b, 0xc6, 0xfa, 0x91, 0xc7, 0x43, 0xad, 0xb6, 0xb6, 0x6e, 0xdc, 0x5f, 0x2c, 0x24, 0xf7,
+ 0xf9, 0xeb, 0x6d, 0xfa, 0x98, 0x7d, 0xfe, 0xe2, 0xaa, 0x4f, 0x7f, 0x76, 0xfc, 0x6d, 0x05, 0x14,
+ 0x29, 0x05, 0xda, 0xe5, 0x0e, 0x72, 0x2d, 0x64, 0x37, 0x11, 0x7c, 0x91, 0x54, 0x40, 0xbe, 0x7d,
+ 0xe1, 0xad, 0xc8, 0x10, 0xc2, 0x19, 0xa6, 0xf4, 0xa5, 0xc7, 0xa6, 0xcf, 0xf5, 0xda, 0xf4, 0xa2,
+ 0x4c, 0xe5, 0x7b, 0xaf, 0x4a, 0xfb, 0x74, 0x52, 0x9f, 0xc0, 0xde, 0xd6, 0x8c, 0x04, 0xd1, 0x4f,
+ 0x24, 0xf1, 0x09, 0x1c, 0x40, 0xc1, 0x58, 0xa2, 0x70, 0x46, 0x18, 0x04, 0x45, 0x05, 0xbe, 0x73,
+ 0x0a, 0x14, 0x29, 0xa1, 0x9c, 0xa3, 0xd5, 0x2f, 0xb1, 0x0b, 0xc2, 0x1a, 0x09, 0xe2, 0x46, 0xf9,
+ 0xe7, 0x7a, 0xb3, 0xe2, 0xb9, 0x5e, 0x61, 0xdd, 0x4e, 0xe9, 0xdd, 0x1c, 0x4f, 0xaa, 0x9d, 0x9c,
+ 0x57, 0x55, 0x74, 0xa8, 0xbe, 0xf4, 0xb4, 0x33, 0xb6, 0xfa, 0xf1, 0x5c, 0x62, 0xc3, 0xae, 0xa9,
+ 0xd2, 0x64, 0x91, 0x89, 0xbf, 0xab, 0x2b, 0xa9, 0x8b, 0xad, 0xe0, 0xd5, 0x16, 0x73, 0x81, 0x55,
+ 0x7a, 0x2e, 0xb6, 0x83, 0x28, 0x48, 0x1f, 0x85, 0x1f, 0x64, 0x41, 0xae, 0xee, 0xb8, 0xde, 0xa8,
+ 0x30, 0x48, 0xba, 0x2d, 0xc8, 0x71, 0xa0, 0x1e, 0x3d, 0xed, 0x4a, 0x6f, 0x5b, 0x30, 0xbe, 0xfe,
+ 0x31, 0x84, 0xde, 0x3a, 0x0a, 0xe6, 0x28, 0x25, 0x41, 0x1c, 0xf9, 0xef, 0x67, 0x69, 0x7f, 0x75,
+ 0x9f, 0x2c, 0x22, 0x67, 0xc1, 0x0c, 0xb7, 0x2d, 0x17, 0xdc, 0x78, 0xca, 0xa7, 0xc1, 0x5f, 0xe3,
+ 0x71, 0x59, 0x14, 0x71, 0xe9, 0x37, 0xe9, 0x0c, 0x42, 0xb1, 0x8f, 0xaa, 0x67, 0x4a, 0x12, 0xc5,
+ 0x2b, 0xa6, 0xf2, 0xf4, 0x11, 0x79, 0xbe, 0x02, 0x0a, 0xcc, 0x2d, 0x6a, 0xa4, 0x08, 0x24, 0xd5,
+ 0x8c, 0x80, 0x09, 0x72, 0xee, 0x53, 0xca, 0xa8, 0x35, 0x23, 0xbe, 0xfe, 0xf4, 0x71, 0xf8, 0x57,
+ 0xe6, 0xef, 0x57, 0xda, 0x33, 0xad, 0xb6, 0x79, 0xa1, 0x9d, 0x20, 0x7a, 0xe6, 0xc7, 0x12, 0x9e,
+ 0x70, 0x0a, 0x9a, 0x2a, 0xd4, 0x17, 0xc1, 0xf1, 0x27, 0x83, 0x29, 0x37, 0x58, 0x95, 0xf3, 0x0f,
+ 0x80, 0xf7, 0xf8, 0x5a, 0xb2, 0xef, 0x7a, 0x98, 0x33, 0xd1, 0x71, 0x26, 0x29, 0x7a, 0xc6, 0x72,
+ 0xfc, 0x62, 0xba, 0xd4, 0x6a, 0x2d, 0x21, 0xd3, 0xdb, 0x75, 0x51, 0x2b, 0xd1, 0x10, 0x21, 0xb2,
+ 0x68, 0x8a, 0xe7, 0x84, 0x10, 0xf3, 0x6a, 0x55, 0x44, 0xe7, 0x29, 0x03, 0x7a, 0x03, 0x9f, 0x96,
+ 0x91, 0x74, 0x49, 0xef, 0x08, 0x20, 0xa9, 0x09, 0x90, 0x3c, 0x7d, 0x38, 0x22, 0xd2, 0x07, 0xe4,
+ 0x15, 0x0a, 0x98, 0xa3, 0x76, 0xc2, 0xa8, 0x31, 0xf9, 0xbd, 0x84, 0x6e, 0x14, 0xdc, 0x4d, 0x1d,
+ 0x3c, 0x39, 0x23, 0x81, 0x25, 0x89, 0xd3, 0x85, 0x1c, 0x1d, 0xe9, 0x23, 0xf3, 0xf9, 0x02, 0x00,
+ 0x9c, 0x6b, 0xdc, 0xc7, 0x0a, 0x61, 0xfc, 0x29, 0xf8, 0x2e, 0x36, 0xff, 0xa8, 0x0b, 0x81, 0x4d,
+ 0x39, 0xb7, 0xb7, 0x60, 0x4f, 0x46, 0x4c, 0x94, 0x1a, 0x55, 0xfe, 0x3c, 0xa1, 0xcd, 0xcb, 0x1c,
+ 0xd3, 0x06, 0x0e, 0xee, 0x43, 0xf6, 0x72, 0x0f, 0x25, 0x30, 0x7e, 0x07, 0x91, 0x92, 0x0c, 0xb5,
+ 0xd5, 0x21, 0xe6, 0x92, 0xa7, 0xc0, 0x71, 0x5d, 0x2b, 0x2d, 0xd6, 0xaa, 0xab, 0xf7, 0xf3, 0x57,
+ 0x3a, 0x14, 0x15, 0x7e, 0x72, 0x92, 0x0a, 0x6c, 0x6f, 0x4c, 0xd8, 0x07, 0x8a, 0xbc, 0x8a, 0x9b,
+ 0xad, 0x70, 0xd3, 0xf9, 0xc1, 0xbd, 0x9a, 0x44, 0xb1, 0x87, 0x89, 0xc2, 0xdb, 0xa6, 0x38, 0x35,
+ 0x7a, 0x91, 0x02, 0x8a, 0xe1, 0x0d, 0xc0, 0xec, 0x7e, 0x9e, 0x9a, 0xe8, 0x39, 0xd7, 0xa1, 0x5b,
+ 0x30, 0xa1, 0xe7, 0x9c, 0x9f, 0xa0, 0xde, 0x08, 0xe6, 0x9a, 0xdb, 0xa8, 0x79, 0xb1, 0x62, 0xfb,
+ 0x5b, 0xcb, 0x74, 0x1f, 0xb2, 0x27, 0x55, 0x04, 0xe6, 0x3e, 0x11, 0x18, 0x71, 0x12, 0x2d, 0x0c,
+ 0xd2, 0x3c, 0x51, 0x11, 0xb8, 0xfc, 0x71, 0x80, 0x4b, 0x55, 0xc0, 0xe5, 0xce, 0xa1, 0x4a, 0x4d,
+ 0x06, 0x4b, 0x75, 0x08, 0x58, 0x20, 0x38, 0x59, 0x5b, 0x37, 0x2a, 0xb5, 0x6a, 0x63, 0xa3, 0xae,
+ 0x2d, 0x36, 0x16, 0x7c, 0x70, 0xea, 0x45, 0x05, 0x7e, 0x33, 0x0b, 0x26, 0x28, 0x59, 0xdd, 0x9e,
+ 0x1b, 0x7b, 0xe3, 0x5d, 0x06, 0xe1, 0x3b, 0xa5, 0x03, 0x00, 0x04, 0x8c, 0x60, 0xf5, 0x44, 0xf4,
+ 0x53, 0x4f, 0x03, 0x13, 0x14, 0x64, 0xdf, 0xe3, 0xe4, 0x74, 0x44, 0x2f, 0xc5, 0x8a, 0xd1, 0xfd,
+ 0xec, 0x92, 0xc1, 0x00, 0x06, 0x90, 0x91, 0xfe, 0xc8, 0xf2, 0x16, 0x85, 0x9a, 0xc1, 0xe7, 0x2d,
+ 0x6f, 0x9b, 0x78, 0x14, 0xc2, 0x67, 0xc9, 0x2c, 0x60, 0xde, 0x02, 0xf2, 0x7b, 0x38, 0xf7, 0x00,
+ 0xef, 0x4c, 0x9a, 0x09, 0xfe, 0xa1, 0x74, 0xd8, 0x2c, 0x41, 0x3e, 0x03, 0x9a, 0xa2, 0x77, 0x4b,
+ 0x07, 0xf5, 0x84, 0x2a, 0x14, 0x4e, 0x44, 0x29, 0x37, 0x29, 0x89, 0x03, 0xae, 0x49, 0x91, 0x34,
+ 0x96, 0x99, 0xfc, 0xc4, 0x8a, 0xd5, 0xf5, 0x1c, 0xf7, 0x0a, 0x7c, 0x73, 0x06, 0x4c, 0x9c, 0x43,
+ 0x6e, 0xd7, 0x72, 0xec, 0x7d, 0x5b, 0xe2, 0x67, 0xc0, 0x74, 0xc7, 0x45, 0x7b, 0x96, 0xb3, 0xdb,
+ 0x0d, 0x57, 0x50, 0xf8, 0x24, 0xcc, 0x12, 0x73, 0xd7, 0xdb, 0x76, 0xdc, 0x30, 0x2a, 0x82, 0xff,
+ 0xae, 0x9e, 0x06, 0x80, 0x3e, 0x57, 0xcd, 0x1d, 0xc4, 0x36, 0xfa, 0xb9, 0x14, 0x55, 0x05, 0x39,
+ 0xcf, 0xda, 0x41, 0x2c, 0xa8, 0x21, 0x79, 0xc6, 0x52, 0x42, 0x42, 0x90, 0xb1, 0x50, 0x6f, 0x8a,
+ 0xee, 0xbf, 0xc2, 0x5f, 0x57, 0xc0, 0xf4, 0x32, 0xf2, 0x18, 0xa9, 0x5d, 0x3e, 0xb6, 0x50, 0x4c,
+ 0xe0, 0x6f, 0x3c, 0x0e, 0xb6, 0xcd, 0xae, 0xff, 0x5b, 0xb0, 0x4c, 0x2a, 0x26, 0x86, 0x01, 0x16,
+ 0x15, 0x2e, 0x86, 0x2a, 0x7c, 0x5f, 0x56, 0xf6, 0x34, 0x2b, 0x63, 0xe6, 0x3c, 0x47, 0x60, 0x64,
+ 0x27, 0x30, 0xb9, 0xc7, 0x72, 0xec, 0x0b, 0x78, 0xcb, 0x97, 0xc4, 0x8a, 0xd1, 0x83, 0xdc, 0x92,
+ 0xe7, 0x60, 0x07, 0x53, 0x92, 0xbe, 0x78, 0x7d, 0x57, 0x01, 0xd3, 0xf5, 0x6d, 0xe7, 0x12, 0x23,
+ 0x80, 0xbf, 0x2d, 0x38, 0x0e, 0xaa, 0x6b, 0xc1, 0xd4, 0x5e, 0x0f, 0x4c, 0x61, 0x42, 0xf4, 0xa5,
+ 0xb6, 0xf0, 0x41, 0x25, 0x29, 0x4c, 0x1c, 0x71, 0x23, 0xbf, 0x72, 0x56, 0x7d, 0x0a, 0x98, 0x60,
+ 0x54, 0xb3, 0x85, 0x8e, 0x78, 0x80, 0xfd, 0xcc, 0x7c, 0x03, 0x73, 0x62, 0x03, 0x93, 0x21, 0x1f,
+ 0xdd, 0xb8, 0x31, 0x84, 0x95, 0xcf, 0x92, 0x28, 0x08, 0x3e, 0xf0, 0xe5, 0x11, 0x00, 0x0f, 0xbf,
+ 0x97, 0x91, 0x5d, 0x0e, 0x0c, 0x38, 0x10, 0x50, 0x70, 0xa0, 0x30, 0xfd, 0x03, 0x8b, 0x4b, 0x9f,
+ 0x9f, 0xaf, 0xce, 0x81, 0x99, 0x45, 0x6b, 0x73, 0x33, 0xe8, 0xf5, 0x5e, 0x9a, 0x91, 0x63, 0x69,
+ 0xf4, 0x3e, 0x34, 0xb6, 0x2e, 0x77, 0x5d, 0x17, 0xd9, 0x7e, 0xa3, 0x98, 0x3a, 0xf5, 0xa4, 0xaa,
+ 0x37, 0x81, 0xa3, 0x7e, 0x47, 0xef, 0x67, 0xa4, 0x62, 0xd9, 0x9b, 0x0c, 0xbf, 0x23, 0xbd, 0x97,
+ 0xe4, 0x73, 0x94, 0x6f, 0x52, 0x84, 0x02, 0xde, 0x05, 0x66, 0xb7, 0x69, 0x6e, 0x32, 0xe1, 0xf6,
+ 0x3b, 0xcb, 0x93, 0x3d, 0xe1, 0x50, 0xd7, 0x50, 0xb7, 0x6b, 0x6e, 0x21, 0x5d, 0xcc, 0xdc, 0xa3,
+ 0xbe, 0x4a, 0x92, 0x3b, 0x49, 0xe4, 0xb6, 0xa5, 0x24, 0x5a, 0x92, 0xbe, 0x74, 0x7c, 0xed, 0x31,
+ 0x20, 0xb7, 0x64, 0xb5, 0x11, 0xfc, 0xd9, 0x2c, 0x98, 0xd2, 0x51, 0xd3, 0xb1, 0x9b, 0xf8, 0x8d,
+ 0xf3, 0x4a, 0xf9, 0x87, 0x8c, 0xec, 0x5d, 0x5c, 0xb8, 0x9c, 0xf9, 0xa0, 0x8c, 0x08, 0xbd, 0x91,
+ 0xbb, 0x73, 0x2b, 0xb6, 0xa8, 0x31, 0x44, 0x5b, 0xc7, 0x06, 0xff, 0xe6, 0x66, 0xdb, 0x31, 0x85,
+ 0x25, 0xa7, 0x5e, 0xdb, 0xe6, 0x66, 0x50, 0xf4, 0x0f, 0x17, 0x38, 0xde, 0xba, 0x65, 0xdb, 0xc1,
+ 0xe9, 0xd5, 0x7d, 0xe9, 0xe2, 0x6e, 0x69, 0x6c, 0x00, 0x10, 0xd2, 0x76, 0x56, 0x7b, 0x84, 0x64,
+ 0xdf, 0x08, 0xe6, 0x2e, 0x5c, 0xf1, 0x50, 0x97, 0xe5, 0x62, 0xd5, 0xe6, 0xf4, 0x9e, 0x54, 0xf8,
+ 0x7e, 0xa9, 0x40, 0x21, 0x31, 0x15, 0x26, 0x63, 0xf5, 0xca, 0x10, 0xf3, 0xae, 0xe3, 0xa0, 0x58,
+ 0xad, 0x2d, 0x6a, 0xc4, 0x49, 0xca, 0xf7, 0x2b, 0xd9, 0x82, 0x2f, 0x53, 0xc0, 0x0c, 0x71, 0x29,
+ 0xf0, 0x51, 0xb8, 0x5e, 0x62, 0x16, 0x00, 0xbf, 0x2c, 0xed, 0x40, 0x45, 0x9a, 0xcc, 0x57, 0x10,
+ 0xcd, 0xe8, 0x4d, 0xab, 0xdd, 0xcb, 0xe8, 0xbc, 0xde, 0x93, 0xda, 0x07, 0x10, 0xa5, 0x2f, 0x20,
+ 0xbf, 0x23, 0xe5, 0x45, 0x35, 0x88, 0xba, 0xc3, 0x42, 0xe5, 0x77, 0x15, 0x30, 0x8d, 0x67, 0x1d,
+ 0x3e, 0x28, 0x35, 0x01, 0x14, 0xc7, 0x6e, 0x5f, 0x09, 0x17, 0x23, 0xfc, 0xd7, 0x44, 0x4a, 0xf2,
+ 0x57, 0xd2, 0xf3, 0x65, 0xc2, 0x22, 0x8e, 0x96, 0x31, 0xe1, 0xf7, 0x21, 0xa9, 0x59, 0xf4, 0x00,
+ 0xe2, 0x0e, 0x0b, 0xbe, 0xdf, 0xcc, 0x83, 0xc2, 0x46, 0x87, 0x20, 0xf7, 0xf5, 0xac, 0x4c, 0x68,
+ 0xec, 0x7d, 0x1e, 0xf4, 0xd8, 0xcc, 0x6a, 0x3b, 0x4d, 0xb3, 0xbd, 0x1e, 0x1e, 0x45, 0x0a, 0x13,
+ 0xd4, 0x3b, 0x99, 0x53, 0x1d, 0x3d, 0xc7, 0x75, 0x63, 0x6c, 0xd4, 0x68, 0xc2, 0x23, 0xee, 0xb4,
+ 0xc2, 0x2d, 0xe0, 0x58, 0xcb, 0xea, 0x9a, 0x17, 0xda, 0x48, 0xb3, 0x9b, 0xee, 0x15, 0xca, 0x0e,
+ 0xea, 0x61, 0xb4, 0xff, 0x83, 0x7a, 0x37, 0xc8, 0x77, 0xbd, 0x2b, 0x6d, 0x3a, 0xf1, 0xe3, 0x0f,
+ 0x37, 0x44, 0x56, 0x55, 0xc7, 0xd9, 0x75, 0xfa, 0x17, 0x7f, 0xe1, 0xe6, 0x84, 0xe4, 0xe5, 0xa1,
+ 0xb7, 0x83, 0x82, 0xe3, 0x5a, 0x5b, 0x16, 0xbd, 0x8c, 0x61, 0x6e, 0x5f, 0x30, 0x34, 0x6a, 0x0a,
+ 0xd4, 0x48, 0x16, 0x9d, 0x65, 0x85, 0x1f, 0xca, 0xca, 0x46, 0x5e, 0x21, 0x34, 0x52, 0x70, 0xc6,
+ 0x73, 0x81, 0xe8, 0xeb, 0xa4, 0x62, 0xa2, 0x44, 0x93, 0x95, 0xfe, 0x20, 0xfc, 0x85, 0x2c, 0x98,
+ 0x5c, 0x74, 0x2e, 0xd9, 0x44, 0x60, 0xef, 0x90, 0xb3, 0x59, 0xfb, 0x9c, 0x92, 0x13, 0xef, 0xed,
+ 0x8a, 0x75, 0x89, 0x27, 0xad, 0xf5, 0xab, 0x8c, 0x80, 0x21, 0x56, 0x03, 0x24, 0xef, 0x59, 0x8a,
+ 0xab, 0x27, 0x7d, 0xbe, 0xfe, 0x99, 0x02, 0x72, 0x8b, 0xae, 0xd3, 0x81, 0xef, 0xc8, 0x24, 0xd8,
+ 0xf0, 0x6f, 0xb9, 0x4e, 0xc7, 0x20, 0x57, 0xa8, 0x84, 0xe7, 0x00, 0xf8, 0x34, 0xf5, 0x0e, 0x30,
+ 0xd9, 0x71, 0xba, 0x96, 0xe7, 0x4f, 0x07, 0xe6, 0x6e, 0x7b, 0x74, 0x5f, 0xad, 0x5c, 0x67, 0x99,
+ 0xf4, 0x20, 0x3b, 0xee, 0x7d, 0x09, 0x0b, 0x31, 0x5f, 0x30, 0x1b, 0xfd, 0x6b, 0x64, 0x7a, 0x52,
+ 0xe1, 0xcb, 0x79, 0x24, 0x9f, 0x2e, 0x22, 0xf9, 0xd8, 0x3e, 0x1c, 0x76, 0x9d, 0xce, 0x48, 0xb6,
+ 0xe8, 0x5e, 0x13, 0xa0, 0xfa, 0x0c, 0x01, 0xd5, 0x9b, 0xa5, 0xea, 0x4c, 0x1f, 0xd1, 0x0f, 0xe5,
+ 0x00, 0x20, 0xe6, 0xc2, 0x06, 0x9e, 0xc8, 0xc8, 0xd9, 0x4a, 0x2f, 0xc8, 0x71, 0xbc, 0x2c, 0x89,
+ 0xbc, 0x7c, 0x5c, 0x84, 0x35, 0x42, 0x8a, 0x8f, 0xe0, 0x68, 0x09, 0xe4, 0x77, 0xf1, 0x67, 0xc6,
+ 0x51, 0xc9, 0x22, 0xc8, 0xab, 0x4e, 0xff, 0x84, 0x7f, 0x9a, 0x01, 0x79, 0x92, 0xa0, 0x9e, 0x06,
+ 0x80, 0x0c, 0xd0, 0xf4, 0x44, 0x49, 0x86, 0x0c, 0xc5, 0x5c, 0x0a, 0x91, 0x56, 0xab, 0xc5, 0x3e,
+ 0x53, 0xd3, 0x37, 0x4c, 0xc0, 0x7f, 0x93, 0x61, 0x9b, 0x94, 0xc5, 0x06, 0x72, 0x2e, 0x05, 0xff,
+ 0x4d, 0xde, 0x56, 0xd1, 0x26, 0x8d, 0xa4, 0x9b, 0xd3, 0xc3, 0x84, 0xe0, 0xef, 0xd5, 0xe0, 0xb6,
+ 0x14, 0xff, 0x6f, 0x92, 0x82, 0x27, 0xb5, 0x44, 0x2c, 0x17, 0xc2, 0x2a, 0x0a, 0x24, 0x53, 0x6f,
+ 0x32, 0x7c, 0x63, 0x20, 0x36, 0x8b, 0x82, 0xd8, 0x3c, 0x21, 0x01, 0x7b, 0xd3, 0x17, 0x9e, 0xaf,
+ 0xe6, 0xc1, 0x54, 0xd5, 0x69, 0x31, 0xd9, 0xe1, 0x26, 0x7e, 0x9f, 0xc8, 0x27, 0x9a, 0xf8, 0x05,
+ 0x65, 0x44, 0x08, 0xc8, 0xbd, 0xa2, 0x80, 0xc8, 0x95, 0xc0, 0xcb, 0x87, 0xba, 0x00, 0x0a, 0x44,
+ 0x7a, 0xf7, 0xdf, 0x82, 0x13, 0x57, 0x04, 0x61, 0xad, 0xce, 0xfe, 0xfc, 0x37, 0x27, 0x63, 0xff,
+ 0x09, 0xe4, 0xa9, 0xeb, 0x75, 0xf4, 0xde, 0x88, 0xd8, 0xd0, 0x6c, 0x7c, 0x43, 0x95, 0xf8, 0x86,
+ 0xe6, 0x7a, 0x1b, 0x9a, 0x64, 0x3e, 0x1f, 0x25, 0x21, 0xe9, 0xcb, 0xf8, 0x7f, 0x9f, 0x00, 0xa0,
+ 0x6a, 0xee, 0x59, 0x5b, 0x74, 0x6f, 0xf5, 0x2f, 0xfd, 0x79, 0x0c, 0xdb, 0x05, 0xfd, 0xcf, 0xdc,
+ 0x40, 0x78, 0x07, 0x98, 0x60, 0xe3, 0x1e, 0x6b, 0xc8, 0x75, 0x42, 0x43, 0xc2, 0x52, 0xa8, 0x79,
+ 0x79, 0xd9, 0xd3, 0xfd, 0xfc, 0xc2, 0xbd, 0x80, 0xd9, 0x9e, 0x7b, 0x01, 0xfb, 0xee, 0x0e, 0x44,
+ 0xdd, 0x16, 0x08, 0xdf, 0x2f, 0xbd, 0x41, 0xc5, 0xd1, 0xc3, 0xb5, 0x28, 0x42, 0x05, 0x6f, 0x07,
+ 0x13, 0x4e, 0xb0, 0x1d, 0xac, 0x44, 0xae, 0x67, 0x55, 0xec, 0x4d, 0x47, 0xf7, 0x73, 0x4a, 0xee,
+ 0x4a, 0x49, 0xd1, 0x91, 0x3e, 0xd0, 0x9f, 0x51, 0xc0, 0xc9, 0x65, 0x3f, 0x2a, 0x11, 0x6e, 0xc7,
+ 0x79, 0xcb, 0xdb, 0x5e, 0xb5, 0xec, 0x8b, 0x5d, 0xf8, 0x1f, 0xe4, 0x2c, 0x48, 0x0e, 0xff, 0x6c,
+ 0x32, 0xfc, 0xc5, 0xa0, 0x0f, 0x75, 0x11, 0xb5, 0xbb, 0xa3, 0x4a, 0xe9, 0x4f, 0x6d, 0x04, 0x80,
+ 0x77, 0x82, 0x02, 0x25, 0x94, 0x75, 0xa2, 0x67, 0x23, 0xf1, 0x0b, 0x4a, 0xd2, 0xd9, 0x1f, 0xf0,
+ 0x7d, 0x01, 0x8e, 0xe7, 0x04, 0x1c, 0x17, 0x0e, 0x44, 0x59, 0xea, 0x90, 0x9e, 0x7d, 0x22, 0x98,
+ 0x60, 0x9c, 0x56, 0xe7, 0x78, 0x2d, 0x2e, 0x1e, 0x51, 0x01, 0x28, 0xac, 0x39, 0x7b, 0xc8, 0x70,
+ 0x8a, 0x19, 0xfc, 0x8c, 0xe9, 0x33, 0x9c, 0x62, 0x16, 0xbe, 0x76, 0x12, 0x4c, 0x06, 0xe1, 0x60,
+ 0xbe, 0x90, 0x05, 0xc5, 0xb2, 0x8b, 0x4c, 0x0f, 0x2d, 0xb9, 0xce, 0x0e, 0x6d, 0x91, 0xbc, 0x6f,
+ 0xe5, 0x2b, 0xa4, 0x1d, 0x24, 0x82, 0x30, 0x2d, 0xbd, 0x95, 0x49, 0x5e, 0x51, 0xfe, 0x76, 0x29,
+ 0x87, 0x09, 0xd9, 0x5a, 0xd2, 0x57, 0xb5, 0x4f, 0x67, 0x41, 0xbe, 0xdc, 0x76, 0x6c, 0x94, 0xe8,
+ 0x86, 0xf2, 0xfe, 0x3b, 0x0a, 0xf0, 0xa7, 0xb3, 0xb2, 0xb6, 0x46, 0xc8, 0x00, 0x5c, 0xb7, 0x24,
+ 0x6f, 0xe5, 0x06, 0xa9, 0xd8, 0xa2, 0xd3, 0x67, 0xe8, 0x37, 0xb3, 0x60, 0x8a, 0x06, 0x56, 0x29,
+ 0xb5, 0xdb, 0xf0, 0xd1, 0x21, 0x53, 0xfb, 0x84, 0xd4, 0x81, 0xbf, 0x23, 0xed, 0xe0, 0x1e, 0xb4,
+ 0x2a, 0x28, 0x3b, 0x41, 0x84, 0x99, 0x64, 0xfe, 0xd6, 0x72, 0x7b, 0x62, 0x03, 0x09, 0x4a, 0x9f,
+ 0xd5, 0x7f, 0x91, 0xc5, 0x06, 0x80, 0x7d, 0x71, 0xdd, 0x45, 0x7b, 0x16, 0xba, 0x04, 0x1f, 0x15,
+ 0x32, 0x7b, 0x7f, 0xd4, 0x88, 0xb7, 0x4a, 0x2f, 0xe2, 0x70, 0x45, 0x46, 0x6e, 0x49, 0x4d, 0xb7,
+ 0xc3, 0x4c, 0xac, 0x17, 0xef, 0x0d, 0xe5, 0xc1, 0x15, 0xa3, 0xf3, 0xd9, 0x25, 0xd7, 0x6c, 0xa2,
+ 0xa9, 0x48, 0x9f, 0xb1, 0x0f, 0x4e, 0x80, 0xc9, 0x0d, 0xbb, 0xdb, 0x69, 0x9b, 0xdd, 0x6d, 0xf8,
+ 0x7d, 0x25, 0xb8, 0x20, 0xfc, 0xc9, 0xc2, 0xe1, 0xf4, 0x9f, 0xdc, 0x45, 0xae, 0xef, 0x2f, 0x45,
+ 0x5f, 0xfa, 0xdf, 0x40, 0x0b, 0x3f, 0xa4, 0xc8, 0x4e, 0x52, 0xfd, 0x4a, 0xe3, 0x6f, 0xce, 0xae,
+ 0x80, 0xc9, 0x8e, 0xd5, 0xf4, 0x76, 0xdd, 0xe0, 0x3e, 0xd3, 0xc7, 0xcb, 0x95, 0xb2, 0x4e, 0xff,
+ 0xd2, 0x83, 0xdf, 0xa1, 0x09, 0x26, 0x58, 0xe2, 0xbe, 0x6d, 0xa1, 0xfd, 0xa7, 0x29, 0x4f, 0x82,
+ 0x82, 0xe9, 0x7a, 0x56, 0xd7, 0xbf, 0x2f, 0x9a, 0xbd, 0xe1, 0xee, 0x92, 0x3e, 0x6d, 0xb8, 0x6d,
+ 0x3f, 0x8c, 0x45, 0x90, 0x00, 0x7f, 0x57, 0x6a, 0xfe, 0x18, 0xdf, 0xf2, 0x64, 0x90, 0xdf, 0x37,
+ 0xc4, 0x5a, 0xf3, 0xd5, 0xe0, 0x2a, 0xbd, 0x64, 0x68, 0x0d, 0x1a, 0xf5, 0x20, 0x08, 0x70, 0xd0,
+ 0x82, 0xdf, 0xe7, 0xd7, 0xef, 0xc4, 0x31, 0x82, 0x71, 0x31, 0x1c, 0x23, 0x82, 0x84, 0x98, 0x31,
+ 0xe2, 0x37, 0xa5, 0x77, 0x77, 0x02, 0x96, 0x0c, 0x58, 0xcb, 0x8b, 0xbb, 0x36, 0xe6, 0xc3, 0x52,
+ 0x3b, 0x35, 0x83, 0x6a, 0x3a, 0x44, 0xf6, 0x7f, 0x76, 0x02, 0x4c, 0x2c, 0x9b, 0xed, 0x36, 0x72,
+ 0xaf, 0xe0, 0xa1, 0xa5, 0xe8, 0x53, 0xb8, 0x66, 0xda, 0xd6, 0x26, 0x9e, 0xdf, 0xc7, 0x76, 0x7a,
+ 0xef, 0x97, 0x0e, 0x49, 0xca, 0xea, 0x98, 0xef, 0x2d, 0x3f, 0x82, 0xe7, 0xb7, 0x82, 0x9c, 0x65,
+ 0x6f, 0x3a, 0xac, 0xeb, 0xeb, 0x5d, 0x45, 0xf7, 0x7f, 0x26, 0x53, 0x10, 0x92, 0x51, 0x32, 0x2a,
+ 0xa9, 0x24, 0x15, 0xe9, 0xf7, 0x80, 0x5f, 0xca, 0x81, 0x59, 0x9f, 0x88, 0x8a, 0xdd, 0x42, 0x97,
+ 0xe1, 0xed, 0x21, 0x9f, 0x6f, 0x02, 0x47, 0x9b, 0x6d, 0x0b, 0xd9, 0x5e, 0x39, 0x38, 0x25, 0x9d,
+ 0x61, 0x81, 0x7f, 0xc4, 0x64, 0xf8, 0xb2, 0x9c, 0xec, 0xf1, 0xa9, 0xde, 0x96, 0x93, 0x4a, 0x23,
+ 0x98, 0x6f, 0x00, 0xd0, 0x34, 0x3d, 0xb4, 0xe5, 0xb8, 0x56, 0xd0, 0x03, 0x3e, 0x29, 0x49, 0x69,
+ 0x65, 0xfa, 0xf7, 0x15, 0x9d, 0x2b, 0x47, 0xbd, 0x1b, 0x4c, 0xa3, 0xe0, 0x84, 0xb4, 0xbf, 0x38,
+ 0x13, 0x8b, 0x2c, 0x9f, 0x1f, 0xfe, 0x85, 0xd4, 0x29, 0x2d, 0x99, 0x66, 0x26, 0x43, 0xb7, 0x31,
+ 0x9c, 0xb6, 0x6d, 0x54, 0xd7, 0x4a, 0x7a, 0x7d, 0xa5, 0xb4, 0xba, 0x5a, 0xa9, 0x2e, 0x07, 0xb1,
+ 0x42, 0x54, 0x30, 0xb7, 0x58, 0x3b, 0x5f, 0xe5, 0x82, 0xb9, 0xe4, 0xe0, 0x3a, 0x98, 0xf4, 0xf9,
+ 0xd5, 0xcf, 0x2d, 0x92, 0xe7, 0x19, 0x73, 0x8b, 0xe4, 0x92, 0xb0, 0x39, 0x66, 0x35, 0x03, 0xd7,
+ 0x1a, 0xf2, 0x0c, 0xff, 0xc4, 0x04, 0x79, 0xb2, 0x8a, 0x0e, 0xdf, 0x4d, 0xae, 0x9e, 0xee, 0xb4,
+ 0xcd, 0x26, 0x82, 0x3b, 0x09, 0xec, 0x6f, 0x3f, 0x9a, 0x7e, 0x76, 0x5f, 0x34, 0x7d, 0xf2, 0xc8,
+ 0xec, 0xbc, 0xe3, 0xfd, 0x56, 0xee, 0x75, 0x9a, 0x45, 0x3c, 0xd0, 0x14, 0xbb, 0x9f, 0x42, 0x17,
+ 0xfc, 0x19, 0x99, 0x11, 0x22, 0x19, 0x4d, 0x53, 0x32, 0xdb, 0x53, 0x6e, 0xe7, 0x25, 0x8e, 0xa2,
+ 0xb1, 0xf4, 0x0d, 0xf9, 0x7a, 0xa7, 0x6d, 0x79, 0xf0, 0x55, 0xd9, 0x91, 0x60, 0x46, 0x6f, 0x40,
+ 0x50, 0x06, 0xde, 0x80, 0x10, 0xee, 0x97, 0xe6, 0x24, 0xf6, 0x4b, 0x0d, 0x74, 0xd9, 0x13, 0xf7,
+ 0x4b, 0xef, 0x60, 0xf1, 0xbe, 0xe8, 0x6e, 0xeb, 0x63, 0xfb, 0xb0, 0x94, 0x34, 0xab, 0x4f, 0x20,
+ 0xb9, 0xb3, 0x4f, 0x64, 0xf1, 0xac, 0x00, 0x28, 0x2c, 0xd4, 0x0c, 0xa3, 0xb6, 0x56, 0x3c, 0x42,
+ 0x02, 0xa1, 0xd4, 0xd6, 0x8b, 0x19, 0x75, 0x0a, 0xe4, 0x2b, 0xd5, 0xaa, 0xa6, 0x17, 0xb3, 0x24,
+ 0xc2, 0x56, 0xc5, 0x58, 0xd5, 0x8a, 0x8a, 0x18, 0x0e, 0x3b, 0xd6, 0xe0, 0x16, 0xeb, 0x4e, 0x53,
+ 0xbc, 0xe4, 0x4c, 0xef, 0x68, 0x7a, 0xd2, 0x17, 0xae, 0xff, 0xa2, 0x80, 0xfc, 0x1a, 0x72, 0xb7,
+ 0x10, 0xfc, 0xc9, 0x04, 0xdb, 0x7a, 0x9b, 0x96, 0xdb, 0xa5, 0xf1, 0xc8, 0xc2, 0x6d, 0x3d, 0x3e,
+ 0x4d, 0xbd, 0x01, 0xcc, 0x76, 0x51, 0xd3, 0xb1, 0x5b, 0x7e, 0x26, 0xda, 0x1f, 0x89, 0x89, 0xf0,
+ 0x95, 0x09, 0x21, 0x23, 0x84, 0x8e, 0x64, 0x6f, 0x2e, 0x09, 0x30, 0xfd, 0x6a, 0x4d, 0x1f, 0x98,
+ 0xef, 0x28, 0xf8, 0xa7, 0xce, 0x15, 0xf8, 0x4a, 0xe9, 0xfd, 0xd6, 0x5b, 0x40, 0x81, 0x88, 0xa9,
+ 0x3f, 0x46, 0xf7, 0xef, 0x8f, 0x59, 0x1e, 0x75, 0x01, 0x1c, 0xeb, 0xa2, 0x36, 0x6a, 0x7a, 0xa8,
+ 0x85, 0x55, 0x57, 0x1f, 0xd8, 0x29, 0xec, 0xcf, 0x0e, 0x3f, 0xcb, 0x03, 0x78, 0x97, 0x08, 0xe0,
+ 0x8d, 0x7d, 0x58, 0x89, 0x1b, 0x14, 0x6d, 0x55, 0xe3, 0x66, 0xd4, 0xdb, 0x4e, 0xb0, 0x0c, 0xee,
+ 0xbf, 0xe3, 0x6f, 0xdb, 0xde, 0x4e, 0x9b, 0x7c, 0x63, 0xbe, 0xfe, 0xfe, 0xbb, 0x3a, 0x0f, 0x26,
+ 0x4c, 0xfb, 0x0a, 0xf9, 0x94, 0x8b, 0x69, 0xb5, 0x9f, 0x09, 0xbe, 0x36, 0x40, 0xfe, 0x1e, 0x01,
+ 0xf9, 0xc7, 0xc9, 0x91, 0x9b, 0x3e, 0xf0, 0xcf, 0x9b, 0x00, 0xf9, 0x75, 0xb3, 0xeb, 0x21, 0xf8,
+ 0xff, 0x2a, 0xb2, 0xc8, 0xdf, 0x08, 0xe6, 0x36, 0x9d, 0xe6, 0x6e, 0x17, 0xb5, 0x44, 0xa5, 0xec,
+ 0x49, 0x1d, 0x05, 0xe6, 0xea, 0xcd, 0xa0, 0xe8, 0x27, 0xb2, 0x62, 0xfd, 0x8d, 0xf7, 0x7d, 0xe9,
+ 0x24, 0xb8, 0x72, 0x77, 0xdd, 0x74, 0xbd, 0xda, 0x26, 0x49, 0x0b, 0x82, 0x2b, 0xf3, 0x89, 0x02,
+ 0xf4, 0x85, 0x18, 0xe8, 0x27, 0xa2, 0xa1, 0x9f, 0x94, 0x80, 0x5e, 0x2d, 0x81, 0xc9, 0x4d, 0xab,
+ 0x8d, 0xc8, 0x0f, 0x53, 0xe4, 0x87, 0x7e, 0x63, 0x12, 0xe1, 0x7d, 0x30, 0x26, 0x2d, 0x59, 0x6d,
+ 0xa4, 0x07, 0xbf, 0xf9, 0x53, 0x1e, 0x10, 0x4e, 0x79, 0x56, 0xa9, 0x27, 0x2c, 0x36, 0xbc, 0x6c,
+ 0x73, 0x07, 0xf9, 0xcb, 0x6d, 0x36, 0x3b, 0x67, 0xd2, 0x32, 0x3d, 0x93, 0x80, 0x31, 0xa3, 0x93,
+ 0x67, 0xd1, 0x13, 0x44, 0xe9, 0xf5, 0x04, 0x79, 0xa1, 0x92, 0xac, 0x47, 0xf4, 0x89, 0x8d, 0xd0,
+ 0xa8, 0x0b, 0x3e, 0x40, 0xd4, 0x52, 0x0c, 0xde, 0x31, 0x30, 0x4d, 0xd3, 0x45, 0xde, 0x3a, 0xef,
+ 0x7b, 0x91, 0xd7, 0xc5, 0x44, 0xe2, 0x84, 0xd7, 0xad, 0x9b, 0x3b, 0x88, 0x54, 0x56, 0xc6, 0xdf,
+ 0x98, 0x73, 0xd5, 0xbe, 0xf4, 0xb0, 0xff, 0xcd, 0x8f, 0xba, 0xff, 0xed, 0xd7, 0xc6, 0xf4, 0xd5,
+ 0xf0, 0xf5, 0x39, 0xa0, 0x94, 0x77, 0xbd, 0x47, 0x74, 0xf7, 0xfb, 0x03, 0x69, 0xcf, 0x16, 0xd6,
+ 0x9f, 0x45, 0xde, 0x3d, 0x3e, 0xa6, 0xde, 0x37, 0xa1, 0x94, 0xc8, 0x79, 0xd0, 0x44, 0xb5, 0x2d,
+ 0x7d, 0x19, 0x79, 0x87, 0x12, 0xb8, 0x46, 0x3e, 0x3f, 0x73, 0x70, 0xd3, 0x1c, 0xd2, 0xfe, 0x89,
+ 0xeb, 0x19, 0x82, 0x77, 0xbf, 0xe3, 0xc9, 0x09, 0xb1, 0xd6, 0xc8, 0x86, 0x3a, 0x61, 0xe5, 0x8c,
+ 0x4e, 0x5f, 0xe0, 0xab, 0xa5, 0x1d, 0xc6, 0x29, 0xdb, 0x62, 0x9d, 0x07, 0x93, 0xd9, 0x54, 0x72,
+ 0xf7, 0x4b, 0xc6, 0x54, 0x3b, 0x86, 0x60, 0x77, 0xd1, 0x8b, 0x8b, 0xc3, 0x20, 0x06, 0x5f, 0x27,
+ 0xbd, 0x01, 0x45, 0x9b, 0x3d, 0x60, 0x65, 0x31, 0x19, 0xbf, 0xe5, 0xb6, 0xa7, 0x62, 0x2b, 0x4e,
+ 0x9f, 0xe3, 0xdf, 0x52, 0x40, 0x81, 0x6e, 0x3a, 0xc2, 0xb7, 0x65, 0x12, 0x5c, 0xcc, 0xed, 0x89,
+ 0x4e, 0x83, 0xc1, 0x7b, 0x92, 0x35, 0x07, 0xc1, 0xb9, 0x30, 0x97, 0xc8, 0xb9, 0x50, 0x3c, 0x81,
+ 0x29, 0xa1, 0x47, 0xb4, 0x8d, 0x29, 0x4f, 0x27, 0x93, 0x68, 0x58, 0x5f, 0x82, 0xd2, 0xc7, 0xfb,
+ 0x45, 0x79, 0x30, 0x43, 0xab, 0x3e, 0x6f, 0xb5, 0xb6, 0x90, 0x07, 0xdf, 0x9b, 0xfd, 0xe1, 0x41,
+ 0x5d, 0xad, 0x82, 0x99, 0x4b, 0x84, 0xec, 0x55, 0xf3, 0x8a, 0xb3, 0xeb, 0xb1, 0x95, 0x8b, 0x9b,
+ 0x63, 0xd7, 0x3d, 0x68, 0x3b, 0xe7, 0xe9, 0x1f, 0xba, 0xf0, 0x3f, 0xe6, 0x31, 0xdd, 0x1a, 0xa0,
+ 0x2e, 0x5b, 0x05, 0x62, 0x64, 0xf1, 0x49, 0xea, 0x49, 0x50, 0xd8, 0xb3, 0xd0, 0xa5, 0x4a, 0x8b,
+ 0x59, 0xb7, 0xec, 0x4d, 0x3c, 0x6c, 0x1e, 0xbb, 0x53, 0xcb, 0xc3, 0xcd, 0x68, 0x49, 0x57, 0x0a,
+ 0xe5, 0xf6, 0x6b, 0x07, 0x92, 0x35, 0x86, 0xd3, 0xc0, 0xe2, 0xfd, 0x8d, 0xe5, 0x04, 0x82, 0x18,
+ 0x65, 0x38, 0x8b, 0xa1, 0x2f, 0x62, 0xcf, 0x9a, 0x50, 0x06, 0x8c, 0xf8, 0x6a, 0x47, 0xb9, 0x78,
+ 0x0c, 0x03, 0xaa, 0x4e, 0x9f, 0xf3, 0x6f, 0x54, 0xc0, 0x54, 0x1d, 0x79, 0x4b, 0x16, 0x6a, 0xb7,
+ 0xba, 0xd0, 0x3d, 0xb8, 0x69, 0x74, 0x2b, 0x28, 0x6c, 0x92, 0xc2, 0x06, 0x9d, 0x54, 0x60, 0xd9,
+ 0xe0, 0xeb, 0xb3, 0xb2, 0x7b, 0xc0, 0x6c, 0xf5, 0xcd, 0xa7, 0x76, 0x24, 0x30, 0xc9, 0xf9, 0xf0,
+ 0xc6, 0xd7, 0x9c, 0x3e, 0x4a, 0xef, 0x54, 0xc0, 0x0c, 0xbb, 0xf0, 0xad, 0xd4, 0xb6, 0xb6, 0x6c,
+ 0xb8, 0x3b, 0x02, 0x0d, 0x51, 0x9f, 0x00, 0xf2, 0x26, 0x2e, 0x8d, 0xb9, 0xf3, 0xc3, 0xbe, 0x9d,
+ 0x27, 0xa9, 0x4f, 0xa7, 0x19, 0x13, 0x84, 0x5d, 0x0c, 0x05, 0xdb, 0xa7, 0x79, 0x8c, 0x61, 0x17,
+ 0x07, 0x56, 0x9e, 0x3e, 0x62, 0x5f, 0x51, 0xc0, 0x71, 0x46, 0xc0, 0x39, 0xe4, 0x7a, 0x56, 0xd3,
+ 0x6c, 0x53, 0xe4, 0x5e, 0x9c, 0x19, 0x05, 0x74, 0x2b, 0x60, 0x76, 0x8f, 0x2f, 0x96, 0x41, 0x78,
+ 0xb6, 0x2f, 0x84, 0x02, 0x01, 0xba, 0xf8, 0x63, 0x82, 0xf0, 0x75, 0x02, 0x57, 0x85, 0x32, 0xc7,
+ 0x18, 0xbe, 0x4e, 0x9a, 0x88, 0xf4, 0x21, 0x7e, 0x79, 0x8e, 0x86, 0xb2, 0x09, 0xbb, 0xcf, 0xbf,
+ 0x94, 0xc6, 0x76, 0x03, 0x4c, 0x13, 0x2c, 0xe9, 0x8f, 0x6c, 0x19, 0x22, 0x46, 0x88, 0x83, 0x7e,
+ 0x87, 0xdd, 0x31, 0x15, 0xfc, 0xab, 0xf3, 0xe5, 0xc0, 0xf3, 0x00, 0x84, 0x9f, 0xf8, 0x4e, 0x3a,
+ 0x13, 0xd5, 0x49, 0x67, 0xe5, 0x3a, 0xe9, 0xb7, 0x4a, 0x87, 0x39, 0xe9, 0x4f, 0xf6, 0xc1, 0xc5,
+ 0x43, 0x2e, 0xc0, 0xc5, 0xe0, 0xda, 0xd3, 0x97, 0x8b, 0xd7, 0xe6, 0x7a, 0x6f, 0xf6, 0xfe, 0xd8,
+ 0x48, 0xe6, 0x53, 0x7c, 0x7f, 0xa0, 0xf4, 0xf4, 0x07, 0x07, 0xb0, 0xa4, 0x6f, 0x02, 0x47, 0x69,
+ 0x15, 0xe5, 0x80, 0x2c, 0x1a, 0xd9, 0xbd, 0x37, 0x19, 0x3e, 0x34, 0x84, 0x10, 0x0c, 0xba, 0x76,
+ 0x3c, 0xae, 0x93, 0x4b, 0x66, 0xec, 0x26, 0x15, 0x90, 0xc3, 0xbb, 0xad, 0xfc, 0x9b, 0x39, 0x6a,
+ 0xed, 0x6e, 0x90, 0x6b, 0xc0, 0xe0, 0x17, 0x73, 0xa3, 0x18, 0x11, 0xee, 0x05, 0x39, 0xe2, 0xd4,
+ 0xae, 0x44, 0x2e, 0x69, 0x84, 0x55, 0x86, 0x77, 0xb4, 0xa1, 0xcb, 0xde, 0xca, 0x11, 0x9d, 0xfc,
+ 0xa9, 0xde, 0x0c, 0x8e, 0x5e, 0x30, 0x9b, 0x17, 0xb7, 0x5c, 0x67, 0x97, 0x5c, 0x98, 0xe4, 0xb0,
+ 0x9b, 0x97, 0xc8, 0x0d, 0x76, 0xe2, 0x07, 0xf5, 0x36, 0xdf, 0x74, 0xc8, 0x0f, 0x32, 0x1d, 0x56,
+ 0x8e, 0x30, 0xe3, 0x41, 0x7d, 0x62, 0xd0, 0xe9, 0x14, 0x62, 0x3b, 0x9d, 0x95, 0x23, 0x7e, 0xb7,
+ 0xa3, 0x2e, 0x82, 0xc9, 0x96, 0xb5, 0x47, 0xb6, 0xaa, 0xc9, 0xac, 0x6b, 0xd0, 0xa1, 0xe3, 0x45,
+ 0x6b, 0x8f, 0x6e, 0x6c, 0xaf, 0x1c, 0xd1, 0x83, 0x3f, 0xd5, 0x65, 0x30, 0x45, 0xb6, 0x05, 0x48,
+ 0x31, 0x93, 0x89, 0x0e, 0x14, 0xaf, 0x1c, 0xd1, 0xc3, 0x7f, 0xb1, 0xf5, 0x91, 0x23, 0xa7, 0x3d,
+ 0xee, 0xf1, 0xb7, 0xdb, 0x33, 0x89, 0xb6, 0xdb, 0x31, 0x2f, 0xe8, 0x86, 0xfb, 0x49, 0x90, 0x6f,
+ 0x12, 0x0e, 0x67, 0x19, 0x87, 0xe9, 0xab, 0x7a, 0x17, 0xc8, 0xed, 0x98, 0xae, 0x3f, 0x79, 0xbe,
+ 0x71, 0x70, 0xb9, 0x6b, 0xa6, 0x7b, 0x11, 0x23, 0x88, 0xff, 0x5a, 0x98, 0x00, 0x79, 0xc2, 0xb8,
+ 0xe0, 0x01, 0xbe, 0x23, 0x47, 0xcd, 0x90, 0xb2, 0x63, 0xe3, 0x61, 0xdf, 0x70, 0xfc, 0x23, 0x31,
+ 0x7f, 0x98, 0x19, 0x8d, 0x05, 0xd9, 0xf7, 0x2a, 0x6c, 0x25, 0xf2, 0x2a, 0xec, 0x9e, 0x3b, 0x59,
+ 0x73, 0xbd, 0x77, 0xb2, 0x86, 0xcb, 0x07, 0xf9, 0xc1, 0x8e, 0x2a, 0x9f, 0x1d, 0xc2, 0x74, 0xe9,
+ 0x65, 0x44, 0xf4, 0x0c, 0xbc, 0x6d, 0xd9, 0x5c, 0x9b, 0xfd, 0xd7, 0x84, 0x9d, 0x52, 0x52, 0xa3,
+ 0x66, 0x00, 0x79, 0xe9, 0xf7, 0x4d, 0xbf, 0x91, 0x03, 0xa7, 0xe8, 0xcd, 0xbf, 0x7b, 0xc8, 0x70,
+ 0xc4, 0x2b, 0x0a, 0xe1, 0xa7, 0x46, 0x22, 0x34, 0x7d, 0x06, 0x1c, 0xa5, 0xef, 0x80, 0xb3, 0xef,
+ 0x58, 0x72, 0x6e, 0xc0, 0xb1, 0xe4, 0x7c, 0xb2, 0x95, 0xc3, 0xdf, 0xe7, 0xe5, 0x67, 0x5d, 0x94,
+ 0x9f, 0x3b, 0x23, 0x00, 0xea, 0xc7, 0x97, 0x91, 0xd8, 0x37, 0xef, 0x0e, 0x24, 0xa5, 0x2e, 0x48,
+ 0xca, 0x3d, 0xc3, 0x13, 0x92, 0xbe, 0xb4, 0xfc, 0x5e, 0x0e, 0x5c, 0x15, 0x12, 0x53, 0x45, 0x97,
+ 0x98, 0xa0, 0x7c, 0x61, 0x24, 0x82, 0x92, 0x3c, 0xea, 0x41, 0xda, 0x12, 0xf3, 0xa7, 0xd2, 0xa7,
+ 0x85, 0x7a, 0x81, 0x0a, 0x78, 0x13, 0x21, 0x2c, 0x27, 0x41, 0x81, 0xf6, 0x30, 0x0c, 0x1a, 0xf6,
+ 0x96, 0xb0, 0xbb, 0x91, 0x3b, 0x63, 0x24, 0x4b, 0xdb, 0x18, 0xe4, 0x87, 0xad, 0x6b, 0x18, 0xbb,
+ 0xae, 0x5d, 0xb1, 0x3d, 0x07, 0xfe, 0xcc, 0x48, 0x04, 0x27, 0xf0, 0x86, 0x53, 0x86, 0xf1, 0x86,
+ 0x1b, 0x6a, 0x95, 0xc3, 0x6f, 0xc1, 0xa1, 0xac, 0x72, 0x44, 0x54, 0x9e, 0x3e, 0x7e, 0xef, 0x52,
+ 0xc0, 0x49, 0x36, 0xd9, 0x5a, 0x10, 0x2d, 0x44, 0x78, 0xff, 0x28, 0x80, 0x3c, 0xee, 0x9b, 0x49,
+ 0xec, 0x96, 0x2a, 0xf2, 0x22, 0x9e, 0x8d, 0x8a, 0xbd, 0x0f, 0x41, 0x98, 0x0e, 0xf6, 0x50, 0x38,
+ 0x12, 0xa4, 0xe4, 0xae, 0x41, 0x48, 0x40, 0x46, 0xfa, 0x98, 0xbd, 0x54, 0x01, 0x05, 0x76, 0xe3,
+ 0xfb, 0x46, 0x2a, 0x0e, 0x13, 0x62, 0x54, 0x64, 0x89, 0x1d, 0xb9, 0xc4, 0xf7, 0xa2, 0xa7, 0xb7,
+ 0x17, 0x77, 0x48, 0x17, 0x9f, 0x7f, 0x27, 0x0b, 0xa6, 0xeb, 0xc8, 0x2b, 0x9b, 0xae, 0x6b, 0x99,
+ 0x5b, 0xa3, 0xf2, 0xf8, 0x96, 0xf5, 0x1e, 0x86, 0xdf, 0xcd, 0xc8, 0x9e, 0xbc, 0x09, 0x16, 0xc2,
+ 0x7d, 0x52, 0x23, 0xa2, 0x00, 0xca, 0xdd, 0x38, 0x3f, 0xa8, 0xb4, 0x31, 0x78, 0x6c, 0x67, 0xc1,
+ 0x84, 0x7f, 0xfa, 0xee, 0x56, 0xe1, 0x44, 0xe6, 0xb6, 0xb7, 0xe3, 0x1f, 0x98, 0x21, 0xcf, 0xfb,
+ 0x4f, 0x7d, 0xc1, 0xd7, 0x24, 0x74, 0x94, 0x8f, 0x3f, 0x3a, 0x98, 0x4c, 0xc7, 0x92, 0xb8, 0xc3,
+ 0x1f, 0xd6, 0x61, 0xc1, 0xdf, 0x99, 0x60, 0xcb, 0x91, 0xab, 0xa6, 0x87, 0x2e, 0xc3, 0xbf, 0x54,
+ 0xc0, 0x44, 0x1d, 0x79, 0x78, 0xbc, 0xc5, 0xe4, 0x1f, 0x58, 0xc2, 0x55, 0x6e, 0xc5, 0x63, 0x8a,
+ 0xad, 0x61, 0x3c, 0x13, 0x4c, 0x75, 0x5c, 0xa7, 0x89, 0xba, 0x5d, 0xb6, 0x7a, 0xc1, 0x3b, 0xaa,
+ 0xf5, 0x1b, 0xfd, 0x09, 0x69, 0xf3, 0xeb, 0xfe, 0x3f, 0x7a, 0xf8, 0x7b, 0x52, 0x33, 0x80, 0x96,
+ 0xc4, 0x1a, 0x38, 0x6e, 0x33, 0x20, 0xae, 0xf2, 0xf4, 0x81, 0xfe, 0x9c, 0x02, 0x66, 0xea, 0xc8,
+ 0x0b, 0xb8, 0x98, 0x60, 0x93, 0x23, 0x1a, 0x5e, 0x01, 0x4a, 0xe5, 0x60, 0x50, 0xca, 0x5f, 0xa5,
+ 0x27, 0x72, 0x33, 0x28, 0x6c, 0x8c, 0x57, 0xe9, 0xc9, 0x51, 0x90, 0x3e, 0xa8, 0xbf, 0xf5, 0x58,
+ 0x30, 0x45, 0x68, 0x21, 0x0a, 0xfb, 0xf3, 0xb9, 0x50, 0x79, 0x1f, 0x4e, 0x49, 0x79, 0xef, 0x06,
+ 0x79, 0x72, 0xbf, 0x3f, 0x51, 0xdc, 0x69, 0x19, 0xb3, 0x7d, 0x0d, 0x67, 0xd7, 0xe9, 0x5f, 0xfd,
+ 0xfd, 0x34, 0xf3, 0xc9, 0xfc, 0x34, 0xdf, 0x9c, 0x4d, 0x34, 0x12, 0xd2, 0xb9, 0xc3, 0x08, 0x55,
+ 0x3e, 0xc1, 0xb8, 0x19, 0x53, 0x77, 0xfa, 0xc2, 0xf1, 0x62, 0x05, 0x4c, 0xe2, 0x71, 0x9b, 0xd8,
+ 0xe3, 0xe7, 0x0f, 0x2e, 0x0e, 0xfd, 0x0d, 0xfd, 0x84, 0x3d, 0xb0, 0xcf, 0x91, 0xd1, 0x99, 0xf7,
+ 0x09, 0x7a, 0xe0, 0xb8, 0xca, 0xd3, 0xc7, 0xe3, 0x3d, 0x14, 0x0f, 0xa2, 0x0f, 0xf0, 0x2d, 0x0a,
+ 0x50, 0x96, 0x91, 0x37, 0x6e, 0x2b, 0xf2, 0x9d, 0xd2, 0x41, 0x8d, 0x04, 0x86, 0x11, 0x9a, 0xe7,
+ 0x97, 0xd1, 0x68, 0x14, 0x48, 0x2e, 0x9a, 0x91, 0x14, 0x01, 0xe9, 0xa3, 0xf6, 0x01, 0x8a, 0x1a,
+ 0xdd, 0x5c, 0xf8, 0xa9, 0x11, 0xf4, 0xaa, 0xe3, 0x5d, 0xf8, 0xf0, 0x19, 0x48, 0xca, 0x38, 0x2c,
+ 0x7d, 0xeb, 0x57, 0xf9, 0x58, 0xae, 0xae, 0x03, 0x58, 0xd9, 0xb7, 0x51, 0xf3, 0x22, 0x6a, 0xc1,
+ 0x1f, 0x3f, 0x38, 0x74, 0xa7, 0xc0, 0x44, 0x93, 0x96, 0x46, 0xc0, 0x9b, 0xd4, 0xfd, 0xd7, 0x04,
+ 0xf7, 0x30, 0x8b, 0x1d, 0x11, 0xfd, 0x7d, 0x8c, 0xf7, 0x30, 0x4b, 0x54, 0x3f, 0x06, 0xb3, 0x85,
+ 0xce, 0x32, 0x2a, 0x4d, 0xc7, 0x86, 0xff, 0xf1, 0xe0, 0xb0, 0x5c, 0x0b, 0xa6, 0xac, 0xa6, 0x63,
+ 0x57, 0x76, 0xfc, 0x30, 0x80, 0x53, 0x7a, 0x98, 0xe0, 0x7f, 0xd5, 0x76, 0x9c, 0x07, 0x2c, 0xff,
+ 0x3e, 0xf4, 0x20, 0x61, 0x58, 0x63, 0x02, 0x93, 0x7e, 0x58, 0xc6, 0x44, 0x9f, 0xba, 0xd3, 0x87,
+ 0xec, 0xa1, 0xd0, 0xbb, 0x8d, 0x76, 0x85, 0x8f, 0x88, 0x55, 0xe0, 0x61, 0x86, 0x33, 0xbe, 0x15,
+ 0x87, 0x32, 0x9c, 0xc5, 0x10, 0x30, 0x86, 0x9b, 0x48, 0x42, 0x1c, 0x53, 0x5f, 0x03, 0x3e, 0x00,
+ 0x3a, 0xa3, 0x33, 0x0f, 0x87, 0x44, 0xe7, 0x70, 0x4c, 0xc4, 0x0f, 0xb3, 0xa0, 0x98, 0xcc, 0xe2,
+ 0x81, 0xff, 0x69, 0x14, 0xe0, 0xdc, 0x39, 0x8c, 0xbf, 0x02, 0xf5, 0x56, 0x48, 0x70, 0x83, 0xf4,
+ 0x3e, 0x0e, 0xe2, 0x52, 0xc6, 0x78, 0xb7, 0xba, 0x4c, 0xfd, 0xe9, 0x03, 0xf8, 0x73, 0x0a, 0x98,
+ 0x23, 0x3e, 0x02, 0x6d, 0x64, 0xba, 0xb4, 0xa3, 0x1c, 0x89, 0xa3, 0xfc, 0x7b, 0xa4, 0x43, 0x01,
+ 0x89, 0x7c, 0x08, 0xe9, 0x18, 0x09, 0x14, 0x72, 0x71, 0x80, 0x24, 0x49, 0x18, 0xcb, 0x36, 0x4a,
+ 0x31, 0x20, 0x81, 0x89, 0xf8, 0x68, 0xf0, 0x48, 0xe8, 0x91, 0x2b, 0x32, 0xc3, 0x57, 0xb6, 0x31,
+ 0x7b, 0xe4, 0xca, 0x10, 0x31, 0x86, 0xcb, 0x25, 0x9f, 0xc0, 0x16, 0x9c, 0x0d, 0x72, 0xc1, 0xfa,
+ 0xeb, 0x72, 0xc1, 0x89, 0xb6, 0xcf, 0x8d, 0xc4, 0x03, 0xf3, 0x00, 0x21, 0xf0, 0x55, 0x90, 0x73,
+ 0x9d, 0x4b, 0x74, 0x69, 0x6b, 0x56, 0x27, 0xcf, 0xc4, 0xe4, 0x77, 0xda, 0xbb, 0x3b, 0x36, 0x3d,
+ 0x19, 0x3a, 0xab, 0xfb, 0xaf, 0xea, 0x0d, 0x60, 0xf6, 0x92, 0xe5, 0x6d, 0xaf, 0x20, 0xb3, 0x85,
+ 0x5c, 0xdd, 0xb9, 0x44, 0x3c, 0xe6, 0x26, 0x75, 0x31, 0x51, 0xf4, 0x5f, 0x91, 0xb0, 0x2f, 0xc9,
+ 0xad, 0xeb, 0x63, 0x39, 0xfe, 0x96, 0xc4, 0xf2, 0x8c, 0xa6, 0x2a, 0x7d, 0x81, 0xf9, 0xa0, 0x02,
+ 0xa6, 0x74, 0xe7, 0x12, 0x13, 0x92, 0xff, 0xfb, 0x70, 0x65, 0x24, 0xf1, 0x44, 0x8f, 0xde, 0xa2,
+ 0xef, 0x93, 0x3f, 0xf6, 0x89, 0x5e, 0x6c, 0xf5, 0x63, 0x39, 0xb9, 0x34, 0xa3, 0x3b, 0x97, 0xea,
+ 0xc8, 0xa3, 0x1a, 0x01, 0x1b, 0x23, 0x72, 0xb2, 0xb6, 0xba, 0xb4, 0x40, 0x36, 0x0f, 0x0f, 0xde,
+ 0x93, 0xee, 0x22, 0x04, 0x0c, 0x0a, 0x48, 0x1c, 0xf7, 0x2e, 0xc2, 0x40, 0x0a, 0xc6, 0x10, 0x23,
+ 0x45, 0x01, 0xd3, 0xba, 0x73, 0x09, 0x0f, 0x0d, 0x4b, 0x56, 0xbb, 0x3d, 0x9a, 0x11, 0x32, 0xa9,
+ 0xf1, 0xef, 0xb3, 0xc1, 0xa7, 0x62, 0xec, 0xc6, 0xff, 0x00, 0x02, 0xd2, 0x87, 0xe1, 0x85, 0x54,
+ 0x59, 0xfc, 0x11, 0xda, 0x1e, 0x0d, 0x0e, 0xc3, 0x2a, 0x44, 0x40, 0xc6, 0xa1, 0x29, 0x44, 0x14,
+ 0x05, 0x63, 0xd9, 0x39, 0x99, 0x2b, 0x93, 0x61, 0x7e, 0xb4, 0x3a, 0xf1, 0xbe, 0x64, 0xae, 0x89,
+ 0x6c, 0xd8, 0x15, 0x08, 0x19, 0x09, 0x1a, 0x09, 0x5c, 0x10, 0x25, 0x68, 0x48, 0x1f, 0x8f, 0x8f,
+ 0x28, 0x60, 0x86, 0x92, 0xf0, 0x08, 0xb1, 0x02, 0x86, 0x52, 0x2a, 0xbe, 0x05, 0x87, 0xa3, 0x54,
+ 0x31, 0x14, 0x8c, 0xe5, 0x3e, 0x4f, 0x6c, 0xc7, 0x0d, 0x71, 0x7c, 0x3c, 0x0a, 0xc1, 0xa1, 0x8d,
+ 0xb1, 0x11, 0x1e, 0x21, 0x1f, 0xc6, 0x18, 0x3b, 0xa4, 0x63, 0xe4, 0x2f, 0x0c, 0xb4, 0x68, 0x94,
+ 0x18, 0x1c, 0x40, 0x15, 0x46, 0x08, 0xc3, 0x90, 0xaa, 0x70, 0x48, 0x48, 0x7c, 0x55, 0x01, 0x80,
+ 0x12, 0xb0, 0xe6, 0xec, 0x91, 0xeb, 0x7b, 0x46, 0xd0, 0x9d, 0xf5, 0xba, 0xd5, 0x2b, 0x03, 0xdc,
+ 0xea, 0x13, 0x86, 0x70, 0x49, 0xba, 0x12, 0xc8, 0x71, 0x19, 0x37, 0x72, 0xec, 0x2b, 0x81, 0xf1,
+ 0xf5, 0xa7, 0x8f, 0xf1, 0x97, 0xa9, 0x35, 0x17, 0x1e, 0x30, 0xfd, 0xe5, 0x91, 0xa0, 0xcc, 0xcd,
+ 0xfe, 0x15, 0x71, 0xf6, 0x7f, 0x00, 0x6c, 0x87, 0xb5, 0x11, 0x07, 0x1d, 0x1c, 0x4d, 0xdf, 0x46,
+ 0x3c, 0xbc, 0x03, 0xa2, 0x3f, 0x95, 0x03, 0x47, 0x59, 0x27, 0xf2, 0xc3, 0x00, 0x71, 0xc2, 0x73,
+ 0x78, 0x42, 0x27, 0x39, 0x00, 0xe5, 0x51, 0x2d, 0x48, 0x25, 0x59, 0xca, 0x94, 0x20, 0x6f, 0x2c,
+ 0xab, 0x1b, 0x05, 0xed, 0x72, 0xc7, 0xb4, 0x5b, 0xf2, 0xe1, 0x7e, 0x07, 0x00, 0xef, 0xaf, 0x35,
+ 0x2a, 0xe2, 0x5a, 0x63, 0x9f, 0x95, 0xc9, 0xc4, 0x3b, 0xd7, 0x84, 0x65, 0x94, 0xdc, 0xb1, 0xef,
+ 0x5c, 0x47, 0xd7, 0x9d, 0x3e, 0x4a, 0xef, 0x53, 0x40, 0xae, 0xee, 0xb8, 0x1e, 0x7c, 0x30, 0x89,
+ 0x76, 0x52, 0xce, 0x87, 0x20, 0xf9, 0xef, 0x6a, 0x59, 0xb8, 0x5f, 0xf9, 0xd6, 0xf8, 0xa3, 0xce,
+ 0xa6, 0x67, 0x12, 0xaf, 0x6e, 0x5c, 0x3f, 0x77, 0xd1, 0x72, 0xd2, 0x78, 0x3a, 0x94, 0x7f, 0xf5,
+ 0xe8, 0x03, 0x18, 0xa9, 0xc5, 0xd3, 0x89, 0xac, 0x39, 0x7d, 0xdc, 0xfe, 0xdb, 0x1c, 0xf3, 0x6d,
+ 0x5d, 0xb2, 0xda, 0x08, 0x3e, 0x48, 0x5d, 0x46, 0xaa, 0xe6, 0x0e, 0x92, 0x3f, 0x12, 0x13, 0xeb,
+ 0xda, 0x4a, 0xe2, 0xcb, 0x2a, 0x61, 0x7c, 0xd9, 0xa4, 0x0a, 0x45, 0x0f, 0xa0, 0x53, 0x92, 0xc6,
+ 0xad, 0x50, 0x31, 0x75, 0x8f, 0x25, 0x4e, 0xe7, 0xb1, 0x3a, 0xf2, 0xa8, 0x51, 0x59, 0xf3, 0xef,
+ 0x6a, 0xf9, 0x89, 0x91, 0x44, 0xec, 0x0c, 0xae, 0x82, 0x51, 0x7a, 0xae, 0x82, 0xf9, 0x20, 0x0f,
+ 0xce, 0x9a, 0x08, 0xce, 0x53, 0xa3, 0x19, 0x24, 0x12, 0x39, 0x12, 0x98, 0xde, 0x19, 0xc0, 0xb4,
+ 0x2e, 0xc0, 0x74, 0xd7, 0x90, 0x54, 0xa4, 0x0f, 0xd8, 0xc3, 0xd8, 0x54, 0x21, 0x93, 0xfe, 0x92,
+ 0xdd, 0x62, 0x11, 0x56, 0xff, 0xf1, 0xb0, 0x37, 0xdb, 0xf6, 0x87, 0x60, 0x15, 0x62, 0x39, 0xe7,
+ 0x7b, 0xef, 0xb5, 0x5f, 0xa0, 0xe1, 0x5c, 0x71, 0x27, 0x4a, 0x76, 0xda, 0xe4, 0xef, 0xb6, 0x0f,
+ 0xfe, 0x83, 0x7f, 0x96, 0x6c, 0xfd, 0x8d, 0x14, 0xd1, 0xc3, 0xb8, 0x94, 0x6d, 0xa0, 0x04, 0x2b,
+ 0x73, 0x12, 0xd4, 0xfd, 0xfb, 0x70, 0x0b, 0x0b, 0x23, 0x81, 0x0c, 0xe9, 0x16, 0x46, 0x0a, 0x38,
+ 0x4c, 0xb7, 0xb0, 0x41, 0x04, 0x8c, 0xe1, 0x3e, 0xfa, 0x3c, 0xdb, 0x95, 0x27, 0x3e, 0x93, 0xf0,
+ 0xaf, 0xb3, 0xa9, 0x8f, 0xb6, 0xdf, 0xcb, 0x24, 0xf2, 0x63, 0x26, 0x74, 0xc5, 0x0f, 0xb7, 0x49,
+ 0x3c, 0x93, 0xe3, 0x8a, 0x1b, 0xc3, 0xfa, 0x4f, 0x96, 0xf8, 0x94, 0x9f, 0xb7, 0x5a, 0xde, 0xf6,
+ 0x88, 0x4e, 0x66, 0x5c, 0xc2, 0x65, 0xf9, 0x17, 0x1b, 0x93, 0x17, 0xf8, 0x2f, 0x99, 0x44, 0xa1,
+ 0xa0, 0x02, 0x96, 0x10, 0xb2, 0x22, 0x58, 0x9c, 0x20, 0x80, 0x53, 0x6c, 0x79, 0x63, 0x94, 0xe8,
+ 0x73, 0x56, 0x0b, 0x39, 0x8f, 0x40, 0x89, 0x26, 0x74, 0x8d, 0x4e, 0xa2, 0xe3, 0x8a, 0xfb, 0x77,
+ 0x2a, 0xd1, 0x01, 0x4b, 0x46, 0x24, 0xd1, 0xb1, 0xe5, 0xa5, 0xcf, 0xe3, 0xd7, 0xcc, 0xb0, 0x09,
+ 0xd1, 0xaa, 0x65, 0x5f, 0x84, 0xff, 0x54, 0xf0, 0xaf, 0x54, 0x3e, 0x6f, 0x79, 0xdb, 0x2c, 0xa6,
+ 0xcb, 0xef, 0x49, 0xdf, 0x71, 0x32, 0x44, 0xdc, 0x16, 0x31, 0x2c, 0x54, 0x7e, 0x5f, 0x58, 0xa8,
+ 0x12, 0x98, 0xb5, 0x6c, 0x0f, 0xb9, 0xb6, 0xd9, 0x5e, 0x6a, 0x9b, 0x5b, 0xdd, 0x53, 0x13, 0x7d,
+ 0x2f, 0xa1, 0xab, 0x70, 0x79, 0x74, 0xf1, 0x0f, 0xfe, 0xe2, 0xc9, 0x49, 0xf1, 0x02, 0xfd, 0x88,
+ 0x28, 0x56, 0x53, 0xd1, 0x51, 0xac, 0x82, 0x28, 0x55, 0x60, 0x70, 0x90, 0x6b, 0x59, 0x1b, 0x37,
+ 0x61, 0xd8, 0xbe, 0x5b, 0x25, 0xa3, 0xa9, 0x05, 0x21, 0x1c, 0x7f, 0x55, 0x49, 0xb4, 0x4a, 0x87,
+ 0x05, 0x61, 0xbe, 0x57, 0x08, 0x12, 0x5b, 0xa8, 0x7c, 0xe3, 0x95, 0x9e, 0xc6, 0x07, 0x26, 0x4f,
+ 0x4e, 0xc2, 0xe4, 0xe1, 0x85, 0x2a, 0x2f, 0x27, 0x54, 0x49, 0x16, 0xfd, 0x64, 0x5a, 0x3b, 0x86,
+ 0x53, 0x45, 0x79, 0x70, 0xcc, 0x8f, 0x5a, 0xdb, 0xe9, 0x20, 0xd3, 0x35, 0xed, 0x26, 0x82, 0x0f,
+ 0x65, 0x47, 0x61, 0xf6, 0x2e, 0x81, 0x49, 0xab, 0xe9, 0xd8, 0x75, 0xeb, 0x39, 0xfe, 0x25, 0x71,
+ 0xf1, 0xc1, 0xd2, 0x09, 0x47, 0x2a, 0xec, 0x0f, 0x3d, 0xf8, 0x57, 0xad, 0x80, 0xa9, 0xa6, 0xe9,
+ 0xb6, 0x68, 0x30, 0xbd, 0x7c, 0xcf, 0x85, 0x4c, 0x91, 0x05, 0x95, 0xfd, 0x5f, 0xf4, 0xf0, 0x6f,
+ 0xb5, 0x26, 0x32, 0xb1, 0xd0, 0x13, 0x95, 0x23, 0xb2, 0xb0, 0xc5, 0xf0, 0x27, 0x81, 0xe7, 0x98,
+ 0x3b, 0x2e, 0x6a, 0x93, 0xdb, 0xe3, 0x69, 0x0f, 0x31, 0xa5, 0x87, 0x09, 0x49, 0xa7, 0xf9, 0xa4,
+ 0xaa, 0x7d, 0x68, 0x8c, 0x7b, 0x9a, 0x2f, 0x45, 0x45, 0xfa, 0x92, 0xf9, 0xee, 0x02, 0x98, 0xa5,
+ 0xbd, 0x1a, 0x63, 0x27, 0xfc, 0x39, 0x72, 0xf9, 0xb3, 0x77, 0x1f, 0xba, 0x02, 0xeb, 0x07, 0x1f,
+ 0x93, 0x8b, 0x40, 0xb9, 0x18, 0x04, 0x0e, 0xc4, 0x8f, 0x49, 0xf7, 0xdf, 0x7d, 0xba, 0xe6, 0x29,
+ 0x4d, 0xe3, 0xde, 0x7f, 0x8f, 0xaf, 0x3e, 0x7d, 0x7c, 0x7e, 0x51, 0x01, 0x4a, 0xa9, 0xd5, 0x82,
+ 0xcd, 0x83, 0x43, 0x71, 0x06, 0x4c, 0xfb, 0x3a, 0x13, 0xc6, 0x72, 0xe4, 0x93, 0x92, 0x2e, 0x66,
+ 0x06, 0xbc, 0x29, 0xb5, 0xc6, 0xbe, 0x3b, 0x10, 0x53, 0x77, 0xfa, 0xa0, 0xfc, 0xf2, 0x04, 0x53,
+ 0x9a, 0x05, 0xc7, 0xb9, 0x48, 0x8e, 0xbc, 0x3c, 0xa8, 0x80, 0xfc, 0x12, 0xf2, 0x9a, 0xdb, 0x23,
+ 0xd2, 0x99, 0x5d, 0xb7, 0xed, 0xeb, 0xcc, 0xbe, 0x9b, 0xec, 0x07, 0xdb, 0xb0, 0x3e, 0x59, 0xf3,
+ 0x84, 0xa4, 0x71, 0x47, 0x69, 0x8e, 0xad, 0x3d, 0x7d, 0x70, 0xfe, 0x45, 0x01, 0x73, 0xc1, 0x0a,
+ 0x17, 0xc5, 0xe4, 0x17, 0x1e, 0x71, 0xeb, 0x96, 0xf0, 0x0b, 0xc9, 0x42, 0x9d, 0x05, 0x3c, 0x15,
+ 0x5b, 0x96, 0xf2, 0xc2, 0x62, 0x82, 0x20, 0x68, 0x72, 0x04, 0x8e, 0x61, 0x06, 0xaf, 0x80, 0x49,
+ 0x42, 0xd0, 0xa2, 0xb5, 0x47, 0x5c, 0x00, 0x85, 0x85, 0xc6, 0x9f, 0x1e, 0xc9, 0x42, 0xe3, 0x5d,
+ 0xe2, 0x42, 0xa3, 0x64, 0xe4, 0x62, 0x7f, 0x9d, 0x31, 0xa1, 0x4f, 0x0c, 0xfe, 0x7f, 0xe4, 0xcb,
+ 0x8c, 0x09, 0x7c, 0x62, 0x06, 0xd4, 0x9f, 0x3e, 0xa2, 0x9f, 0x6a, 0xb0, 0xce, 0xd6, 0xdf, 0x18,
+ 0x85, 0xff, 0xed, 0x18, 0xc8, 0x9d, 0xc3, 0x0f, 0xff, 0x33, 0xbc, 0xd9, 0xea, 0x95, 0x23, 0x08,
+ 0xb2, 0xf0, 0x0c, 0x90, 0xc3, 0xe5, 0xb3, 0x69, 0xcb, 0xcd, 0x72, 0xbb, 0xb4, 0x98, 0x10, 0x9d,
+ 0xfc, 0xa7, 0x9e, 0x04, 0x85, 0xae, 0xb3, 0xeb, 0x36, 0xb1, 0xf9, 0x8c, 0x25, 0x86, 0xbd, 0x25,
+ 0x0d, 0x2e, 0x2a, 0x14, 0x3d, 0x3f, 0x3a, 0xd7, 0x4f, 0xee, 0xa2, 0x23, 0x45, 0xb8, 0xe8, 0x28,
+ 0xc1, 0xfe, 0x81, 0x04, 0x6d, 0xe9, 0x4b, 0xc4, 0x5f, 0x93, 0x3b, 0xff, 0x5a, 0xa3, 0x82, 0x3d,
+ 0x82, 0x2d, 0x07, 0x15, 0x87, 0xa4, 0x8e, 0xdb, 0x22, 0x6b, 0x83, 0x78, 0xee, 0x63, 0x75, 0xdc,
+ 0x96, 0xa0, 0x61, 0x2c, 0xa7, 0xcd, 0x0b, 0xcc, 0xd9, 0xf4, 0xfe, 0x51, 0xa2, 0x9b, 0x13, 0x84,
+ 0xfe, 0x40, 0xe8, 0x8c, 0xd0, 0x09, 0x75, 0x68, 0x74, 0x0e, 0xc9, 0x0d, 0xf5, 0x8f, 0x14, 0x12,
+ 0xd1, 0xd2, 0x37, 0x72, 0xe4, 0x2f, 0x2c, 0x4a, 0x0c, 0x11, 0x1e, 0x83, 0x85, 0x78, 0xce, 0xb3,
+ 0xc3, 0x87, 0xf8, 0x16, 0x59, 0xc7, 0xd1, 0x3f, 0xee, 0x10, 0xdf, 0xb2, 0x84, 0xa4, 0x0f, 0xe4,
+ 0x9b, 0xe8, 0x05, 0x61, 0xa5, 0xa6, 0x67, 0xed, 0x8d, 0x58, 0xd3, 0xc4, 0xe1, 0x25, 0x61, 0x54,
+ 0xdf, 0x7d, 0x1c, 0xa2, 0x14, 0x8e, 0x3b, 0xaa, 0xaf, 0x1c, 0x19, 0x63, 0x38, 0x8e, 0x0e, 0x30,
+ 0xf7, 0xd8, 0xda, 0xcc, 0x5b, 0xd8, 0x6a, 0x00, 0x3a, 0x38, 0x5a, 0x67, 0xc1, 0x0c, 0x37, 0xf5,
+ 0xf7, 0x2f, 0x9e, 0x11, 0xd2, 0x92, 0x1e, 0x58, 0x0f, 0x58, 0x36, 0xf2, 0x85, 0x81, 0x04, 0x0b,
+ 0xbe, 0x32, 0x44, 0x8c, 0xe5, 0x5e, 0x37, 0x7f, 0x0c, 0x1b, 0x13, 0x56, 0xbf, 0xc7, 0x63, 0x55,
+ 0x13, 0xb1, 0xba, 0x43, 0x86, 0x4d, 0x72, 0x63, 0x9a, 0xd4, 0xbc, 0xf1, 0x5d, 0x01, 0x5c, 0xba,
+ 0x00, 0xd7, 0x33, 0x86, 0xa6, 0x23, 0x7d, 0xc4, 0xde, 0xaa, 0xd0, 0xcb, 0x9d, 0x4a, 0x7b, 0xa6,
+ 0xd5, 0x26, 0x51, 0x06, 0x46, 0x70, 0x39, 0xf1, 0x9f, 0xf3, 0xa0, 0x9c, 0x13, 0x41, 0xb9, 0x57,
+ 0x86, 0x19, 0x02, 0x45, 0x11, 0xd8, 0x3c, 0x99, 0x5f, 0x1c, 0xa7, 0x21, 0x86, 0xaf, 0xee, 0x0d,
+ 0xe7, 0xc7, 0xbe, 0xf3, 0xab, 0xe6, 0xbf, 0x1d, 0x80, 0x74, 0xbf, 0x00, 0x92, 0x76, 0x50, 0xba,
+ 0xd2, 0xc7, 0xea, 0x55, 0x74, 0xe8, 0xaa, 0xd3, 0xe9, 0xd5, 0x68, 0x86, 0x2e, 0x36, 0x73, 0x53,
+ 0x84, 0x99, 0x5b, 0xc2, 0x33, 0x0e, 0xa1, 0xeb, 0xae, 0x4f, 0xdc, 0x20, 0x75, 0xca, 0x8d, 0xf8,
+ 0x8c, 0xc3, 0x40, 0x0a, 0xd2, 0x07, 0xe7, 0x1f, 0x14, 0x00, 0x96, 0x5d, 0x67, 0xb7, 0x53, 0x73,
+ 0x5b, 0xc8, 0x85, 0x7f, 0x1b, 0x4e, 0xd6, 0x5e, 0x36, 0x82, 0xc9, 0xda, 0x3a, 0x00, 0x5b, 0x41,
+ 0xe1, 0xac, 0x37, 0x7a, 0x82, 0xdc, 0xd4, 0x2c, 0x24, 0x4a, 0xe7, 0xca, 0x10, 0xaf, 0xf9, 0x7d,
+ 0x96, 0x88, 0x71, 0xdc, 0xf8, 0x12, 0x16, 0x37, 0xca, 0xc9, 0xda, 0x7b, 0x02, 0xac, 0x0d, 0x01,
+ 0xeb, 0x7b, 0x0f, 0x40, 0x49, 0xfa, 0x98, 0xff, 0xe3, 0x04, 0x98, 0xa6, 0x5b, 0xab, 0x94, 0xa7,
+ 0x7f, 0x1f, 0x82, 0xfe, 0xcb, 0x23, 0x00, 0x7d, 0x03, 0xcc, 0x38, 0x61, 0xe9, 0x74, 0xfc, 0xe3,
+ 0x17, 0xcb, 0x62, 0x61, 0xe7, 0xe8, 0xd2, 0x85, 0x62, 0xe0, 0x47, 0x79, 0xe4, 0x75, 0x11, 0xf9,
+ 0xbb, 0x62, 0xf8, 0xcd, 0x95, 0x38, 0x4a, 0xe8, 0xdf, 0x1b, 0x40, 0xbf, 0x21, 0x40, 0x5f, 0x3a,
+ 0x08, 0x29, 0x63, 0xb8, 0xe2, 0x40, 0x01, 0x39, 0x72, 0x22, 0xf1, 0x37, 0x52, 0x5c, 0x8b, 0x39,
+ 0x05, 0x26, 0x88, 0xca, 0x06, 0x73, 0x44, 0xff, 0x15, 0x7f, 0x31, 0x37, 0x3d, 0xe4, 0x06, 0xde,
+ 0x25, 0xfe, 0x2b, 0xa6, 0xc1, 0xf7, 0x04, 0xef, 0x9e, 0x2a, 0xd0, 0x4d, 0xe3, 0x20, 0x61, 0xe8,
+ 0x09, 0x24, 0xcf, 0xf1, 0x91, 0x9d, 0x51, 0x1c, 0x66, 0x02, 0x39, 0x80, 0x90, 0xf4, 0x81, 0xff,
+ 0x62, 0x0e, 0x9c, 0xa2, 0x2b, 0x80, 0x4b, 0xae, 0xb3, 0xd3, 0x73, 0xa3, 0x98, 0x75, 0x70, 0x59,
+ 0xb8, 0x11, 0xcc, 0x79, 0x82, 0x0f, 0x3c, 0x93, 0x89, 0x9e, 0x54, 0xf8, 0x59, 0xde, 0xff, 0xe5,
+ 0xd9, 0x22, 0x92, 0x0b, 0x31, 0x0c, 0x8c, 0xa2, 0x3d, 0xf1, 0xa6, 0x8a, 0x24, 0xa1, 0xdc, 0x82,
+ 0xa2, 0x32, 0xd4, 0xfa, 0x72, 0x20, 0x53, 0x79, 0x19, 0x99, 0xfa, 0x50, 0x20, 0x53, 0x3f, 0x2e,
+ 0xc8, 0xd4, 0xf2, 0xc1, 0x59, 0x92, 0xbe, 0x6c, 0xbd, 0x2e, 0xd8, 0xc4, 0x0b, 0xb6, 0x58, 0x77,
+ 0x52, 0xd8, 0x58, 0xe5, 0x7d, 0xc7, 0x72, 0x82, 0xef, 0x98, 0x78, 0x07, 0x48, 0x82, 0x55, 0x0b,
+ 0x91, 0xea, 0x08, 0x59, 0x9a, 0x03, 0x59, 0xcb, 0xa7, 0x2e, 0x6b, 0xb5, 0x86, 0x5a, 0x97, 0x88,
+ 0xad, 0x68, 0x0c, 0xeb, 0x80, 0x73, 0xa0, 0xb0, 0x64, 0xb5, 0x3d, 0xe4, 0xc2, 0x2f, 0xb3, 0x55,
+ 0x89, 0xd7, 0xa5, 0x38, 0x00, 0x2c, 0x82, 0xc2, 0x26, 0xa9, 0x8d, 0x99, 0xcc, 0xb7, 0xc8, 0x69,
+ 0x0f, 0xa5, 0x50, 0x67, 0xff, 0x26, 0x8d, 0x88, 0xd8, 0x53, 0xcc, 0xc8, 0x96, 0x33, 0x12, 0x44,
+ 0x44, 0x1c, 0x4c, 0xc2, 0x58, 0x2e, 0x03, 0x2b, 0xe8, 0x68, 0x07, 0x8f, 0xf1, 0x17, 0xd3, 0x43,
+ 0xb8, 0x08, 0x14, 0xab, 0xd5, 0x25, 0x9d, 0xe3, 0x94, 0x8e, 0x1f, 0x93, 0xfa, 0x75, 0xf5, 0xb2,
+ 0x8a, 0x92, 0x3c, 0x6e, 0xbf, 0x2e, 0x29, 0x2a, 0xd2, 0xc7, 0xec, 0x7b, 0xc4, 0xa9, 0xb7, 0xd3,
+ 0x36, 0x9b, 0x08, 0x53, 0x9f, 0x1a, 0x6a, 0xb4, 0x27, 0xcb, 0xf9, 0x3d, 0x19, 0xa7, 0xa7, 0xf9,
+ 0x03, 0xe8, 0xe9, 0xb0, 0x4b, 0xc6, 0x01, 0xcf, 0x49, 0xc3, 0x0f, 0x6d, 0xc9, 0x38, 0x96, 0x8c,
+ 0x31, 0x5c, 0xf5, 0xea, 0x1f, 0x5e, 0x1e, 0xab, 0xb6, 0x0e, 0xbb, 0xa1, 0xc6, 0x98, 0x35, 0xb2,
+ 0x83, 0xca, 0xc3, 0x6c, 0xa8, 0x45, 0xd3, 0x30, 0x06, 0xb4, 0xe6, 0x18, 0x5a, 0x9f, 0x67, 0xc3,
+ 0x68, 0xca, 0x7b, 0xda, 0x5d, 0xc7, 0xf5, 0x92, 0xed, 0x69, 0x63, 0xea, 0x74, 0xf2, 0x5f, 0xd2,
+ 0x43, 0x72, 0xe2, 0x59, 0xf6, 0x51, 0x0d, 0x9f, 0x09, 0x0e, 0xc9, 0x0d, 0x22, 0x20, 0x7d, 0x78,
+ 0xdf, 0x7e, 0x48, 0x83, 0xe7, 0xb0, 0xea, 0xc8, 0x74, 0x60, 0x64, 0x43, 0xe7, 0x30, 0xea, 0x18,
+ 0x4d, 0x43, 0xfa, 0x78, 0x7d, 0x9b, 0x1b, 0x38, 0xdf, 0x3a, 0xc6, 0x81, 0xd3, 0xd7, 0xcc, 0xfc,
+ 0x90, 0x9a, 0x39, 0xec, 0x5e, 0x1d, 0xe3, 0xf5, 0xe8, 0x06, 0xcc, 0x61, 0xf6, 0xea, 0x62, 0x88,
+ 0x48, 0x1f, 0xf1, 0xb7, 0x29, 0x20, 0x5f, 0x1f, 0xff, 0x78, 0x39, 0xec, 0x5c, 0x84, 0xf0, 0xaa,
+ 0x3e, 0xb2, 0xe1, 0x72, 0x98, 0xb9, 0x48, 0x24, 0x09, 0x63, 0xb8, 0xec, 0xe0, 0x28, 0x98, 0x21,
+ 0x4b, 0x22, 0xfe, 0x96, 0xf8, 0xb7, 0xd9, 0xa8, 0xf9, 0xe6, 0x14, 0x75, 0xf5, 0x99, 0x60, 0xd2,
+ 0xdf, 0x37, 0x63, 0x23, 0xe7, 0xbc, 0x9c, 0x7e, 0x06, 0xfb, 0x6e, 0xc1, 0xff, 0x07, 0x72, 0x5c,
+ 0x19, 0xf9, 0xbe, 0xfa, 0xb0, 0x8e, 0x2b, 0x87, 0xba, 0xb7, 0xfe, 0x67, 0xe1, 0x88, 0xfa, 0x1f,
+ 0xd3, 0xc3, 0xbc, 0x77, 0xcf, 0x3d, 0xd7, 0x67, 0xcf, 0xfd, 0x21, 0x1e, 0xcb, 0xba, 0x88, 0xe5,
+ 0xdd, 0xb2, 0x2c, 0x1c, 0xe1, 0x58, 0xfb, 0xbe, 0x00, 0xce, 0x73, 0x02, 0x9c, 0x0b, 0x07, 0xa2,
+ 0x65, 0x0c, 0x87, 0x54, 0x73, 0xe1, 0x98, 0xfb, 0xf1, 0x14, 0xf5, 0xb8, 0xe7, 0x04, 0x4c, 0x6e,
+ 0xdf, 0x09, 0x18, 0x41, 0xd3, 0xf3, 0x07, 0xd4, 0xf4, 0x8f, 0xf3, 0xd2, 0x61, 0x88, 0xd2, 0xf1,
+ 0x0c, 0x79, 0x44, 0x46, 0x37, 0x32, 0xbf, 0x3f, 0x10, 0x8f, 0xf3, 0x82, 0x78, 0x94, 0x0f, 0x46,
+ 0x4c, 0xfa, 0xf2, 0xf1, 0xc7, 0xfe, 0x84, 0xf6, 0x90, 0xf5, 0x7d, 0xd8, 0xad, 0x62, 0x81, 0x89,
+ 0x23, 0x1b, 0xb9, 0x87, 0xd9, 0x2a, 0x1e, 0x44, 0xc9, 0x18, 0xe2, 0xdf, 0xcd, 0x82, 0x69, 0x42,
+ 0xd3, 0x79, 0xab, 0xb5, 0x85, 0x3c, 0xf8, 0xab, 0xd4, 0x9f, 0xd4, 0x8f, 0x36, 0x3a, 0xa2, 0x90,
+ 0x50, 0x51, 0x67, 0x93, 0x93, 0x7a, 0x74, 0x50, 0x22, 0xe7, 0x39, 0x02, 0xc7, 0x1d, 0xb5, 0x72,
+ 0x20, 0x05, 0xe9, 0x43, 0xf6, 0x51, 0xea, 0x6e, 0xb3, 0x6a, 0x5e, 0x71, 0x76, 0x3d, 0xf8, 0xfc,
+ 0x11, 0x74, 0xd0, 0x0b, 0xa0, 0xd0, 0x26, 0xa5, 0xb1, 0x23, 0x34, 0xf1, 0xd3, 0x1d, 0xc6, 0x02,
+ 0x5a, 0xbf, 0xce, 0xfe, 0x4c, 0x7a, 0x8e, 0x26, 0xe4, 0x23, 0x2d, 0x67, 0xdc, 0xe7, 0x68, 0x06,
+ 0xd4, 0x3f, 0x96, 0x7b, 0x8d, 0x26, 0x71, 0xed, 0xd6, 0x8e, 0xe5, 0x8d, 0x28, 0xda, 0x46, 0x1b,
+ 0x97, 0xe5, 0x47, 0xdb, 0x20, 0x2f, 0x49, 0x4f, 0xf7, 0x72, 0x5c, 0xc1, 0xbf, 0x8f, 0xfb, 0x74,
+ 0x6f, 0x7c, 0xf5, 0xe9, 0x63, 0xf2, 0x5f, 0xa8, 0x66, 0x9d, 0xa3, 0x8e, 0xd2, 0x29, 0xfa, 0x60,
+ 0x0f, 0xad, 0x2c, 0x94, 0xb4, 0xc3, 0x53, 0x96, 0xbe, 0xf5, 0xa7, 0x0f, 0xcc, 0xa7, 0x4f, 0x83,
+ 0xfc, 0x22, 0xba, 0xb0, 0xbb, 0x05, 0xef, 0x02, 0x93, 0x86, 0x8b, 0x50, 0xc5, 0xde, 0x74, 0x30,
+ 0x77, 0x3d, 0xfc, 0xec, 0x43, 0xc2, 0xde, 0x30, 0x1e, 0xdb, 0xc8, 0x6c, 0x85, 0x67, 0x05, 0xfd,
+ 0x57, 0xf8, 0xca, 0x2c, 0xc8, 0xd5, 0x3d, 0xd3, 0x83, 0x53, 0x01, 0xb6, 0xf0, 0xf9, 0x3c, 0x16,
+ 0x77, 0x89, 0x58, 0xdc, 0x28, 0xf0, 0x82, 0x50, 0x30, 0x8f, 0xff, 0x8f, 0x00, 0x00, 0x82, 0xc9,
+ 0x07, 0xba, 0x8e, 0x8d, 0x73, 0xf8, 0xc7, 0x55, 0xfd, 0x77, 0xf8, 0xda, 0x80, 0xdd, 0xf7, 0x08,
+ 0xec, 0x7e, 0x9c, 0x5c, 0x15, 0x63, 0x58, 0x69, 0xcb, 0x82, 0x29, 0xcc, 0xda, 0x15, 0x64, 0xb6,
+ 0xba, 0xf0, 0x31, 0xa1, 0xf0, 0x47, 0xb0, 0x19, 0x7e, 0x58, 0x3a, 0x00, 0x2a, 0x6d, 0x55, 0x50,
+ 0x78, 0xb4, 0x47, 0x87, 0xbf, 0xf9, 0x9f, 0x15, 0x03, 0xc7, 0xdc, 0x0a, 0x72, 0x96, 0xbd, 0xe9,
+ 0x30, 0xff, 0xc2, 0x47, 0x45, 0x94, 0x8d, 0x65, 0x42, 0x27, 0x19, 0x25, 0xa3, 0xa3, 0xc6, 0x93,
+ 0x35, 0x96, 0x8b, 0x06, 0x73, 0xb8, 0x76, 0xf8, 0x7f, 0x0d, 0x64, 0xb6, 0xaa, 0x82, 0x5c, 0xc7,
+ 0xf4, 0xb6, 0x59, 0xd5, 0xe4, 0x19, 0xdb, 0xc8, 0xbb, 0xb6, 0x69, 0x3b, 0xf6, 0x95, 0x1d, 0xeb,
+ 0x39, 0xc1, 0x7d, 0xc6, 0x42, 0x1a, 0xa6, 0x7c, 0x0b, 0xd9, 0xc8, 0x35, 0x3d, 0x54, 0xdf, 0xdb,
+ 0x22, 0x73, 0xac, 0x49, 0x9d, 0x4f, 0x4a, 0x2c, 0xff, 0x98, 0xe2, 0x68, 0xf9, 0xdf, 0xb4, 0xda,
+ 0x88, 0x44, 0xd5, 0x62, 0xf2, 0xef, 0xbf, 0x27, 0x92, 0xff, 0x3e, 0x55, 0xa4, 0x8f, 0xc6, 0xf7,
+ 0xb3, 0x60, 0xa6, 0x8e, 0x05, 0xae, 0xbe, 0xbb, 0xb3, 0x63, 0xba, 0x57, 0xe0, 0xf5, 0x21, 0x2a,
+ 0x9c, 0x68, 0x66, 0x44, 0xbf, 0x94, 0x3f, 0x92, 0xbe, 0xca, 0x9b, 0xa9, 0x36, 0x57, 0x43, 0x62,
+ 0x3d, 0x78, 0x22, 0xc8, 0x63, 0xf1, 0xf6, 0x3d, 0x2e, 0x63, 0x15, 0x81, 0xe6, 0x94, 0x8c, 0x3e,
+ 0x36, 0x90, 0xb6, 0x31, 0x44, 0x3e, 0xc9, 0x82, 0xa3, 0x75, 0xcf, 0x6c, 0x5e, 0x5c, 0x76, 0x5c,
+ 0x67, 0xd7, 0xb3, 0x6c, 0xd4, 0x85, 0x8f, 0x0e, 0x11, 0xf0, 0xe5, 0x3f, 0x13, 0xca, 0x3f, 0xfc,
+ 0xd7, 0x8c, 0xec, 0x28, 0x1a, 0x74, 0xab, 0x7c, 0xf1, 0x11, 0xc1, 0xc4, 0xe4, 0xc6, 0x45, 0x99,
+ 0x12, 0xc7, 0x72, 0x4a, 0xa2, 0xa8, 0x5d, 0xee, 0x38, 0xae, 0xb7, 0xea, 0x34, 0xcd, 0x76, 0xd7,
+ 0x73, 0x5c, 0x04, 0x6b, 0xb1, 0x5c, 0xc3, 0x3d, 0x4c, 0xcb, 0x69, 0x86, 0x83, 0x23, 0x7b, 0xe3,
+ 0xc5, 0x4e, 0x11, 0x65, 0xfc, 0xa3, 0xd2, 0xbb, 0x8c, 0x94, 0x2b, 0xbd, 0x14, 0x45, 0xc8, 0x79,
+ 0xbf, 0x2e, 0x2d, 0xd9, 0xc1, 0x16, 0xb9, 0x9d, 0x47, 0x29, 0xa2, 0xc6, 0xb0, 0x54, 0x9e, 0x05,
+ 0xb3, 0xf5, 0xdd, 0x0b, 0x41, 0x21, 0x5d, 0xde, 0x08, 0x79, 0xbd, 0x74, 0x44, 0x11, 0x26, 0x78,
+ 0x7c, 0x41, 0x11, 0xfc, 0xbd, 0x01, 0xcc, 0x76, 0xf9, 0x6c, 0x0c, 0x6f, 0x31, 0x51, 0x32, 0x92,
+ 0xc8, 0xe0, 0x5a, 0xd3, 0x67, 0xe0, 0xfb, 0xb3, 0x60, 0xb6, 0xd6, 0x41, 0x36, 0x6a, 0x51, 0x2f,
+ 0x48, 0x81, 0x81, 0xaf, 0x4c, 0xc8, 0x40, 0xa1, 0xa0, 0x08, 0x06, 0x86, 0x1e, 0xcb, 0x8b, 0x3e,
+ 0xf3, 0xc2, 0x84, 0x44, 0x8c, 0x8b, 0xab, 0x2d, 0x7d, 0xc6, 0x7d, 0x29, 0x0b, 0xa6, 0xf5, 0x5d,
+ 0x7b, 0xdd, 0x75, 0xf0, 0x68, 0xec, 0xc2, 0xbb, 0xc3, 0x0e, 0xe2, 0x16, 0x70, 0xac, 0xb5, 0xeb,
+ 0x92, 0xf5, 0xa7, 0x8a, 0x5d, 0x47, 0x4d, 0xc7, 0x6e, 0x75, 0x49, 0x3b, 0xf2, 0xfa, 0xfe, 0x0f,
+ 0x77, 0xe6, 0x1e, 0xfc, 0x86, 0x92, 0x81, 0x3f, 0x27, 0x1d, 0x96, 0x88, 0x36, 0x9e, 0xab, 0x5a,
+ 0xbe, 0x27, 0x90, 0x0c, 0x3e, 0x34, 0xa8, 0x86, 0xf4, 0x99, 0xfb, 0xf9, 0x2c, 0x50, 0x4b, 0xcd,
+ 0xa6, 0xb3, 0x6b, 0x7b, 0x75, 0xd4, 0x46, 0x4d, 0xcf, 0x70, 0xcd, 0x26, 0xe2, 0xed, 0xe7, 0x22,
+ 0x50, 0x5a, 0x96, 0xcb, 0xfa, 0x60, 0xfc, 0xc8, 0xf8, 0xf8, 0x4a, 0xe9, 0x1d, 0x47, 0xda, 0xca,
+ 0xfd, 0xb5, 0x24, 0x60, 0xa7, 0xdc, 0xbe, 0xa2, 0x64, 0x45, 0x63, 0xb8, 0x79, 0x27, 0x0b, 0x72,
+ 0xeb, 0x96, 0xbd, 0xc5, 0xc7, 0x6f, 0x3a, 0x8e, 0xad, 0x9f, 0x16, 0xba, 0xcc, 0xe4, 0x93, 0xbe,
+ 0xa8, 0xb7, 0x81, 0xe3, 0xf6, 0xee, 0xce, 0x05, 0xe4, 0xd6, 0x36, 0xc9, 0xd8, 0xd0, 0x35, 0x9c,
+ 0x3a, 0xb2, 0xa9, 0xe9, 0x94, 0xd7, 0xfb, 0x7e, 0x13, 0x0d, 0x07, 0x09, 0x93, 0x17, 0x53, 0x12,
+ 0xc1, 0xeb, 0x80, 0xa8, 0x2c, 0x47, 0x54, 0x22, 0x63, 0xb7, 0x4f, 0xe1, 0xe9, 0xf3, 0xf7, 0xeb,
+ 0x59, 0x30, 0xb1, 0x86, 0x3c, 0xd7, 0x6a, 0x76, 0xe1, 0xc3, 0x78, 0x60, 0x42, 0xde, 0xba, 0xe9,
+ 0x9a, 0x3b, 0xc8, 0x43, 0x6e, 0x17, 0x6a, 0x21, 0xd3, 0x21, 0x98, 0xec, 0xb4, 0x4d, 0x6f, 0xd3,
+ 0x71, 0x77, 0x98, 0x04, 0x07, 0xef, 0xd8, 0x62, 0xd8, 0x43, 0x6e, 0x37, 0x24, 0xcb, 0x7f, 0x65,
+ 0x02, 0x2e, 0x6f, 0x9f, 0x31, 0x52, 0xe6, 0x05, 0x32, 0x0e, 0x64, 0x9f, 0xc9, 0x94, 0x38, 0x96,
+ 0xdb, 0x65, 0x94, 0x55, 0x67, 0x0b, 0xbe, 0x5a, 0x01, 0x39, 0x22, 0x79, 0x6f, 0xcb, 0x08, 0x93,
+ 0x8a, 0x1d, 0xd4, 0xed, 0x9a, 0x5b, 0xc8, 0x9f, 0x54, 0xb0, 0x57, 0xf5, 0x0e, 0x90, 0x6f, 0xa3,
+ 0x3d, 0xd4, 0x26, 0x64, 0xcc, 0xdd, 0x76, 0xbd, 0xd0, 0xb2, 0x55, 0x67, 0x6b, 0x1e, 0x97, 0x35,
+ 0xcf, 0xca, 0x99, 0x5f, 0xc5, 0x59, 0x75, 0xfa, 0xc7, 0xd9, 0x67, 0x82, 0x3c, 0x79, 0x57, 0xa7,
+ 0x40, 0x7e, 0x51, 0x5b, 0xd8, 0x58, 0x2e, 0x1e, 0xc1, 0x8f, 0x3e, 0x7d, 0x53, 0x20, 0xbf, 0x54,
+ 0x32, 0x4a, 0xab, 0xc5, 0x2c, 0x6e, 0x47, 0xa5, 0xba, 0x54, 0x2b, 0x2a, 0x38, 0x71, 0xbd, 0x54,
+ 0xad, 0x94, 0x8b, 0x39, 0x75, 0x1a, 0x4c, 0x9c, 0x2f, 0xe9, 0xd5, 0x4a, 0x75, 0xb9, 0x98, 0x87,
+ 0x7f, 0xc7, 0xe3, 0x77, 0xa7, 0x88, 0xdf, 0x0d, 0x51, 0x34, 0xf5, 0x83, 0xec, 0x57, 0x02, 0xc8,
+ 0xee, 0x16, 0x20, 0xfb, 0x51, 0x99, 0x42, 0xc6, 0x80, 0x52, 0x16, 0x4c, 0xac, 0xbb, 0x4e, 0x13,
+ 0x75, 0xbb, 0xf0, 0x15, 0x59, 0x50, 0x28, 0x9b, 0x76, 0x13, 0xb5, 0xe1, 0x35, 0x21, 0x54, 0xd4,
+ 0x3b, 0x28, 0x13, 0x1c, 0x10, 0xf8, 0x07, 0x9e, 0x33, 0xf7, 0x8a, 0x9c, 0xb9, 0x59, 0x68, 0x14,
+ 0x2b, 0x77, 0x9e, 0x96, 0x19, 0xc1, 0x9f, 0x37, 0x04, 0xfc, 0x29, 0x0b, 0xfc, 0xb9, 0x55, 0xbe,
+ 0xa8, 0xf4, 0xb9, 0xf4, 0xdd, 0x0c, 0x38, 0xbe, 0x8c, 0x6c, 0xe4, 0x5a, 0x4d, 0x4a, 0xbc, 0xdf,
+ 0xfe, 0xbb, 0xc5, 0xf6, 0xff, 0x88, 0x40, 0x74, 0xbf, 0x3f, 0xc4, 0xc6, 0xbf, 0x2e, 0x68, 0xfc,
+ 0xbd, 0x42, 0xe3, 0x6f, 0x91, 0x2c, 0x67, 0x0c, 0x57, 0xc9, 0x4e, 0x81, 0x99, 0xaa, 0xe3, 0x59,
+ 0x9b, 0x56, 0x93, 0x6e, 0x25, 0xbf, 0x4a, 0x01, 0xb9, 0x55, 0xab, 0xeb, 0xf1, 0x67, 0xd2, 0xcf,
+ 0x80, 0x69, 0xcb, 0x6e, 0xb6, 0x77, 0x5b, 0x48, 0x47, 0x26, 0x95, 0x95, 0x49, 0x9d, 0x4f, 0x0a,
+ 0x57, 0xe8, 0x31, 0x59, 0x8a, 0xbf, 0x42, 0xff, 0x69, 0x69, 0x6b, 0x8a, 0x27, 0x81, 0x9c, 0xf8,
+ 0x8e, 0x18, 0x92, 0x4a, 0x60, 0xd6, 0xe6, 0xb2, 0xfa, 0x87, 0xd0, 0x7b, 0x63, 0x38, 0xf3, 0xc5,
+ 0xe9, 0xe2, 0x1f, 0xf0, 0x83, 0x52, 0xc6, 0xd7, 0x20, 0x82, 0x92, 0x21, 0xb3, 0x94, 0x1c, 0x19,
+ 0x55, 0x05, 0x73, 0x95, 0xaa, 0xa1, 0xe9, 0xd5, 0xd2, 0x2a, 0xcb, 0xa2, 0xc0, 0xef, 0x67, 0x41,
+ 0x5e, 0x47, 0x9d, 0xf6, 0x15, 0x3e, 0x48, 0x27, 0xf3, 0xf7, 0xca, 0x04, 0xfe, 0x5e, 0xea, 0x12,
+ 0x00, 0x66, 0x13, 0x57, 0x4c, 0x6e, 0x23, 0xc9, 0xf6, 0x0d, 0x1d, 0x27, 0x34, 0xb0, 0x14, 0xe4,
+ 0xd6, 0xb9, 0x3f, 0xe1, 0x8b, 0xa5, 0x17, 0x80, 0x84, 0xd2, 0x08, 0x85, 0x11, 0xdd, 0xc1, 0x87,
+ 0xa4, 0xd6, 0x6c, 0x06, 0x16, 0x77, 0x38, 0xec, 0xff, 0x4a, 0x16, 0xe4, 0x0c, 0x3c, 0x23, 0xe3,
+ 0x26, 0x67, 0x9f, 0x1a, 0x4e, 0xc6, 0x71, 0x31, 0x11, 0x32, 0x7e, 0x0f, 0x98, 0xe1, 0x25, 0x96,
+ 0xed, 0x78, 0xc4, 0x8a, 0xb8, 0xf0, 0xc3, 0x30, 0x12, 0xde, 0x87, 0x9c, 0xc3, 0x61, 0xf1, 0x57,
+ 0x6f, 0x06, 0x60, 0x0d, 0x61, 0xbb, 0xb6, 0xbb, 0x6d, 0x75, 0xe0, 0x7f, 0x55, 0xc0, 0xd4, 0x32,
+ 0xf2, 0xea, 0x9e, 0xe9, 0xed, 0x76, 0x7b, 0x56, 0x2d, 0x6d, 0xa7, 0x6c, 0x36, 0xb7, 0x11, 0xeb,
+ 0x8e, 0xfc, 0x57, 0xf8, 0x5e, 0x45, 0x76, 0x5b, 0x30, 0xac, 0x67, 0x3e, 0xa8, 0x23, 0x02, 0x93,
+ 0xc7, 0x83, 0x5c, 0xcb, 0xf4, 0x4c, 0x86, 0xc5, 0x35, 0x3d, 0x58, 0x84, 0x05, 0xe9, 0x24, 0x1b,
+ 0xfc, 0xad, 0xac, 0xcc, 0xbe, 0xa0, 0x44, 0xfd, 0xc9, 0x40, 0xf8, 0x60, 0x66, 0x08, 0x14, 0x8e,
+ 0x81, 0xd9, 0x6a, 0xcd, 0x68, 0xac, 0xd6, 0x96, 0x97, 0x35, 0x9c, 0x5a, 0x54, 0xd4, 0x93, 0x40,
+ 0x5d, 0x2f, 0xdd, 0xbf, 0xa6, 0x55, 0x8d, 0x46, 0xb5, 0xb6, 0xa8, 0xb1, 0x3f, 0x73, 0xea, 0x51,
+ 0x30, 0x5d, 0x2e, 0x95, 0x57, 0xfc, 0x84, 0xbc, 0x7a, 0x0a, 0x1c, 0x5f, 0xd3, 0xd6, 0x16, 0x34,
+ 0xbd, 0xbe, 0x52, 0x59, 0x6f, 0xe0, 0x62, 0x96, 0x6a, 0x1b, 0xd5, 0xc5, 0x62, 0x41, 0x85, 0xe0,
+ 0x24, 0xf7, 0xe5, 0xbc, 0x5e, 0xab, 0x2e, 0x37, 0xea, 0x46, 0xc9, 0xd0, 0x8a, 0x13, 0xea, 0x55,
+ 0xe0, 0x68, 0xb9, 0x54, 0x25, 0xd9, 0xcb, 0xb5, 0x6a, 0x55, 0x2b, 0x1b, 0xc5, 0x49, 0xf8, 0xaf,
+ 0x39, 0x30, 0x5d, 0xe9, 0x56, 0xcd, 0x1d, 0x74, 0xce, 0x6c, 0x5b, 0x2d, 0xf8, 0x73, 0x9c, 0x35,
+ 0x79, 0x03, 0x98, 0x75, 0xe9, 0x23, 0x6a, 0x19, 0x16, 0xa2, 0x68, 0xce, 0xea, 0x62, 0xa2, 0x7a,
+ 0x12, 0x14, 0x6c, 0x52, 0x00, 0x63, 0x0d, 0x7b, 0x53, 0x17, 0x00, 0xa0, 0x4f, 0x46, 0x78, 0x2f,
+ 0xde, 0xd9, 0x5e, 0x6d, 0x32, 0x77, 0x50, 0x17, 0xb9, 0x7b, 0x56, 0x13, 0xf9, 0x39, 0x75, 0xee,
+ 0x2f, 0xf8, 0x55, 0x45, 0x76, 0x99, 0x90, 0x03, 0x95, 0x6b, 0x4e, 0x44, 0x6f, 0xf8, 0xb3, 0x8a,
+ 0xcc, 0x22, 0x9f, 0x54, 0x91, 0xc9, 0x24, 0xe5, 0xa5, 0xd9, 0x21, 0x24, 0x65, 0x16, 0x4c, 0x19,
+ 0xb5, 0x5a, 0xa3, 0xbe, 0x52, 0xd3, 0x8d, 0xa2, 0xa2, 0xce, 0x80, 0x49, 0xfc, 0xba, 0x5a, 0xab,
+ 0x2e, 0x17, 0x73, 0xea, 0x09, 0x70, 0x6c, 0xa5, 0x54, 0x6f, 0x54, 0xaa, 0xe7, 0x4a, 0xab, 0x95,
+ 0xc5, 0x46, 0x79, 0xa5, 0xa4, 0xd7, 0x8b, 0x79, 0xf5, 0x1a, 0x70, 0xc2, 0xa8, 0x68, 0x7a, 0x63,
+ 0x49, 0x2b, 0x19, 0x1b, 0xba, 0x56, 0x6f, 0x54, 0x6b, 0x8d, 0x6a, 0x69, 0x4d, 0x2b, 0x16, 0xb0,
+ 0xfa, 0x93, 0x4f, 0xa1, 0xd8, 0x4c, 0xec, 0x17, 0xc6, 0xc9, 0x08, 0x61, 0x9c, 0xea, 0x15, 0x46,
+ 0xc0, 0x8b, 0x95, 0xae, 0xd5, 0x35, 0xfd, 0x9c, 0x56, 0x9c, 0xee, 0x27, 0x6b, 0x33, 0xea, 0x71,
+ 0x50, 0xc4, 0x34, 0x34, 0x2a, 0x75, 0x3f, 0xe7, 0x62, 0x71, 0x16, 0x7e, 0xbc, 0x00, 0x4e, 0xea,
+ 0x68, 0xcb, 0xea, 0x7a, 0xc8, 0x5d, 0x37, 0xaf, 0xec, 0x20, 0xdb, 0xf3, 0x3b, 0xf9, 0xff, 0x95,
+ 0x58, 0x18, 0xd7, 0xc0, 0x6c, 0x87, 0x96, 0xb1, 0x86, 0xbc, 0x6d, 0xa7, 0xc5, 0x46, 0xe1, 0x1f,
+ 0x89, 0xec, 0x39, 0xe6, 0xd7, 0xf9, 0xec, 0xba, 0xf8, 0x37, 0x27, 0xdb, 0x4a, 0x8c, 0x6c, 0xe7,
+ 0x86, 0x91, 0x6d, 0xf5, 0x5a, 0x30, 0xb5, 0xdb, 0x45, 0xae, 0xb6, 0x63, 0x5a, 0x6d, 0xff, 0x5e,
+ 0xb3, 0x20, 0x01, 0xbe, 0x2b, 0x27, 0xeb, 0x78, 0xca, 0xb5, 0xa5, 0x3f, 0x1b, 0x23, 0xfa, 0xd6,
+ 0xd3, 0x00, 0xb0, 0xc6, 0x6e, 0xb8, 0x6d, 0x26, 0xac, 0x5c, 0x0a, 0xa6, 0xef, 0x82, 0xd5, 0x6e,
+ 0x5b, 0xf6, 0x56, 0xb0, 0x7c, 0x1f, 0x26, 0xc0, 0x97, 0x2a, 0x32, 0x8e, 0xa8, 0x49, 0x69, 0x4b,
+ 0xa6, 0x4d, 0x2f, 0xce, 0x8e, 0xb9, 0xdf, 0xdd, 0xaf, 0x3a, 0x05, 0xb5, 0x08, 0x66, 0x48, 0x1a,
+ 0xd3, 0xc0, 0xe2, 0x04, 0xee, 0x83, 0xfd, 0xe2, 0xd6, 0x34, 0x63, 0xa5, 0xb6, 0x18, 0x7c, 0x9b,
+ 0xc4, 0x45, 0x62, 0x62, 0x4a, 0xd5, 0xfb, 0x89, 0x36, 0x4e, 0xa9, 0x8f, 0x06, 0xd7, 0x70, 0x1d,
+ 0x76, 0x69, 0x55, 0xd7, 0x4a, 0x8b, 0xf7, 0x37, 0xb4, 0x67, 0x57, 0xea, 0x46, 0x5d, 0x54, 0x2e,
+ 0x5f, 0x8f, 0xa6, 0x31, 0xbd, 0xda, 0x5a, 0xa9, 0xb2, 0xca, 0xfa, 0xf7, 0xa5, 0x9a, 0xbe, 0x56,
+ 0x32, 0x8a, 0x33, 0xf0, 0xd5, 0x0a, 0x28, 0x2e, 0x23, 0x6f, 0xdd, 0x71, 0x3d, 0xb3, 0xbd, 0x6a,
+ 0xd9, 0x17, 0x37, 0xdc, 0x36, 0x6f, 0x33, 0xfd, 0x8b, 0xf4, 0x69, 0x5b, 0x71, 0x88, 0x14, 0x0a,
+ 0x8c, 0x5e, 0xd8, 0xee, 0x90, 0x6c, 0xa1, 0x30, 0x85, 0x09, 0xf0, 0xa7, 0xb3, 0x32, 0xa7, 0x6b,
+ 0xe5, 0x6b, 0x4d, 0x26, 0x27, 0xcf, 0x1d, 0xf7, 0xf8, 0xdc, 0x07, 0xb5, 0x02, 0x7c, 0x30, 0x07,
+ 0x26, 0x97, 0x2c, 0xdb, 0x6c, 0x5b, 0xcf, 0x11, 0x42, 0xc6, 0x85, 0x7d, 0x4c, 0x26, 0xa6, 0x8f,
+ 0xc9, 0x0e, 0x35, 0x7e, 0xfe, 0x92, 0x22, 0xbb, 0x85, 0xc1, 0xf1, 0xde, 0x27, 0x32, 0x62, 0xf0,
+ 0xfc, 0x83, 0xac, 0xcc, 0x26, 0xc5, 0xe0, 0xf2, 0x92, 0x61, 0xf8, 0xc9, 0x1f, 0x0e, 0x1b, 0xab,
+ 0x47, 0xbf, 0x27, 0xfb, 0x89, 0xc2, 0x14, 0xfc, 0x73, 0x05, 0xc0, 0x65, 0xe4, 0x9d, 0x43, 0x6e,
+ 0x30, 0x15, 0x20, 0xbd, 0x3e, 0xb3, 0xb7, 0x39, 0x95, 0x7d, 0x1b, 0x0f, 0xe0, 0x79, 0x11, 0xc0,
+ 0x52, 0x8c, 0xf2, 0x44, 0x14, 0x1d, 0xa1, 0xbc, 0x15, 0x50, 0xe8, 0x92, 0xef, 0x4c, 0xcc, 0x9e,
+ 0x18, 0x3d, 0x5c, 0x92, 0xc2, 0xf8, 0xd2, 0x69, 0xc1, 0x3a, 0x2b, 0x00, 0x7e, 0x2f, 0x98, 0x04,
+ 0xfd, 0x98, 0x20, 0x1d, 0x4b, 0x07, 0x26, 0x36, 0x99, 0xbc, 0xb8, 0xe9, 0x8a, 0x4b, 0x3f, 0xfb,
+ 0x06, 0x7e, 0x31, 0x07, 0x8e, 0xf7, 0x6b, 0x0e, 0x7f, 0xb3, 0xdc, 0x71, 0x90, 0x47, 0x64, 0xc4,
+ 0xa7, 0xca, 0x4e, 0x5f, 0xd4, 0x27, 0x81, 0x13, 0x6c, 0x0b, 0xf5, 0x02, 0x32, 0x9c, 0x2a, 0xba,
+ 0xd4, 0x6d, 0x23, 0xcf, 0x43, 0x2e, 0x69, 0xd9, 0xa4, 0xde, 0xff, 0x23, 0xfc, 0x7b, 0x45, 0xd6,
+ 0x59, 0x7d, 0x00, 0xbf, 0x23, 0x34, 0xfd, 0x45, 0x8a, 0x8c, 0xfb, 0x79, 0xb2, 0xb2, 0x93, 0xa1,
+ 0xf8, 0xc2, 0x71, 0x8f, 0xf0, 0xfd, 0x87, 0x56, 0xa2, 0xf3, 0x34, 0xdd, 0x1f, 0xa1, 0xcf, 0x69,
+ 0x7a, 0x65, 0xa9, 0xa2, 0xe1, 0xf1, 0xfe, 0x04, 0x38, 0x16, 0x7e, 0x5b, 0xbc, 0xbf, 0x51, 0xd7,
+ 0xaa, 0x46, 0x71, 0x12, 0x77, 0x20, 0x34, 0x79, 0xa9, 0x54, 0x59, 0xd5, 0x16, 0x1b, 0x46, 0x0d,
+ 0x7f, 0x59, 0x1c, 0x6e, 0xcc, 0x87, 0xcf, 0xcf, 0x81, 0xa3, 0x84, 0xb7, 0x57, 0x08, 0x57, 0x31,
+ 0x53, 0x7a, 0x7c, 0x59, 0x02, 0x80, 0xa6, 0x28, 0x7b, 0xe1, 0xe7, 0xa4, 0x6f, 0x0d, 0xe3, 0x20,
+ 0xec, 0xa9, 0x23, 0x42, 0x32, 0xbe, 0x9b, 0x95, 0x39, 0x01, 0x2a, 0x5d, 0x6c, 0x32, 0xa1, 0xf8,
+ 0xe7, 0x71, 0x0f, 0x05, 0xd1, 0xe0, 0x13, 0xf3, 0xaf, 0x4c, 0x7e, 0x7e, 0xf6, 0x7a, 0x45, 0x27,
+ 0xe2, 0x30, 0x07, 0x00, 0x49, 0x21, 0x12, 0x44, 0xe5, 0xa0, 0xef, 0x40, 0x12, 0x25, 0x07, 0xa5,
+ 0xb2, 0x51, 0x39, 0xa7, 0x45, 0xc9, 0xc1, 0x67, 0x14, 0x30, 0xb9, 0x8c, 0x3c, 0x3c, 0xd9, 0xe9,
+ 0xc2, 0xa7, 0x4b, 0x2c, 0xcc, 0x60, 0xfb, 0x82, 0x5c, 0x97, 0x1c, 0xcc, 0xcf, 0xe9, 0x1b, 0x7c,
+ 0xc1, 0x30, 0xb6, 0x81, 0x5f, 0x75, 0xc4, 0x40, 0xf2, 0x54, 0x90, 0xf7, 0xf0, 0x67, 0xb6, 0x3e,
+ 0xfc, 0x98, 0xc8, 0x71, 0x04, 0x17, 0xb2, 0x68, 0x7a, 0xa6, 0x4e, 0xf3, 0x73, 0xc3, 0x86, 0xa4,
+ 0x51, 0x11, 0x41, 0xc8, 0x0f, 0xa3, 0x61, 0xf8, 0x77, 0x0a, 0x38, 0x41, 0xf5, 0xa3, 0xd4, 0xe9,
+ 0xd4, 0x3d, 0xc7, 0x45, 0x3a, 0x6a, 0x22, 0xab, 0xe3, 0xf5, 0x2c, 0xbc, 0xb9, 0x34, 0xd5, 0xdf,
+ 0xd9, 0x63, 0xaf, 0xf0, 0x2d, 0x8a, 0x6c, 0x8c, 0xc3, 0x7d, 0xfa, 0xd8, 0x53, 0x5f, 0x84, 0xb2,
+ 0x3f, 0x94, 0x95, 0x89, 0x5a, 0x98, 0xb0, 0xf0, 0x64, 0x40, 0x7d, 0xe4, 0x10, 0x80, 0xf2, 0x97,
+ 0x54, 0x74, 0xad, 0xac, 0x55, 0xd6, 0xf1, 0x20, 0x70, 0x1d, 0x78, 0xd4, 0xfa, 0x86, 0x5e, 0x5e,
+ 0x29, 0xd5, 0xb5, 0x86, 0xae, 0x2d, 0x57, 0xea, 0x86, 0x5e, 0x32, 0x2a, 0x35, 0x9f, 0x80, 0x09,
+ 0xf5, 0x5a, 0x70, 0xaa, 0xbe, 0xb1, 0x50, 0x2f, 0xeb, 0x95, 0x75, 0x92, 0xae, 0x6b, 0x55, 0xed,
+ 0x3c, 0xfb, 0x3a, 0x09, 0x3f, 0x5c, 0x04, 0xd3, 0xd8, 0x32, 0xaf, 0x53, 0x83, 0x1d, 0x7e, 0x2b,
+ 0x07, 0xa6, 0x75, 0xd4, 0x75, 0xda, 0x7b, 0xc4, 0x78, 0x1f, 0xd7, 0x9c, 0xe0, 0x3b, 0x8a, 0xec,
+ 0xf9, 0x28, 0x8e, 0xd8, 0x79, 0x8e, 0xd0, 0xe8, 0x19, 0xa0, 0xe9, 0xc7, 0x0b, 0x66, 0x76, 0x4b,
+ 0x98, 0xa0, 0xce, 0x03, 0xd5, 0xb9, 0x64, 0x23, 0xb7, 0xde, 0xbc, 0xa4, 0x79, 0xdb, 0xa5, 0x56,
+ 0xcb, 0x45, 0xdd, 0x2e, 0x5b, 0x56, 0xe8, 0xf3, 0x45, 0xbd, 0x09, 0x1c, 0x25, 0xa9, 0x5c, 0x66,
+ 0x7a, 0x98, 0xb3, 0x37, 0x39, 0xc8, 0x59, 0xb2, 0xaf, 0xf8, 0x39, 0xf3, 0x5c, 0xce, 0x30, 0x99,
+ 0x77, 0x47, 0x2c, 0x88, 0x5e, 0xb0, 0x67, 0xc0, 0xb4, 0x6d, 0xee, 0x20, 0xed, 0x72, 0xc7, 0x72,
+ 0x51, 0xf7, 0xd4, 0x04, 0xd9, 0x4d, 0xe3, 0x93, 0xe0, 0x1f, 0x48, 0x9d, 0xe7, 0x92, 0xe3, 0x58,
+ 0x32, 0xd9, 0x5f, 0x1e, 0x42, 0xf4, 0xfb, 0xf4, 0x33, 0x0a, 0xfc, 0xb0, 0x02, 0x66, 0x18, 0x51,
+ 0x25, 0xfb, 0x4a, 0xa5, 0x05, 0xaf, 0x13, 0xcc, 0x52, 0x13, 0xa7, 0xf9, 0x66, 0x29, 0x79, 0x81,
+ 0x3f, 0xaf, 0xc8, 0xba, 0x13, 0xf5, 0x69, 0x38, 0xa9, 0x23, 0xda, 0xc5, 0x65, 0xd3, 0xd9, 0x65,
+ 0x2e, 0x35, 0x93, 0x3a, 0x7d, 0x49, 0x73, 0xb5, 0x0d, 0xfe, 0xa1, 0x94, 0xb3, 0x92, 0x64, 0x33,
+ 0x0e, 0x09, 0xc0, 0x4f, 0x28, 0x60, 0x8e, 0x51, 0x55, 0x67, 0x7e, 0xb4, 0x52, 0x0e, 0xe5, 0xbf,
+ 0x20, 0x6d, 0x08, 0xf6, 0x69, 0x3f, 0xab, 0xe9, 0x11, 0x03, 0xe4, 0x47, 0xa5, 0x82, 0x8f, 0x48,
+ 0x37, 0xe4, 0x90, 0xa0, 0x7c, 0x77, 0x0e, 0x4c, 0x6f, 0x74, 0x91, 0xcb, 0xfc, 0xe2, 0xe0, 0x1b,
+ 0x72, 0x40, 0x59, 0x46, 0xc2, 0x0e, 0xe7, 0x4b, 0x72, 0xb2, 0xab, 0x75, 0x7c, 0x63, 0xb9, 0x42,
+ 0xb1, 0x8d, 0x14, 0x01, 0xdb, 0x8d, 0x60, 0x8e, 0xb2, 0xb4, 0xe4, 0x79, 0xd8, 0x48, 0xf4, 0x8f,
+ 0x05, 0xf4, 0xa4, 0x8e, 0x62, 0x0f, 0x87, 0xd4, 0x85, 0xb3, 0x94, 0x31, 0x4d, 0xab, 0x68, 0x93,
+ 0x86, 0xa6, 0xca, 0xe9, 0x3d, 0xa9, 0xe4, 0x2a, 0xe7, 0x0e, 0xa2, 0xfe, 0xa1, 0x5c, 0xe6, 0x3c,
+ 0xc9, 0xdc, 0xef, 0x13, 0xfc, 0x96, 0x54, 0xcc, 0x3e, 0x79, 0xee, 0x24, 0x93, 0x85, 0xce, 0x68,
+ 0x4c, 0x92, 0xe3, 0xa0, 0x88, 0x73, 0x90, 0x8d, 0x11, 0x5d, 0xab, 0xd7, 0x56, 0xcf, 0x69, 0xfd,
+ 0xd7, 0x17, 0xf2, 0xf0, 0x85, 0x0a, 0x98, 0x5a, 0x70, 0x1d, 0xb3, 0xd5, 0x34, 0xbb, 0x1e, 0xfc,
+ 0x5e, 0x16, 0xcc, 0xac, 0x9b, 0x57, 0xda, 0x8e, 0xd9, 0x22, 0x9e, 0x88, 0x3d, 0x7d, 0x41, 0x87,
+ 0x7e, 0xf2, 0xfb, 0x02, 0xf6, 0x2a, 0x3a, 0xde, 0x07, 0xae, 0xf1, 0x19, 0x99, 0xcb, 0xc5, 0x82,
+ 0xfd, 0xb7, 0x6c, 0xbf, 0x60, 0x60, 0x3e, 0x5d, 0xf3, 0x3c, 0x4d, 0x11, 0x16, 0xe5, 0x87, 0xe5,
+ 0xc2, 0x7b, 0xc9, 0x14, 0x79, 0x38, 0xdb, 0xe5, 0x0f, 0x4e, 0x82, 0xc2, 0x22, 0x22, 0x56, 0xdc,
+ 0x6f, 0x67, 0xc1, 0x04, 0xbb, 0x5e, 0x1f, 0xde, 0x21, 0x38, 0x39, 0xb6, 0x48, 0x86, 0xa0, 0x3b,
+ 0x0e, 0xde, 0xf1, 0x64, 0x9d, 0x3b, 0xcf, 0x44, 0x9e, 0x13, 0xb8, 0x7f, 0xd1, 0x7a, 0x23, 0xae,
+ 0xf4, 0x4f, 0xe6, 0xfe, 0x15, 0x5b, 0x54, 0xfa, 0x4e, 0x50, 0xef, 0xcd, 0x32, 0x9f, 0x27, 0xae,
+ 0xd7, 0xfb, 0x55, 0x5e, 0x3e, 0x63, 0xdd, 0xc0, 0x18, 0xf1, 0x31, 0x5e, 0x4b, 0xb7, 0x83, 0x09,
+ 0xca, 0x73, 0x7f, 0x3e, 0xda, 0xeb, 0x40, 0x40, 0x8b, 0x20, 0x67, 0x9b, 0xfc, 0x9c, 0x92, 0xbe,
+ 0x63, 0xd1, 0x95, 0x8f, 0xe5, 0x8c, 0xdf, 0x4c, 0x15, 0x79, 0x97, 0x1c, 0xf7, 0x62, 0xdd, 0x33,
+ 0x3d, 0x04, 0xff, 0x39, 0x0b, 0x94, 0x3a, 0xf2, 0xf8, 0xd3, 0xc5, 0x55, 0x70, 0x8c, 0x36, 0x88,
+ 0x65, 0x24, 0xfd, 0x37, 0x6d, 0xc8, 0x99, 0xbe, 0x4c, 0xe0, 0xf2, 0xe9, 0xfb, 0x7f, 0x85, 0xaf,
+ 0xe8, 0x1b, 0x54, 0x21, 0xdb, 0x67, 0xd2, 0xc0, 0x38, 0xc3, 0x13, 0x88, 0x05, 0x2c, 0x42, 0x4e,
+ 0x7f, 0x5f, 0xca, 0xac, 0x96, 0x2b, 0xf3, 0x70, 0xba, 0x82, 0xd7, 0x5e, 0x03, 0x72, 0xe5, 0x6d,
+ 0xd3, 0x83, 0xef, 0x51, 0x00, 0x28, 0xb5, 0x5a, 0x6b, 0xd4, 0xe1, 0x96, 0xf7, 0x14, 0x3b, 0x0b,
+ 0x66, 0x9a, 0xdb, 0x66, 0x18, 0x3b, 0x9c, 0xf6, 0x07, 0x42, 0x9a, 0xfa, 0xa4, 0xd0, 0x73, 0x97,
+ 0x72, 0x15, 0xf6, 0xc0, 0x84, 0xeb, 0x60, 0x65, 0x07, 0x5e, 0xbd, 0x62, 0xa8, 0xa9, 0xd8, 0xf3,
+ 0xb2, 0xf8, 0xf7, 0xf9, 0x90, 0xbc, 0xe8, 0x39, 0x1c, 0x2b, 0x3a, 0x38, 0x29, 0x18, 0x26, 0x24,
+ 0x3c, 0x49, 0x25, 0x77, 0x60, 0x36, 0x9e, 0xae, 0xb1, 0x84, 0x86, 0x53, 0xb5, 0x96, 0xe5, 0xb3,
+ 0x96, 0x05, 0xa4, 0x80, 0x2f, 0xce, 0x24, 0x83, 0x2f, 0x9e, 0x71, 0xf7, 0x82, 0x59, 0xd4, 0xb2,
+ 0x3c, 0xe4, 0xb7, 0x92, 0x31, 0x30, 0x0e, 0x62, 0xf1, 0x07, 0xf8, 0x5c, 0xe9, 0xa0, 0x26, 0x84,
+ 0xa1, 0xfb, 0x5b, 0x14, 0xa1, 0x7f, 0x72, 0x61, 0x4a, 0xe4, 0xca, 0x4c, 0x1f, 0xac, 0x17, 0x28,
+ 0xe0, 0x84, 0xe1, 0x6c, 0x6d, 0xb5, 0x91, 0xcf, 0x26, 0x44, 0xdd, 0x26, 0xa1, 0x39, 0x4a, 0xb8,
+ 0xc8, 0x1e, 0x8d, 0xf3, 0x80, 0xc5, 0x66, 0x2f, 0xf4, 0x05, 0xbe, 0x48, 0x3a, 0xfc, 0x22, 0x61,
+ 0x57, 0x5f, 0x3a, 0x23, 0x50, 0x90, 0x0b, 0xa8, 0x28, 0x5d, 0x6c, 0xfa, 0x40, 0x3c, 0x9c, 0x05,
+ 0xb3, 0xf4, 0x16, 0x2f, 0x5f, 0x40, 0xef, 0x1b, 0x21, 0x00, 0xf0, 0x7b, 0x19, 0x59, 0x07, 0x58,
+ 0xc2, 0x13, 0x81, 0x92, 0x08, 0x16, 0xcb, 0x1d, 0x5a, 0x1e, 0x58, 0x5c, 0xfa, 0xac, 0xfd, 0x75,
+ 0x05, 0x4c, 0x2f, 0x23, 0x5f, 0xd3, 0xba, 0xfc, 0x35, 0x1b, 0x32, 0x8c, 0xbd, 0x01, 0xcc, 0x5e,
+ 0x40, 0x9b, 0x8e, 0x8b, 0xc8, 0xb5, 0x21, 0x01, 0x73, 0xc5, 0xc4, 0x88, 0xc8, 0x2e, 0x42, 0x08,
+ 0x91, 0x05, 0x91, 0xed, 0xb7, 0xec, 0xe7, 0x13, 0x47, 0x65, 0xc4, 0x70, 0xf2, 0x14, 0x30, 0xc9,
+ 0x40, 0xf5, 0x2d, 0xb0, 0xb8, 0x2e, 0x2f, 0xc8, 0x0b, 0xdf, 0x14, 0x80, 0xa5, 0x09, 0x60, 0x3d,
+ 0x31, 0x09, 0x11, 0x63, 0xb9, 0xc6, 0xb6, 0xc8, 0xd5, 0xbf, 0x70, 0xa5, 0xd2, 0xea, 0xc2, 0xb5,
+ 0x64, 0x78, 0x9d, 0x06, 0x20, 0x90, 0x7b, 0xff, 0x44, 0x28, 0x97, 0x22, 0x06, 0x7d, 0x8d, 0x3d,
+ 0xf0, 0xd4, 0xcb, 0x0e, 0x42, 0xce, 0x88, 0x81, 0x91, 0x3b, 0x28, 0x25, 0x43, 0xc9, 0x18, 0x02,
+ 0xbc, 0x28, 0xe0, 0x44, 0xdd, 0xdf, 0x37, 0x5f, 0x35, 0xbb, 0xa1, 0x4a, 0x95, 0x93, 0x41, 0x24,
+ 0x1c, 0xb2, 0x08, 0x94, 0xe5, 0xdb, 0xc9, 0x86, 0x83, 0xbe, 0x94, 0x8c, 0x16, 0x1d, 0xf5, 0x16,
+ 0x70, 0xcc, 0xde, 0xdd, 0x09, 0xb8, 0x4e, 0x34, 0x9e, 0x69, 0xf8, 0xfe, 0x0f, 0x49, 0x06, 0x1d,
+ 0x19, 0xe2, 0xc7, 0x32, 0x5d, 0x9c, 0xde, 0xb0, 0x03, 0x57, 0x08, 0xf8, 0xf8, 0x44, 0x30, 0xc2,
+ 0x7f, 0xca, 0x24, 0xea, 0xdd, 0xb8, 0x9a, 0x22, 0x86, 0x94, 0x04, 0xbd, 0x54, 0x74, 0x61, 0xa9,
+ 0xb3, 0xed, 0xec, 0x04, 0xc8, 0x6b, 0x3b, 0x1d, 0xef, 0xca, 0xd9, 0xc7, 0x82, 0xd9, 0xba, 0xe7,
+ 0x22, 0x73, 0x87, 0x5b, 0xf4, 0xf7, 0x9c, 0x8b, 0xc8, 0xf6, 0x17, 0xfd, 0xc9, 0xcb, 0x9d, 0x77,
+ 0x80, 0x09, 0xdb, 0x69, 0x98, 0xbb, 0xde, 0xb6, 0x7a, 0xdd, 0xfc, 0x96, 0xe3, 0x6c, 0xb5, 0xd1,
+ 0x7c, 0xc7, 0x75, 0x3c, 0xe7, 0xc2, 0xee, 0xe6, 0x3c, 0x03, 0xbf, 0xc6, 0x8e, 0xff, 0x7f, 0xf5,
+ 0x2e, 0xb2, 0xec, 0x5b, 0xb0, 0x9d, 0xd2, 0xae, 0xb7, 0xbd, 0x70, 0xed, 0x27, 0xfe, 0xf6, 0x74,
+ 0xe6, 0x33, 0x7f, 0x7b, 0x3a, 0xf3, 0x95, 0xbf, 0x3d, 0x9d, 0xf9, 0x85, 0xaf, 0x9d, 0x3e, 0xf2,
+ 0x99, 0xaf, 0x9d, 0x3e, 0xf2, 0xf0, 0xd7, 0x4e, 0x1f, 0xf9, 0xb1, 0x6c, 0xe7, 0xc2, 0x85, 0x02,
+ 0x29, 0xe5, 0xf6, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xea, 0x57, 0xf2, 0x64, 0xe4, 0xed, 0x01,
+ 0x00,
}
func (m *Rpc) Marshal() (dAtA []byte, err error) {
@@ -86234,6 +86471,169 @@ func (m *RpcRelationOptionsResponseError) MarshalToSizedBuffer(dAtA []byte) (int
return len(dAtA) - i, nil
}
+func (m *RpcRelationListWithValue) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RpcRelationListWithValue) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RpcRelationListWithValue) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ return len(dAtA) - i, nil
+}
+
+func (m *RpcRelationListWithValueRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RpcRelationListWithValueRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RpcRelationListWithValueRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.Value != nil {
+ {
+ size, err := m.Value.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintCommands(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.SpaceId) > 0 {
+ i -= len(m.SpaceId)
+ copy(dAtA[i:], m.SpaceId)
+ i = encodeVarintCommands(dAtA, i, uint64(len(m.SpaceId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RpcRelationListWithValueResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RpcRelationListWithValueResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RpcRelationListWithValueResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if len(m.Counters) > 0 {
+ dAtA182 := make([]byte, len(m.Counters)*10)
+ var j181 int
+ for _, num1 := range m.Counters {
+ num := uint64(num1)
+ for num >= 1<<7 {
+ dAtA182[j181] = uint8(uint64(num)&0x7f | 0x80)
+ num >>= 7
+ j181++
+ }
+ dAtA182[j181] = uint8(num)
+ j181++
+ }
+ i -= j181
+ copy(dAtA[i:], dAtA182[:j181])
+ i = encodeVarintCommands(dAtA, i, uint64(j181))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.RelationKeys) > 0 {
+ for iNdEx := len(m.RelationKeys) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.RelationKeys[iNdEx])
+ copy(dAtA[i:], m.RelationKeys[iNdEx])
+ i = encodeVarintCommands(dAtA, i, uint64(len(m.RelationKeys[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintCommands(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RpcRelationListWithValueResponseError) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RpcRelationListWithValueResponseError) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RpcRelationListWithValueResponseError) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if len(m.Description) > 0 {
+ i -= len(m.Description)
+ copy(dAtA[i:], m.Description)
+ i = encodeVarintCommands(dAtA, i, uint64(len(m.Description)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Code != 0 {
+ i = encodeVarintCommands(dAtA, i, uint64(m.Code))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *RpcHistory) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -119274,6 +119674,74 @@ func (m *RpcRelationOptionsResponseError) Size() (n int) {
return n
}
+func (m *RpcRelationListWithValue) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ return n
+}
+
+func (m *RpcRelationListWithValueRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.SpaceId)
+ if l > 0 {
+ n += 1 + l + sovCommands(uint64(l))
+ }
+ if m.Value != nil {
+ l = m.Value.Size()
+ n += 1 + l + sovCommands(uint64(l))
+ }
+ return n
+}
+
+func (m *RpcRelationListWithValueResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovCommands(uint64(l))
+ }
+ if len(m.RelationKeys) > 0 {
+ for _, s := range m.RelationKeys {
+ l = len(s)
+ n += 1 + l + sovCommands(uint64(l))
+ }
+ }
+ if len(m.Counters) > 0 {
+ l = 0
+ for _, e := range m.Counters {
+ l += sovCommands(uint64(e))
+ }
+ n += 1 + sovCommands(uint64(l)) + l
+ }
+ return n
+}
+
+func (m *RpcRelationListWithValueResponseError) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Code != 0 {
+ n += 1 + sovCommands(uint64(m.Code))
+ }
+ l = len(m.Description)
+ if l > 0 {
+ n += 1 + l + sovCommands(uint64(l))
+ }
+ return n
+}
+
func (m *RpcHistory) Size() (n int) {
if m == nil {
return 0
@@ -174622,15 +175090,222 @@ func (m *RpcRelationListRemoveOptionRequest) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: Request: wiretype end group for non-group")
+ return fmt.Errorf("proto: Request: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OptionIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthCommands
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.OptionIds = append(m.OptionIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CheckInObjects", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CheckInObjects = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipCommands(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RpcRelationListRemoveOptionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Response: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthCommands
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &RpcRelationListRemoveOptionResponseError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipCommands(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RpcRelationListRemoveOptionResponseError) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Error: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType)
+ }
+ m.Code = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Code |= RpcRelationListRemoveOptionResponseErrorCode(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field OptionIds", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
@@ -174658,13 +175333,113 @@ func (m *RpcRelationListRemoveOptionRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.OptionIds = append(m.OptionIds, string(dAtA[iNdEx:postIndex]))
+ m.Description = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
- case 2:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field CheckInObjects", wireType)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipCommands(dAtA[iNdEx:])
+ if err != nil {
+ return err
}
- var v int
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RpcRelationOptions) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Options: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Options: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipCommands(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RpcRelationOptionsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Request: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RelationKey", wireType)
+ }
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowCommands
@@ -174674,12 +175449,24 @@ func (m *RpcRelationListRemoveOptionRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- v |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- m.CheckInObjects = bool(v != 0)
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthCommands
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RelationKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipCommands(dAtA[iNdEx:])
@@ -174701,7 +175488,7 @@ func (m *RpcRelationListRemoveOptionRequest) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *RpcRelationListRemoveOptionResponse) Unmarshal(dAtA []byte) error {
+func (m *RpcRelationOptionsResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -174760,12 +175547,48 @@ func (m *RpcRelationListRemoveOptionResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.Error == nil {
- m.Error = &RpcRelationListRemoveOptionResponseError{}
+ m.Error = &RpcRelationOptionsResponseError{}
}
if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthCommands
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &model.RelationOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipCommands(dAtA[iNdEx:])
@@ -174787,7 +175610,7 @@ func (m *RpcRelationListRemoveOptionResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *RpcRelationListRemoveOptionResponseError) Unmarshal(dAtA []byte) error {
+func (m *RpcRelationOptionsResponseError) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -174830,7 +175653,7 @@ func (m *RpcRelationListRemoveOptionResponseError) Unmarshal(dAtA []byte) error
}
b := dAtA[iNdEx]
iNdEx++
- m.Code |= RpcRelationListRemoveOptionResponseErrorCode(b&0x7F) << shift
+ m.Code |= RpcRelationOptionsResponseErrorCode(b&0x7F) << shift
if b < 0x80 {
break
}
@@ -174888,7 +175711,7 @@ func (m *RpcRelationListRemoveOptionResponseError) Unmarshal(dAtA []byte) error
}
return nil
}
-func (m *RpcRelationOptions) Unmarshal(dAtA []byte) error {
+func (m *RpcRelationListWithValue) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -174911,10 +175734,10 @@ func (m *RpcRelationOptions) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: Options: wiretype end group for non-group")
+ return fmt.Errorf("proto: ListWithValue: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: Options: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: ListWithValue: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
@@ -174938,7 +175761,7 @@ func (m *RpcRelationOptions) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *RpcRelationOptionsRequest) Unmarshal(dAtA []byte) error {
+func (m *RpcRelationListWithValueRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -174969,7 +175792,7 @@ func (m *RpcRelationOptionsRequest) Unmarshal(dAtA []byte) error {
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field RelationKey", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field SpaceId", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
@@ -174997,7 +175820,43 @@ func (m *RpcRelationOptionsRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.RelationKey = string(dAtA[iNdEx:postIndex])
+ m.SpaceId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthCommands
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Value == nil {
+ m.Value = &types.Value{}
+ }
+ if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
iNdEx = postIndex
default:
iNdEx = preIndex
@@ -175020,7 +175879,7 @@ func (m *RpcRelationOptionsRequest) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *RpcRelationOptionsResponse) Unmarshal(dAtA []byte) error {
+func (m *RpcRelationListWithValueResponse) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -175079,7 +175938,7 @@ func (m *RpcRelationOptionsResponse) Unmarshal(dAtA []byte) error {
return io.ErrUnexpectedEOF
}
if m.Error == nil {
- m.Error = &RpcRelationOptionsResponseError{}
+ m.Error = &RpcRelationListWithValueResponseError{}
}
if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
@@ -175087,9 +175946,9 @@ func (m *RpcRelationOptionsResponse) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field RelationKeys", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowCommands
@@ -175099,28 +175958,100 @@ func (m *RpcRelationOptionsResponse) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthCommands
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthCommands
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Options == nil {
- m.Options = &model.RelationOptions{}
- }
- if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.RelationKeys = append(m.RelationKeys, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
+ case 3:
+ if wireType == 0 {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Counters = append(m.Counters, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthCommands
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex < 0 {
+ return ErrInvalidLengthCommands
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var elementCount int
+ var count int
+ for _, integer := range dAtA[iNdEx:postIndex] {
+ if integer < 128 {
+ count++
+ }
+ }
+ elementCount = count
+ if elementCount != 0 && len(m.Counters) == 0 {
+ m.Counters = make([]int64, 0, elementCount)
+ }
+ for iNdEx < postIndex {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowCommands
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Counters = append(m.Counters, v)
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field Counters", wireType)
+ }
default:
iNdEx = preIndex
skippy, err := skipCommands(dAtA[iNdEx:])
@@ -175142,7 +176073,7 @@ func (m *RpcRelationOptionsResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *RpcRelationOptionsResponseError) Unmarshal(dAtA []byte) error {
+func (m *RpcRelationListWithValueResponseError) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -175185,7 +176116,7 @@ func (m *RpcRelationOptionsResponseError) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- m.Code |= RpcRelationOptionsResponseErrorCode(b&0x7F) << shift
+ m.Code |= RpcRelationListWithValueResponseErrorCode(b&0x7F) << shift
if b < 0x80 {
break
}
diff --git a/pb/protos/commands.proto b/pb/protos/commands.proto
index 50f17496d..ab2e6ceea 100644
--- a/pb/protos/commands.proto
+++ b/pb/protos/commands.proto
@@ -3037,6 +3037,30 @@ message Rpc {
}
}
}
+
+ message ListWithValue {
+ message Request {
+ string spaceId = 1;
+ google.protobuf.Value value = 2;
+ }
+
+ message Response {
+ Error error = 1;
+ repeated string relationKeys = 2;
+ repeated int64 counters = 3;
+
+ message Error {
+ Code code = 1;
+ string description = 2;
+
+ enum Code {
+ NULL = 0;
+ UNKNOWN_ERROR = 1;
+ BAD_INPUT = 2;
+ }
+ }
+ }
+ }
}
message History {
diff --git a/pb/protos/service/service.proto b/pb/protos/service/service.proto
index 750f5fe0f..9055a9287 100644
--- a/pb/protos/service/service.proto
+++ b/pb/protos/service/service.proto
@@ -129,6 +129,7 @@ service ClientCommands {
rpc ObjectCreateRelationOption (anytype.Rpc.Object.CreateRelationOption.Request) returns (anytype.Rpc.Object.CreateRelationOption.Response);
rpc RelationListRemoveOption (anytype.Rpc.Relation.ListRemoveOption.Request) returns (anytype.Rpc.Relation.ListRemoveOption.Response);
rpc RelationOptions (anytype.Rpc.Relation.Options.Request) returns (anytype.Rpc.Relation.Options.Response);
+ rpc RelationListWithValue (anytype.Rpc.Relation.ListWithValue.Request) returns (anytype.Rpc.Relation.ListWithValue.Response);
// Object Relations
// ***
diff --git a/pb/service/service.pb.go b/pb/service/service.pb.go
index 3e55a9433..69e398f3c 100644
--- a/pb/service/service.pb.go
+++ b/pb/service/service.pb.go
@@ -26,326 +26,327 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
var fileDescriptor_93a29dc403579097 = []byte{
- // 5098 bytes of a gzipped FileDescriptorProto
+ // 5118 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x24, 0x49,
0x52, 0xc0, 0xb7, 0x5f, 0x58, 0xa8, 0xe3, 0x16, 0xe8, 0x85, 0x65, 0x6f, 0xb9, 0x9b, 0xef, 0x19,
0xcf, 0x8c, 0xed, 0xf6, 0xec, 0xcc, 0x7e, 0x1c, 0x7b, 0x48, 0xc8, 0x63, 0x8f, 0xbd, 0xe6, 0x6c,
0x8f, 0x71, 0xb7, 0x67, 0xa4, 0x95, 0x90, 0xa8, 0xa9, 0x0e, 0xb7, 0x0b, 0x57, 0x57, 0xd6, 0x55,
- 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0xaf, 0x17, 0x1e, 0x90, 0xee,
- 0xaf, 0xe1, 0xf1, 0x1e, 0x79, 0x84, 0xdd, 0x7f, 0xe4, 0x54, 0x99, 0x59, 0xf9, 0x11, 0x95, 0x91,
- 0x55, 0xde, 0xa7, 0x19, 0x75, 0xfc, 0x22, 0x22, 0xb3, 0x32, 0x32, 0x33, 0xf2, 0xa3, 0xca, 0xd1,
- 0xcd, 0xe2, 0xcd, 0x56, 0x51, 0x32, 0xce, 0xaa, 0xad, 0x0a, 0xca, 0x65, 0x9a, 0x40, 0xf3, 0xef,
- 0x48, 0xfc, 0x3c, 0x7c, 0x37, 0xce, 0x57, 0x7c, 0x55, 0xc0, 0x47, 0x1f, 0x1a, 0x32, 0x61, 0xf3,
- 0x79, 0x9c, 0x4f, 0x2b, 0x89, 0x7c, 0xf4, 0x81, 0x91, 0xc0, 0x12, 0x72, 0xae, 0x7e, 0x7f, 0xfa,
- 0xf3, 0xff, 0x1f, 0x44, 0xef, 0xed, 0x64, 0x29, 0xe4, 0x7c, 0x47, 0x69, 0x0c, 0xbf, 0x8a, 0xbe,
- 0xbb, 0x5d, 0x14, 0xfb, 0xc0, 0x5f, 0x41, 0x59, 0xa5, 0x2c, 0x1f, 0xde, 0x1d, 0x29, 0x07, 0xa3,
- 0xd3, 0x22, 0x19, 0x6d, 0x17, 0xc5, 0xc8, 0x08, 0x47, 0xa7, 0xf0, 0x93, 0x05, 0x54, 0xfc, 0xa3,
- 0x7b, 0x61, 0xa8, 0x2a, 0x58, 0x5e, 0xc1, 0xf0, 0x3c, 0xfa, 0xad, 0xed, 0xa2, 0x18, 0x03, 0xdf,
- 0x85, 0xba, 0x02, 0x63, 0x1e, 0x73, 0x18, 0xae, 0xb5, 0x54, 0x5d, 0x40, 0xfb, 0x78, 0xd8, 0x0d,
- 0x2a, 0x3f, 0x93, 0xe8, 0x3b, 0xb5, 0x9f, 0x8b, 0x05, 0x9f, 0xb2, 0xab, 0x7c, 0x78, 0xbb, 0xad,
- 0xa8, 0x44, 0xda, 0xf6, 0x9d, 0x10, 0xa2, 0xac, 0xbe, 0x8e, 0x7e, 0xfd, 0x75, 0x9c, 0x65, 0xc0,
- 0x77, 0x4a, 0xa8, 0x0b, 0xee, 0xea, 0x48, 0xd1, 0x48, 0xca, 0xb4, 0xdd, 0xbb, 0x41, 0x46, 0x19,
- 0xfe, 0x2a, 0xfa, 0xae, 0x94, 0x9c, 0x42, 0xc2, 0x96, 0x50, 0x0e, 0xbd, 0x5a, 0x4a, 0x48, 0x3c,
- 0xf2, 0x16, 0x84, 0x6d, 0xef, 0xb0, 0x7c, 0x09, 0x25, 0xf7, 0xdb, 0x56, 0xc2, 0xb0, 0x6d, 0x03,
- 0x29, 0xdb, 0xff, 0x30, 0x88, 0xbe, 0xbf, 0x9d, 0x24, 0x6c, 0x91, 0xf3, 0x43, 0x96, 0xc4, 0xd9,
- 0x61, 0x9a, 0x5f, 0x1e, 0xc3, 0xd5, 0xce, 0x45, 0xcd, 0xe7, 0x33, 0x18, 0x3e, 0x73, 0x9f, 0xaa,
- 0x44, 0x47, 0x9a, 0x1d, 0xd9, 0xb0, 0xf6, 0xfd, 0xc9, 0xf5, 0x94, 0x54, 0x59, 0xfe, 0x65, 0x10,
- 0xdd, 0xc0, 0x65, 0x19, 0xb3, 0x6c, 0x09, 0xa6, 0x34, 0x9f, 0x76, 0x18, 0x76, 0x71, 0x5d, 0x9e,
- 0xcf, 0xae, 0xab, 0xa6, 0x4a, 0x94, 0x45, 0xef, 0xdb, 0xe1, 0x32, 0x86, 0x4a, 0x74, 0xa7, 0x47,
- 0x74, 0x44, 0x28, 0x44, 0x7b, 0x7e, 0xdc, 0x07, 0x55, 0xde, 0xd2, 0x68, 0xa8, 0xbc, 0x65, 0xac,
- 0xd2, 0xce, 0x1e, 0x7a, 0x2d, 0x58, 0x84, 0xf6, 0xf5, 0xa8, 0x07, 0xa9, 0x5c, 0xfd, 0x69, 0xf4,
- 0x1b, 0xaf, 0x59, 0x79, 0x59, 0x15, 0x71, 0x02, 0xaa, 0x2b, 0xdc, 0x77, 0xb5, 0x1b, 0x29, 0xee,
- 0x0d, 0x0f, 0xba, 0x30, 0x2b, 0x68, 0x1b, 0xe1, 0xcb, 0x02, 0xf0, 0x18, 0x64, 0x14, 0x6b, 0x21,
- 0x15, 0xb4, 0x18, 0x52, 0xb6, 0x2f, 0xa3, 0xa1, 0xb1, 0xfd, 0xe6, 0xcf, 0x20, 0xe1, 0xdb, 0xd3,
- 0x29, 0x6e, 0x15, 0xa3, 0x2b, 0x88, 0xd1, 0xf6, 0x74, 0x4a, 0xb5, 0x8a, 0x1f, 0x55, 0xce, 0xae,
- 0xa2, 0x0f, 0x90, 0xb3, 0xc3, 0xb4, 0x12, 0x0e, 0x37, 0xc3, 0x56, 0x14, 0xa6, 0x9d, 0x8e, 0xfa,
- 0xe2, 0xca, 0xf1, 0x5f, 0x0d, 0xa2, 0xef, 0x79, 0x3c, 0x9f, 0xc2, 0x9c, 0x2d, 0x61, 0xf8, 0xa4,
- 0xdb, 0x9a, 0x24, 0xb5, 0xff, 0x8f, 0xaf, 0xa1, 0xe1, 0x09, 0x93, 0x31, 0x64, 0x90, 0x70, 0x32,
- 0x4c, 0xa4, 0xb8, 0x33, 0x4c, 0x34, 0x66, 0xf5, 0xb0, 0x46, 0xb8, 0x0f, 0x7c, 0x67, 0x51, 0x96,
- 0x90, 0x73, 0xb2, 0x2d, 0x0d, 0xd2, 0xd9, 0x96, 0x0e, 0xea, 0xa9, 0xcf, 0x3e, 0xf0, 0xed, 0x2c,
- 0x23, 0xeb, 0x23, 0xc5, 0x9d, 0xf5, 0xd1, 0x98, 0xf2, 0x90, 0x44, 0xbf, 0x69, 0x3d, 0x31, 0x7e,
- 0x90, 0x9f, 0xb3, 0x21, 0xfd, 0x2c, 0x84, 0x5c, 0xfb, 0x58, 0xeb, 0xe4, 0x3c, 0xd5, 0x78, 0xf1,
- 0xb6, 0x60, 0x25, 0xdd, 0x2c, 0x52, 0xdc, 0x59, 0x0d, 0x8d, 0x29, 0x0f, 0x7f, 0x12, 0xbd, 0xa7,
- 0x46, 0xc9, 0x66, 0x3e, 0xbb, 0xe7, 0x1d, 0x42, 0xf1, 0x84, 0x76, 0xbf, 0x83, 0x32, 0x83, 0x83,
- 0x92, 0xa9, 0xc1, 0xe7, 0xae, 0x57, 0x0f, 0x0d, 0x3d, 0xf7, 0xc2, 0x50, 0xcb, 0xf6, 0x2e, 0x64,
- 0x40, 0xda, 0x96, 0xc2, 0x0e, 0xdb, 0x1a, 0x52, 0xb6, 0xcb, 0xe8, 0x77, 0xf4, 0x63, 0xa9, 0xe7,
- 0x51, 0x21, 0xaf, 0x07, 0xe9, 0x75, 0xa2, 0xde, 0x36, 0xa4, 0x7d, 0x6d, 0xf4, 0x83, 0x5b, 0xf5,
- 0x51, 0x3d, 0xd0, 0x5f, 0x1f, 0xd4, 0xff, 0xee, 0x85, 0x21, 0x65, 0xfb, 0x1f, 0x07, 0xd1, 0x0f,
- 0x94, 0xec, 0x45, 0x1e, 0xbf, 0xc9, 0x40, 0x4c, 0x89, 0xc7, 0xc0, 0xaf, 0x58, 0x79, 0x39, 0x5e,
- 0xe5, 0x09, 0x31, 0xfd, 0xfb, 0xe1, 0x8e, 0xe9, 0x9f, 0x54, 0xb2, 0x32, 0x3e, 0x55, 0x51, 0xce,
- 0x0a, 0x9c, 0xf1, 0x35, 0x35, 0xe0, 0xac, 0xa0, 0x32, 0x3e, 0x17, 0x69, 0x59, 0x3d, 0xaa, 0x87,
- 0x4d, 0xbf, 0xd5, 0x23, 0x7b, 0x9c, 0xbc, 0x13, 0x42, 0xcc, 0xb0, 0xd5, 0x04, 0x30, 0xcb, 0xcf,
- 0xd3, 0xd9, 0x59, 0x31, 0xad, 0xc3, 0xf8, 0x91, 0x3f, 0x42, 0x2d, 0x84, 0x18, 0xb6, 0x08, 0x54,
- 0x79, 0xfb, 0x67, 0x93, 0x18, 0xa9, 0xae, 0xb4, 0x57, 0xb2, 0xf9, 0x21, 0xcc, 0xe2, 0x64, 0xa5,
- 0xfa, 0xff, 0x27, 0xa1, 0x8e, 0x87, 0x69, 0x5d, 0x88, 0x4f, 0xaf, 0xa9, 0xa5, 0xca, 0xf3, 0xdf,
- 0x83, 0xe8, 0x5e, 0x53, 0xfd, 0x8b, 0x38, 0x9f, 0x81, 0x6a, 0x4f, 0x59, 0xfa, 0xed, 0x7c, 0x7a,
- 0x0a, 0x15, 0x8f, 0x4b, 0x3e, 0xfc, 0xc2, 0x5f, 0xc9, 0x90, 0x8e, 0x2e, 0xdb, 0x8f, 0xbe, 0x95,
- 0xae, 0x69, 0xf5, 0x71, 0x3d, 0xb0, 0xa9, 0x21, 0xc0, 0x6d, 0x75, 0x21, 0xc1, 0x03, 0xc0, 0x9d,
- 0x10, 0x62, 0x5a, 0x5d, 0x08, 0x0e, 0xf2, 0x65, 0xca, 0x61, 0x1f, 0x72, 0x28, 0xdb, 0xad, 0x2e,
- 0x55, 0x5d, 0x84, 0x68, 0x75, 0x02, 0x35, 0x83, 0x8d, 0xe3, 0x4d, 0x4f, 0x8e, 0xeb, 0x01, 0x23,
- 0xad, 0xe9, 0x71, 0xa3, 0x1f, 0x6c, 0x56, 0x77, 0x96, 0xcf, 0x53, 0x58, 0xb2, 0x4b, 0xbc, 0xba,
- 0xb3, 0x4d, 0x48, 0x80, 0x58, 0xdd, 0x79, 0x41, 0x33, 0x83, 0x59, 0x7e, 0x5e, 0xa5, 0x70, 0x85,
- 0x66, 0x30, 0x5b, 0xb9, 0x16, 0x13, 0x33, 0x98, 0x07, 0x53, 0x1e, 0x8e, 0xa3, 0x5f, 0x13, 0xc2,
- 0x3f, 0x62, 0x69, 0x3e, 0xbc, 0xe9, 0x51, 0xaa, 0x05, 0xda, 0xea, 0x2d, 0x1a, 0x40, 0x25, 0xae,
- 0x7f, 0xdd, 0x89, 0xf3, 0x04, 0x32, 0x6f, 0x89, 0x8d, 0x38, 0x58, 0x62, 0x07, 0x33, 0xa9, 0x83,
- 0x10, 0xd6, 0xe3, 0xd7, 0xf8, 0x22, 0x2e, 0xd3, 0x7c, 0x36, 0xf4, 0xe9, 0x5a, 0x72, 0x22, 0x75,
- 0xf0, 0x71, 0x28, 0x84, 0x95, 0xe2, 0x76, 0x51, 0x94, 0xf5, 0xb0, 0xe8, 0x0b, 0x61, 0x17, 0x09,
- 0x86, 0x70, 0x0b, 0xf5, 0x7b, 0xdb, 0x85, 0x24, 0x4b, 0xf3, 0xa0, 0x37, 0x85, 0xf4, 0xf1, 0x66,
- 0x50, 0x14, 0xbc, 0x87, 0x10, 0x2f, 0xa1, 0xa9, 0x99, 0xef, 0xc9, 0xd8, 0x40, 0x30, 0x78, 0x11,
- 0x68, 0xd6, 0x69, 0x42, 0x7c, 0x14, 0x5f, 0x42, 0xfd, 0x80, 0xa1, 0x9e, 0xd7, 0x86, 0x3e, 0x7d,
- 0x87, 0x20, 0xd6, 0x69, 0x7e, 0x52, 0xb9, 0x5a, 0x44, 0x1f, 0x08, 0xf9, 0x49, 0x5c, 0xf2, 0x34,
- 0x49, 0x8b, 0x38, 0x6f, 0xf2, 0x7f, 0x5f, 0xbf, 0x6e, 0x51, 0xda, 0xe5, 0x66, 0x4f, 0x5a, 0xb9,
- 0xfd, 0xcf, 0x41, 0x74, 0x1b, 0xfb, 0x3d, 0x81, 0x72, 0x9e, 0x8a, 0x65, 0x64, 0x25, 0x07, 0xe1,
- 0xe1, 0xe7, 0x61, 0xa3, 0x2d, 0x05, 0x5d, 0x9a, 0x1f, 0x5e, 0x5f, 0x51, 0x15, 0xec, 0x8f, 0xa3,
- 0x48, 0x2e, 0x57, 0xc4, 0x92, 0xd2, 0xed, 0xb5, 0x6a, 0x1d, 0xe3, 0xac, 0x27, 0x6f, 0x07, 0x08,
- 0x33, 0x55, 0xc8, 0xdf, 0xc5, 0x4a, 0x79, 0xe8, 0xd5, 0x10, 0x22, 0x62, 0xaa, 0x40, 0x08, 0x2e,
- 0xe8, 0xf8, 0x82, 0x5d, 0xf9, 0x0b, 0x5a, 0x4b, 0xc2, 0x05, 0x55, 0x84, 0xd9, 0xbb, 0x52, 0x05,
- 0xf5, 0xed, 0x5d, 0x35, 0xc5, 0x08, 0xed, 0x5d, 0x61, 0x46, 0x19, 0x66, 0xd1, 0x6f, 0xdb, 0x86,
- 0x9f, 0x33, 0x76, 0x39, 0x8f, 0xcb, 0xcb, 0xe1, 0x63, 0x5a, 0xb9, 0x61, 0xb4, 0xa3, 0xf5, 0x5e,
- 0xac, 0x19, 0x16, 0x6c, 0x87, 0x75, 0xa2, 0x71, 0x56, 0x66, 0x68, 0x58, 0x70, 0x6c, 0x28, 0x84,
- 0x18, 0x16, 0x08, 0xd4, 0x24, 0xd0, 0xca, 0xdb, 0x45, 0x2c, 0xd6, 0xed, 0xfe, 0x87, 0x22, 0x85,
- 0x44, 0x02, 0xdd, 0x82, 0xcc, 0xac, 0x60, 0xd7, 0x64, 0x0c, 0x78, 0x25, 0xe6, 0x14, 0x6d, 0x0c,
- 0xd4, 0x4a, 0xcc, 0x83, 0xe1, 0xf0, 0xdc, 0x2f, 0xe3, 0xe2, 0xc2, 0x1f, 0x9e, 0x42, 0x14, 0x0e,
- 0xcf, 0x06, 0xc1, 0xb1, 0x34, 0x86, 0xb8, 0x4c, 0x2e, 0xfc, 0xb1, 0x24, 0x65, 0xe1, 0x58, 0xd2,
- 0x0c, 0x8e, 0x25, 0x29, 0x78, 0x9d, 0xf2, 0x8b, 0x23, 0xe0, 0xb1, 0x3f, 0x96, 0x5c, 0x26, 0x1c,
- 0x4b, 0x2d, 0xd6, 0x64, 0x49, 0xb6, 0xc3, 0xf1, 0xe2, 0x4d, 0x95, 0x94, 0xe9, 0x1b, 0x18, 0x06,
- 0xac, 0x68, 0x88, 0xc8, 0x92, 0x48, 0xd8, 0x4c, 0x00, 0xca, 0x67, 0x23, 0x3b, 0x98, 0x56, 0x68,
- 0x02, 0x68, 0x6c, 0x58, 0x04, 0x31, 0x01, 0xf8, 0x49, 0x5c, 0xbd, 0xfd, 0x92, 0x2d, 0x8a, 0xaa,
- 0xa3, 0x7a, 0x08, 0x0a, 0x57, 0xaf, 0x0d, 0x2b, 0x9f, 0x6f, 0xa3, 0xdf, 0xb5, 0x1f, 0xe9, 0x59,
- 0x5e, 0x69, 0xaf, 0x9b, 0xf4, 0x73, 0xb2, 0x30, 0x62, 0xcb, 0x2b, 0x80, 0x9b, 0x14, 0xa8, 0xf1,
- 0xcc, 0x77, 0x81, 0xc7, 0x69, 0x56, 0x0d, 0x1f, 0xf8, 0x6d, 0x34, 0x72, 0x22, 0x05, 0xf2, 0x71,
- 0xb8, 0xcf, 0xee, 0x2e, 0x8a, 0x2c, 0x4d, 0xda, 0x7b, 0x9f, 0x4a, 0x57, 0x8b, 0xc3, 0x7d, 0xd6,
- 0xc6, 0xf0, 0xf8, 0x36, 0x06, 0x2e, 0xff, 0x33, 0x59, 0x15, 0xe0, 0x1f, 0xdf, 0x1c, 0x24, 0x3c,
- 0xbe, 0x61, 0x14, 0xd7, 0x67, 0x0c, 0xfc, 0x30, 0x5e, 0xb1, 0x05, 0x31, 0x06, 0x69, 0x71, 0xb8,
- 0x3e, 0x36, 0x66, 0xb2, 0x10, 0xed, 0xe1, 0x20, 0xe7, 0x50, 0xe6, 0x71, 0xb6, 0x97, 0xc5, 0xb3,
- 0x6a, 0x48, 0xf4, 0x1b, 0x97, 0x22, 0xb2, 0x10, 0x9a, 0xf6, 0x3c, 0xc6, 0x83, 0x6a, 0x2f, 0x5e,
- 0xb2, 0x32, 0xe5, 0xf4, 0x63, 0x34, 0x48, 0xe7, 0x63, 0x74, 0x50, 0xaf, 0xb7, 0xed, 0x32, 0xb9,
- 0x48, 0x97, 0x30, 0x0d, 0x78, 0x6b, 0x90, 0x1e, 0xde, 0x2c, 0xd4, 0xd3, 0x68, 0x63, 0xb6, 0x28,
- 0x13, 0x20, 0x1b, 0x4d, 0x8a, 0x3b, 0x1b, 0x4d, 0x63, 0xca, 0xc3, 0xdf, 0x0e, 0xa2, 0xdf, 0x93,
- 0x52, 0x7b, 0x43, 0x72, 0x37, 0xae, 0x2e, 0xde, 0xb0, 0xb8, 0x9c, 0x0e, 0x3f, 0xf6, 0xd9, 0xf1,
- 0xa2, 0xda, 0xf5, 0xd3, 0xeb, 0xa8, 0xe0, 0xc7, 0x7a, 0x98, 0x56, 0x56, 0x8f, 0xf3, 0x3e, 0x56,
- 0x07, 0x09, 0x3f, 0x56, 0x8c, 0xe2, 0x01, 0x44, 0xc8, 0xe5, 0xe2, 0xff, 0x01, 0xa9, 0xef, 0xee,
- 0x00, 0xac, 0x75, 0x72, 0x78, 0x7c, 0xac, 0x85, 0x6e, 0xb4, 0x6c, 0x52, 0x36, 0xfc, 0x11, 0x33,
- 0xea, 0x8b, 0x93, 0x9e, 0x75, 0xaf, 0x08, 0x7b, 0x6e, 0xf5, 0x8c, 0x51, 0x5f, 0x9c, 0xf0, 0x6c,
- 0x0d, 0x6b, 0x21, 0xcf, 0x9e, 0xa1, 0x6d, 0xd4, 0x17, 0xc7, 0x19, 0x85, 0x62, 0x9a, 0x79, 0xe1,
- 0x71, 0xc0, 0x0e, 0x9e, 0x1b, 0xd6, 0x7b, 0xb1, 0xca, 0xe1, 0xdf, 0x0f, 0xa2, 0xef, 0x1b, 0x8f,
- 0x47, 0x6c, 0x9a, 0x9e, 0xaf, 0x24, 0xf4, 0x2a, 0xce, 0x16, 0x50, 0x0d, 0x9f, 0x52, 0xd6, 0xda,
- 0xac, 0x2e, 0xc1, 0xb3, 0x6b, 0xe9, 0xe0, 0xbe, 0xb3, 0x5d, 0x14, 0xd9, 0x6a, 0x02, 0xf3, 0x22,
- 0x23, 0xfb, 0x8e, 0x83, 0x84, 0xfb, 0x0e, 0x46, 0x71, 0xa6, 0x39, 0x61, 0x75, 0x1e, 0xeb, 0xcd,
- 0x34, 0x85, 0x28, 0x9c, 0x69, 0x36, 0x08, 0xce, 0x95, 0x26, 0x6c, 0x87, 0x65, 0x19, 0x24, 0xbc,
- 0x7d, 0xa8, 0xa9, 0x35, 0x0d, 0x11, 0xce, 0x95, 0x10, 0x69, 0xd6, 0xff, 0xcd, 0x9a, 0x2b, 0x2e,
- 0xe1, 0xf9, 0xea, 0x30, 0xcd, 0x2f, 0x87, 0xfe, 0xb4, 0xc0, 0x00, 0xc4, 0xfa, 0xdf, 0x0b, 0xe2,
- 0xb5, 0xdd, 0x59, 0x3e, 0x65, 0xfe, 0xb5, 0x5d, 0x2d, 0x09, 0xaf, 0xed, 0x14, 0x81, 0x4d, 0x9e,
- 0x02, 0x65, 0xb2, 0x96, 0x84, 0x4d, 0x2a, 0xc2, 0x37, 0x14, 0xaa, 0x5d, 0x62, 0x72, 0x28, 0x44,
- 0xfb, 0xc2, 0x6b, 0x9d, 0x1c, 0x8e, 0xd0, 0x66, 0x91, 0xb7, 0x07, 0x3c, 0xb9, 0xf0, 0x47, 0xa8,
- 0x83, 0x84, 0x23, 0x14, 0xa3, 0xb8, 0x4a, 0x13, 0xa6, 0x17, 0xa9, 0x0f, 0xfc, 0xf1, 0xd1, 0x5a,
- 0xa0, 0xae, 0x75, 0x72, 0x78, 0x69, 0x74, 0x30, 0x17, 0xcf, 0xcc, 0x1b, 0xe4, 0x52, 0x16, 0x5e,
- 0x1a, 0x69, 0x06, 0x97, 0x5e, 0x0a, 0xea, 0xc7, 0xe9, 0x2f, 0xbd, 0x91, 0x87, 0x4b, 0xef, 0x70,
- 0xca, 0xc9, 0xbf, 0x0f, 0xa2, 0x9b, 0xb6, 0x97, 0x63, 0x56, 0xf7, 0x91, 0x57, 0x71, 0x96, 0x4e,
- 0x63, 0x0e, 0x13, 0x76, 0x09, 0x39, 0xda, 0xb7, 0x71, 0x4b, 0x2b, 0xf9, 0x91, 0xa3, 0x40, 0xec,
- 0xdb, 0xf4, 0x52, 0xc4, 0x71, 0x22, 0xe9, 0xb3, 0x0a, 0x76, 0xe2, 0x8a, 0x18, 0xc9, 0x1c, 0x24,
- 0x1c, 0x27, 0x18, 0xc5, 0xf9, 0xaa, 0x94, 0xbf, 0x78, 0x5b, 0x40, 0x99, 0x42, 0x9e, 0x80, 0x3f,
- 0x5f, 0xc5, 0x54, 0x38, 0x5f, 0xf5, 0xd0, 0xad, 0x6d, 0x0d, 0x3d, 0x38, 0xb5, 0xef, 0x25, 0x60,
- 0x22, 0x70, 0x2f, 0x81, 0x40, 0x71, 0x25, 0x0d, 0xe0, 0xdd, 0x1a, 0x6c, 0x59, 0x09, 0x6e, 0x0d,
- 0xd2, 0x74, 0x6b, 0xb3, 0x48, 0x33, 0xe3, 0xba, 0x9b, 0x74, 0x14, 0x7d, 0x6c, 0x77, 0x97, 0xf5,
- 0x5e, 0xac, 0x7f, 0x77, 0xea, 0x14, 0xb2, 0x58, 0x4c, 0x21, 0x81, 0x2d, 0xa0, 0x86, 0xe9, 0xb3,
- 0x3b, 0x65, 0xb1, 0xca, 0xe1, 0x5f, 0x0f, 0xa2, 0x8f, 0x7c, 0x1e, 0x5f, 0x16, 0xc2, 0xef, 0x93,
- 0x6e, 0x5b, 0x92, 0x24, 0x2e, 0x5e, 0x84, 0x35, 0x54, 0x19, 0xfe, 0x3c, 0xfa, 0xb0, 0x11, 0x99,
- 0x7b, 0x19, 0xaa, 0x00, 0x6e, 0x02, 0xa5, 0xcb, 0x8f, 0x39, 0xed, 0x7e, 0xab, 0x37, 0x6f, 0xd6,
- 0x26, 0x6e, 0xb9, 0x2a, 0xb4, 0x36, 0xd1, 0x36, 0x94, 0x98, 0x58, 0x9b, 0x78, 0x30, 0x3c, 0x53,
- 0x37, 0x48, 0xdd, 0x4f, 0x7c, 0x63, 0x9c, 0x36, 0x61, 0xf7, 0x92, 0x87, 0xdd, 0x20, 0x8e, 0x9d,
- 0x46, 0xac, 0x96, 0x04, 0x8f, 0x43, 0x16, 0xd0, 0xb2, 0x60, 0xbd, 0x17, 0xab, 0x1c, 0xfe, 0x65,
- 0xf4, 0xbd, 0x56, 0xc5, 0xf6, 0x20, 0xe6, 0x8b, 0x12, 0xa6, 0xc3, 0xad, 0x8e, 0x72, 0x37, 0xa0,
- 0x76, 0xfd, 0xa4, 0xbf, 0x42, 0x2b, 0x77, 0x6d, 0x38, 0xd9, 0xc4, 0xba, 0x0c, 0x4f, 0x43, 0x26,
- 0x5d, 0x36, 0x98, 0xbb, 0xd2, 0x3a, 0xad, 0xe5, 0xa7, 0x1d, 0xc8, 0xdb, 0xcb, 0x38, 0xcd, 0xc4,
- 0x71, 0xc9, 0xc7, 0x21, 0xa3, 0x0e, 0x1a, 0x5c, 0x7e, 0x92, 0x2a, 0xad, 0x51, 0x52, 0xf4, 0x37,
- 0x6b, 0xd9, 0xb2, 0x41, 0xf7, 0x4a, 0xcf, 0xaa, 0x65, 0xb3, 0x27, 0xad, 0xdc, 0xf2, 0x66, 0xdb,
- 0xae, 0xfe, 0xd9, 0x0e, 0x72, 0x9f, 0x57, 0xa5, 0xea, 0x89, 0xf4, 0xcd, 0x9e, 0xb4, 0xf2, 0xfa,
- 0x17, 0xd1, 0x87, 0x6d, 0xaf, 0x6a, 0x52, 0xd8, 0xea, 0x34, 0x85, 0xe6, 0x85, 0x27, 0xfd, 0x15,
- 0x4c, 0xaa, 0xff, 0x65, 0x5a, 0x71, 0x56, 0xae, 0xc6, 0x17, 0xec, 0xaa, 0xb9, 0x7b, 0xec, 0xf6,
- 0x56, 0x05, 0x8c, 0x2c, 0x82, 0x48, 0xf5, 0xfd, 0x64, 0xcb, 0x95, 0xb9, 0xa3, 0x5c, 0x11, 0xae,
- 0x2c, 0xa2, 0xc3, 0x95, 0x4b, 0x9a, 0xb1, 0xaa, 0xa9, 0x95, 0xb9, 0x50, 0xbd, 0xe6, 0x2f, 0x6a,
- 0xfb, 0x52, 0xf5, 0xc3, 0x6e, 0xd0, 0x64, 0x0f, 0x4a, 0xbc, 0x9b, 0x9e, 0x9f, 0xeb, 0x3a, 0xf9,
- 0x4b, 0x6a, 0x23, 0x44, 0xf6, 0x40, 0xa0, 0x26, 0x19, 0xdd, 0x4b, 0x33, 0x10, 0x67, 0x6f, 0x2f,
- 0xcf, 0xcf, 0x33, 0x16, 0x4f, 0x51, 0x32, 0x5a, 0x8b, 0x47, 0xb6, 0x9c, 0x48, 0x46, 0x7d, 0x9c,
- 0x39, 0x79, 0xa9, 0xa5, 0xa7, 0x90, 0xb0, 0x3c, 0x49, 0x33, 0x7c, 0x15, 0x4b, 0x68, 0x6a, 0x21,
- 0x71, 0xf2, 0xd2, 0x82, 0xcc, 0x24, 0x55, 0x8b, 0xea, 0x6e, 0xdf, 0x94, 0xff, 0x7e, 0x5b, 0xd1,
- 0x12, 0x13, 0x93, 0x94, 0x07, 0x33, 0x6b, 0xb2, 0x5a, 0x78, 0x56, 0x08, 0xe3, 0xb7, 0xda, 0x5a,
- 0x52, 0x42, 0xac, 0xc9, 0x5c, 0xc2, 0xac, 0x2d, 0xea, 0xdf, 0x77, 0xd9, 0x55, 0x2e, 0x8c, 0xde,
- 0x69, 0xab, 0x34, 0x32, 0x62, 0x6d, 0x81, 0x19, 0x65, 0xf8, 0xc7, 0xd1, 0xaf, 0x0a, 0xc3, 0x25,
- 0x2b, 0x86, 0x37, 0x3c, 0x0a, 0xa5, 0x75, 0x6b, 0xea, 0x26, 0x29, 0x37, 0x97, 0xff, 0x74, 0x6c,
- 0x9c, 0x55, 0xf1, 0x0c, 0x86, 0xf7, 0x88, 0x16, 0x17, 0x52, 0xe2, 0xf2, 0x5f, 0x9b, 0x72, 0xa3,
- 0xe2, 0x98, 0x4d, 0x95, 0x75, 0x4f, 0x0d, 0xb5, 0x30, 0x14, 0x15, 0x36, 0x64, 0x8e, 0x4b, 0x8e,
- 0xe3, 0x65, 0x3a, 0xd3, 0x13, 0x8e, 0x1c, 0xb7, 0x2a, 0x74, 0x5c, 0x62, 0x98, 0x91, 0x05, 0x11,
- 0xc7, 0x25, 0x24, 0xac, 0x7c, 0xfe, 0xdb, 0x20, 0xba, 0x65, 0x98, 0xfd, 0x66, 0x17, 0xeb, 0x20,
- 0x3f, 0x67, 0xaf, 0x53, 0x7e, 0x71, 0x98, 0xe6, 0x97, 0xd5, 0xf0, 0x33, 0xca, 0xa4, 0x9f, 0xd7,
- 0x45, 0xf9, 0xfc, 0xda, 0x7a, 0x26, 0x83, 0x6c, 0xb6, 0x78, 0xcc, 0xb9, 0xa8, 0xd4, 0x40, 0x19,
- 0xa4, 0xde, 0x09, 0xc2, 0x1c, 0x91, 0x41, 0x86, 0x78, 0xd3, 0xc4, 0xda, 0x79, 0xc6, 0x72, 0xdc,
- 0xc4, 0xc6, 0x42, 0x2d, 0x24, 0x9a, 0xb8, 0x05, 0x99, 0xf1, 0xb8, 0x11, 0xc9, 0xdd, 0x88, 0xed,
- 0x2c, 0x43, 0xe3, 0xb1, 0x56, 0xd5, 0x00, 0x31, 0x1e, 0x7b, 0x41, 0xe5, 0xe7, 0x34, 0xfa, 0x4e,
- 0xfd, 0x48, 0x4f, 0x4a, 0x58, 0xa6, 0x80, 0x8f, 0xf0, 0x2d, 0x09, 0xd1, 0xff, 0x5d, 0xc2, 0xf4,
- 0xac, 0xb3, 0xbc, 0x2a, 0xb2, 0xb8, 0xba, 0x50, 0x07, 0xaf, 0x6e, 0x9d, 0x1b, 0x21, 0x3e, 0x7a,
- 0xbd, 0xdf, 0x41, 0x99, 0x41, 0xbd, 0x91, 0xe9, 0x21, 0xe6, 0x81, 0x5f, 0xb5, 0x35, 0xcc, 0xac,
- 0x75, 0x72, 0x66, 0x27, 0x78, 0x3f, 0xce, 0x32, 0x28, 0x57, 0x8d, 0xec, 0x28, 0xce, 0xd3, 0x73,
- 0xa8, 0x38, 0xda, 0x09, 0x56, 0xd4, 0x08, 0x63, 0xc4, 0x4e, 0x70, 0x00, 0x37, 0xd9, 0x3c, 0xf2,
- 0x7c, 0x90, 0x4f, 0xe1, 0x2d, 0xca, 0xe6, 0xb1, 0x1d, 0xc1, 0x10, 0xd9, 0x3c, 0xc5, 0x9a, 0x1d,
- 0xd1, 0xe7, 0x19, 0x4b, 0x2e, 0xd5, 0x14, 0xe0, 0x36, 0xb0, 0x90, 0xe0, 0x39, 0xe0, 0x4e, 0x08,
- 0x31, 0x93, 0x80, 0x10, 0x9c, 0x42, 0x91, 0xc5, 0x09, 0xbe, 0xc7, 0x21, 0x75, 0x94, 0x8c, 0x98,
- 0x04, 0x30, 0x83, 0x8a, 0xab, 0xee, 0x87, 0xf8, 0x8a, 0x8b, 0xae, 0x87, 0xdc, 0x09, 0x21, 0x66,
- 0x1a, 0x14, 0x82, 0x71, 0x91, 0xa5, 0x1c, 0x75, 0x03, 0xa9, 0x21, 0x24, 0x44, 0x37, 0x70, 0x09,
- 0x64, 0xf2, 0x08, 0xca, 0x19, 0x78, 0x4d, 0x0a, 0x49, 0xd0, 0x64, 0x43, 0x98, 0xeb, 0x7e, 0xb2,
- 0xee, 0xac, 0x58, 0xa1, 0xeb, 0x7e, 0xaa, 0x5a, 0xac, 0x58, 0x11, 0xd7, 0xfd, 0x1c, 0x00, 0x15,
- 0xf1, 0x24, 0xae, 0xb8, 0xbf, 0x88, 0x42, 0x12, 0x2c, 0x62, 0x43, 0x98, 0x39, 0x5a, 0x16, 0x71,
- 0xc1, 0xd1, 0x1c, 0xad, 0x0a, 0x60, 0x9d, 0xcc, 0xde, 0x24, 0xe5, 0x66, 0x24, 0x91, 0xad, 0x02,
- 0x7c, 0x2f, 0x85, 0x6c, 0x5a, 0xa1, 0x91, 0x44, 0x3d, 0xf7, 0x46, 0x4a, 0x8c, 0x24, 0x6d, 0x0a,
- 0x85, 0x92, 0xda, 0x37, 0xf6, 0xd5, 0x0e, 0x6d, 0x19, 0xdf, 0x09, 0x21, 0x66, 0x7c, 0x6a, 0x0a,
- 0xbd, 0x13, 0x97, 0x65, 0x5a, 0x4f, 0xfe, 0x0f, 0xfc, 0x05, 0x6a, 0xe4, 0xc4, 0xf8, 0xe4, 0xe3,
- 0x50, 0xf7, 0x6a, 0x06, 0x6e, 0x5f, 0xc1, 0xf0, 0xd0, 0x7d, 0x37, 0xc8, 0x98, 0x8c, 0x53, 0x48,
- 0xac, 0xa3, 0x45, 0xdf, 0xd3, 0xf4, 0x9c, 0x2c, 0x3e, 0xe8, 0xc2, 0xac, 0xeb, 0xf8, 0xda, 0xc5,
- 0x11, 0x5b, 0xc2, 0x84, 0xbd, 0x78, 0x9b, 0x56, 0x3c, 0xcd, 0x67, 0x6a, 0xe6, 0x7e, 0x46, 0x58,
- 0xf2, 0xc1, 0xc4, 0x75, 0xfc, 0x4e, 0x25, 0x93, 0x40, 0xa0, 0xb2, 0x1c, 0xc3, 0x95, 0x37, 0x81,
- 0xc0, 0x16, 0x35, 0x47, 0x24, 0x10, 0x21, 0xde, 0xec, 0xa3, 0x68, 0xe7, 0xea, 0x9d, 0xc5, 0x09,
- 0x6b, 0x72, 0x39, 0xca, 0x1a, 0x06, 0x89, 0xa5, 0x6c, 0x50, 0xc1, 0xac, 0x2f, 0xb5, 0x7f, 0xd3,
- 0xc5, 0x1e, 0x12, 0x76, 0xda, 0xdd, 0xec, 0x51, 0x0f, 0xd2, 0xe3, 0xca, 0x9c, 0x8f, 0x53, 0xae,
- 0xda, 0xc7, 0xe3, 0x8f, 0x7a, 0x90, 0xd6, 0x9e, 0x8c, 0x5d, 0xad, 0xe7, 0x71, 0x72, 0x39, 0x2b,
- 0xd9, 0x22, 0x9f, 0xee, 0xb0, 0x8c, 0x95, 0x68, 0x4f, 0xc6, 0x29, 0x35, 0x42, 0x89, 0x3d, 0x99,
- 0x0e, 0x15, 0x93, 0xc1, 0xd9, 0xa5, 0xd8, 0xce, 0xd2, 0x19, 0x5e, 0x51, 0x3b, 0x86, 0x04, 0x40,
- 0x64, 0x70, 0x5e, 0xd0, 0x13, 0x44, 0x72, 0xc5, 0xcd, 0xd3, 0x24, 0xce, 0xa4, 0xbf, 0x2d, 0xda,
- 0x8c, 0x03, 0x76, 0x06, 0x91, 0x47, 0xc1, 0x53, 0xcf, 0xc9, 0xa2, 0xcc, 0x0f, 0x72, 0xce, 0xc8,
- 0x7a, 0x36, 0x40, 0x67, 0x3d, 0x2d, 0x10, 0x0d, 0xab, 0x13, 0x78, 0x5b, 0x97, 0xa6, 0xfe, 0xc7,
- 0x37, 0xac, 0xd6, 0xbf, 0x8f, 0x94, 0x3c, 0x34, 0xac, 0x22, 0x0e, 0x55, 0x46, 0x39, 0x91, 0x01,
- 0x13, 0xd0, 0x76, 0xc3, 0xe4, 0x61, 0x37, 0xe8, 0xf7, 0x33, 0xe6, 0xab, 0x0c, 0x42, 0x7e, 0x04,
- 0xd0, 0xc7, 0x4f, 0x03, 0x9a, 0xed, 0x16, 0xa7, 0x3e, 0x17, 0x90, 0x5c, 0xb6, 0xae, 0xfb, 0xb8,
- 0x05, 0x95, 0x08, 0xb1, 0xdd, 0x42, 0xa0, 0xfe, 0x26, 0x3a, 0x48, 0x58, 0x1e, 0x6a, 0xa2, 0x5a,
- 0xde, 0xa7, 0x89, 0x14, 0x67, 0x16, 0xbf, 0x5a, 0xaa, 0x22, 0x53, 0x36, 0xd3, 0x3a, 0x61, 0xc1,
- 0x86, 0x88, 0xc5, 0x2f, 0x09, 0x9b, 0x9c, 0x1c, 0xfb, 0x3c, 0x6a, 0xdf, 0x1d, 0x6e, 0x59, 0x39,
- 0xa2, 0xef, 0x0e, 0x53, 0x2c, 0x5d, 0x49, 0x19, 0x23, 0x1d, 0x56, 0xdc, 0x38, 0xd9, 0xe8, 0x07,
- 0x9b, 0x25, 0x8f, 0xe3, 0x73, 0x27, 0x83, 0xb8, 0x94, 0x5e, 0x37, 0x03, 0x86, 0x0c, 0x46, 0x2c,
- 0x79, 0x02, 0x38, 0x1a, 0xc2, 0x1c, 0xcf, 0x3b, 0x2c, 0xe7, 0x90, 0x73, 0xdf, 0x10, 0xe6, 0x1a,
- 0x53, 0x60, 0x68, 0x08, 0xa3, 0x14, 0x50, 0xdc, 0x8a, 0xfd, 0x20, 0xe0, 0xc7, 0xf1, 0xdc, 0x9b,
- 0xb1, 0xc9, 0xbd, 0x1e, 0x29, 0x0f, 0xc5, 0x2d, 0xe2, 0xac, 0x03, 0x37, 0xdb, 0xcb, 0x24, 0x2e,
- 0x67, 0x7a, 0x77, 0x63, 0x3a, 0x7c, 0x42, 0xdb, 0x71, 0x49, 0xe2, 0xc0, 0x2d, 0xac, 0x81, 0x86,
- 0x9d, 0x83, 0x79, 0x3c, 0xd3, 0x35, 0xf5, 0xd4, 0x40, 0xc8, 0x5b, 0x55, 0x7d, 0xd8, 0x0d, 0x22,
- 0x3f, 0xaf, 0xd2, 0x29, 0xb0, 0x80, 0x1f, 0x21, 0xef, 0xe3, 0x07, 0x83, 0x28, 0x7b, 0xab, 0xeb,
- 0x2d, 0x57, 0x74, 0xdb, 0xf9, 0x54, 0xad, 0x63, 0x47, 0xc4, 0xe3, 0x41, 0x5c, 0x28, 0x7b, 0x23,
- 0x78, 0xd4, 0x47, 0x9b, 0x0d, 0xda, 0x50, 0x1f, 0xd5, 0xfb, 0xaf, 0x7d, 0xfa, 0xa8, 0x0f, 0x56,
- 0x3e, 0x7f, 0xaa, 0xfa, 0xe8, 0x6e, 0xcc, 0xe3, 0x3a, 0x6f, 0x7f, 0x95, 0xc2, 0x95, 0x5a, 0x08,
- 0x7b, 0xea, 0xdb, 0x50, 0x23, 0xf1, 0xd2, 0x18, 0x5a, 0x15, 0x6f, 0xf5, 0xe6, 0x03, 0xbe, 0xd5,
- 0x0a, 0xa1, 0xd3, 0x37, 0x5a, 0x2a, 0x6c, 0xf5, 0xe6, 0x03, 0xbe, 0xd5, 0xdb, 0xa8, 0x9d, 0xbe,
- 0xd1, 0x2b, 0xa9, 0x5b, 0xbd, 0x79, 0xe5, 0xfb, 0x6f, 0x9a, 0x8e, 0x6b, 0x3b, 0xaf, 0xf3, 0xb0,
- 0x84, 0xa7, 0x4b, 0xf0, 0xa5, 0x93, 0xae, 0x3d, 0x8d, 0x86, 0xd2, 0x49, 0x5a, 0xc5, 0xfa, 0x84,
- 0x89, 0xaf, 0x14, 0x27, 0xac, 0x4a, 0xc5, 0x81, 0xf9, 0xb3, 0x1e, 0x46, 0x1b, 0x38, 0xb4, 0x68,
- 0x0a, 0x29, 0x99, 0xe3, 0x46, 0x07, 0x35, 0xb7, 0x7b, 0x37, 0x02, 0xf6, 0xda, 0x97, 0x7c, 0x37,
- 0x7b, 0xd2, 0xe6, 0xe0, 0xcf, 0x61, 0xec, 0x13, 0xc7, 0x50, 0xab, 0x7a, 0x0f, 0x1d, 0x9f, 0xf4,
- 0x57, 0x50, 0xee, 0xff, 0xae, 0x59, 0x57, 0x60, 0xff, 0xaa, 0x13, 0x3c, 0xed, 0x63, 0x11, 0x75,
- 0x84, 0x67, 0xd7, 0xd2, 0x51, 0x05, 0xf9, 0xaf, 0x41, 0x74, 0xc7, 0x5b, 0x10, 0xf7, 0xec, 0xf9,
- 0xf7, 0xfb, 0xd8, 0xf6, 0x9f, 0x41, 0x7f, 0xf1, 0x6d, 0x54, 0x55, 0xe9, 0xfe, 0xa9, 0x59, 0xde,
- 0x37, 0x1a, 0xe2, 0x0d, 0x8c, 0x97, 0xe5, 0x14, 0x4a, 0xd5, 0x63, 0x43, 0x41, 0x67, 0x60, 0xdc,
- 0x6f, 0x3f, 0xbd, 0xa6, 0x96, 0xf5, 0xb9, 0x1d, 0x07, 0x56, 0x6f, 0xd6, 0x59, 0xe5, 0x09, 0x59,
- 0xb6, 0x68, 0x5c, 0xa0, 0xcf, 0xae, 0xab, 0x46, 0xf5, 0x64, 0x0b, 0x16, 0x6f, 0xef, 0x3f, 0xeb,
- 0x69, 0xd8, 0x79, 0x9f, 0xff, 0x93, 0xeb, 0x29, 0xa9, 0xb2, 0xfc, 0x7c, 0x10, 0xdd, 0x77, 0x58,
- 0x73, 0xda, 0x81, 0xf6, 0x64, 0x7e, 0x14, 0xb0, 0x4f, 0x29, 0xe9, 0xc2, 0xfd, 0xc1, 0xb7, 0x53,
- 0x36, 0xdf, 0xa6, 0x71, 0x54, 0xf6, 0xd2, 0x8c, 0x43, 0xd9, 0xfe, 0x36, 0x8d, 0x6b, 0x57, 0x52,
- 0x23, 0xfa, 0xdb, 0x34, 0x01, 0xdc, 0xfa, 0x36, 0x8d, 0xc7, 0xb3, 0xf7, 0xdb, 0x34, 0x5e, 0x6b,
- 0xc1, 0x6f, 0xd3, 0x84, 0x35, 0xa8, 0xc9, 0xa7, 0x29, 0x82, 0xdc, 0x55, 0xef, 0x65, 0xd1, 0xdd,
- 0x64, 0x7f, 0x7a, 0x1d, 0x15, 0x62, 0xfa, 0x95, 0x9c, 0xb8, 0x11, 0xd7, 0xe3, 0x99, 0x3a, 0xb7,
- 0xe2, 0xb6, 0x7a, 0xf3, 0xca, 0xf7, 0x4f, 0xd4, 0xda, 0x4b, 0x4f, 0x36, 0xac, 0x14, 0xef, 0x37,
- 0xae, 0x87, 0x26, 0x8f, 0xda, 0x82, 0xdd, 0xf2, 0x1b, 0xfd, 0x60, 0xa2, 0xba, 0x35, 0xa1, 0x1a,
- 0x7d, 0xd4, 0x65, 0x08, 0x35, 0xf9, 0x56, 0x6f, 0x9e, 0x98, 0xe4, 0xa4, 0x6f, 0xd9, 0xda, 0x3d,
- 0x8c, 0xb9, 0x6d, 0xfd, 0xa4, 0xbf, 0x82, 0x72, 0xbf, 0x54, 0x49, 0xad, 0xed, 0x5e, 0xb4, 0xf3,
- 0x66, 0x97, 0xa9, 0xb1, 0xd3, 0xcc, 0xa3, 0xbe, 0x78, 0x28, 0xbd, 0xb1, 0x27, 0xf8, 0xae, 0xf4,
- 0xc6, 0x3b, 0xc9, 0x7f, 0x72, 0x3d, 0x25, 0x55, 0x96, 0x7f, 0x1d, 0x44, 0x37, 0xc9, 0xb2, 0xa8,
- 0x38, 0xf8, 0xac, 0xaf, 0x65, 0x14, 0x0f, 0x9f, 0x5f, 0x5b, 0x4f, 0x15, 0xea, 0x3f, 0x06, 0xd1,
- 0xad, 0x40, 0xa1, 0x64, 0x80, 0x5c, 0xc3, 0xba, 0x1b, 0x28, 0x3f, 0xbc, 0xbe, 0x22, 0x35, 0xdd,
- 0xdb, 0xf8, 0xb8, 0xfd, 0xd1, 0x96, 0x80, 0xed, 0x31, 0xfd, 0xd1, 0x96, 0x6e, 0x2d, 0xbc, 0x05,
- 0x55, 0x27, 0x25, 0x6a, 0x65, 0xe4, 0xdb, 0x82, 0x12, 0x39, 0x0b, 0x5a, 0x11, 0xad, 0x75, 0x72,
- 0x3e, 0x27, 0x2f, 0xde, 0x16, 0x71, 0x3e, 0xa5, 0x9d, 0x48, 0x79, 0xb7, 0x13, 0xcd, 0xe1, 0xad,
- 0xbb, 0x5a, 0x7a, 0xca, 0x9a, 0x65, 0xde, 0x23, 0x4a, 0x5f, 0x23, 0xc1, 0xad, 0xbb, 0x16, 0x4a,
- 0x78, 0x53, 0x39, 0x6d, 0xc8, 0x1b, 0x4a, 0x65, 0x1f, 0xf7, 0x41, 0xd1, 0x02, 0x42, 0x7b, 0xd3,
- 0x27, 0x02, 0x1b, 0x21, 0x2b, 0xad, 0x53, 0x81, 0xcd, 0x9e, 0x34, 0xe1, 0x76, 0x0c, 0xfc, 0x4b,
- 0x88, 0xa7, 0x50, 0x06, 0xdd, 0x6a, 0xaa, 0x97, 0x5b, 0x9b, 0xf6, 0xb9, 0xdd, 0x61, 0xd9, 0x62,
- 0x9e, 0xab, 0xc6, 0x24, 0xdd, 0xda, 0x54, 0xb7, 0x5b, 0x44, 0xe3, 0x4d, 0x4b, 0xe3, 0x56, 0xa4,
- 0x97, 0x8f, 0xc3, 0x66, 0x9c, 0xac, 0x72, 0xbd, 0x17, 0x4b, 0xd7, 0x53, 0x85, 0x51, 0x47, 0x3d,
- 0x51, 0x24, 0x6d, 0xf6, 0xa4, 0xf1, 0xee, 0xa1, 0xe5, 0x56, 0xc7, 0xd3, 0x56, 0x87, 0xad, 0x56,
- 0x48, 0x3d, 0xe9, 0xaf, 0x80, 0xf7, 0x6a, 0x55, 0x54, 0xd5, 0xeb, 0xa2, 0xbd, 0x34, 0xcb, 0x86,
- 0xeb, 0x81, 0x30, 0x69, 0xa0, 0xe0, 0x5e, 0xad, 0x07, 0x26, 0x22, 0xb9, 0xd9, 0xdb, 0xcc, 0x87,
- 0x5d, 0x76, 0x04, 0xd5, 0x2b, 0x92, 0x6d, 0x1a, 0xed, 0xb7, 0x59, 0x8f, 0x5a, 0xd7, 0x76, 0x14,
- 0x7e, 0x70, 0xad, 0x0a, 0x6f, 0xf5, 0xe6, 0xd1, 0x65, 0x00, 0x41, 0x89, 0x99, 0xe5, 0x1e, 0x65,
- 0xc2, 0x99, 0x49, 0xee, 0x77, 0x50, 0x68, 0xcf, 0x52, 0x76, 0xa3, 0xd7, 0xe9, 0x74, 0x06, 0xdc,
- 0x7b, 0x8e, 0x65, 0x03, 0xc1, 0x73, 0x2c, 0x04, 0xa2, 0xa6, 0x93, 0xbf, 0xeb, 0xcd, 0xda, 0x83,
- 0xa9, 0xaf, 0xe9, 0x94, 0xb2, 0x45, 0x85, 0x9a, 0xce, 0x4b, 0xa3, 0xd1, 0x40, 0xbb, 0x55, 0x2f,
- 0xd1, 0x3f, 0x0e, 0x99, 0x41, 0x6f, 0xd2, 0xaf, 0xf7, 0x62, 0xd1, 0x8c, 0x62, 0x1c, 0xa6, 0xf3,
- 0x94, 0xfb, 0x66, 0x14, 0xcb, 0x46, 0x8d, 0x84, 0x66, 0x94, 0x36, 0x4a, 0x55, 0xaf, 0xce, 0x11,
- 0x0e, 0xa6, 0xe1, 0xea, 0x49, 0xa6, 0x5f, 0xf5, 0x34, 0xdb, 0x3a, 0x76, 0xcd, 0x75, 0xc8, 0xf0,
- 0x0b, 0xb5, 0x58, 0xf6, 0xc4, 0xb6, 0x78, 0xb9, 0x12, 0x83, 0xa1, 0x51, 0x87, 0x52, 0xc0, 0xc7,
- 0x09, 0x35, 0xd7, 0x9c, 0x0c, 0x17, 0x05, 0xc4, 0x65, 0x9c, 0x27, 0xde, 0xc5, 0xa9, 0x30, 0xd8,
- 0x22, 0x43, 0x8b, 0x53, 0x52, 0x03, 0x1d, 0xea, 0xbb, 0xaf, 0x45, 0x7a, 0xba, 0x82, 0x7e, 0xff,
- 0xd0, 0x7d, 0x2b, 0xf2, 0x51, 0x0f, 0x12, 0x1f, 0xea, 0x37, 0x80, 0xde, 0x96, 0x97, 0x4e, 0x3f,
- 0x0e, 0x98, 0x72, 0xd1, 0xd0, 0x42, 0x98, 0x56, 0x41, 0x41, 0xad, 0x13, 0x5c, 0xe0, 0x3f, 0x86,
- 0x95, 0x2f, 0xa8, 0x4d, 0x7e, 0x2a, 0x90, 0x50, 0x50, 0xb7, 0x51, 0x94, 0x67, 0xda, 0xeb, 0xa0,
- 0x07, 0x01, 0x7d, 0x7b, 0xe9, 0xb3, 0xd6, 0xc9, 0xa1, 0x9e, 0xb3, 0x9b, 0x2e, 0x9d, 0x53, 0x0c,
- 0x4f, 0x41, 0x77, 0xd3, 0xa5, 0xff, 0x10, 0x63, 0xbd, 0x17, 0x8b, 0x2f, 0x0c, 0xc4, 0x1c, 0xde,
- 0x36, 0x27, 0xf9, 0x9e, 0xe2, 0x0a, 0x79, 0xeb, 0x28, 0xff, 0x61, 0x37, 0x68, 0xae, 0xe7, 0x9e,
- 0x94, 0x2c, 0x81, 0xaa, 0x52, 0x5f, 0xb2, 0x73, 0xef, 0x3f, 0x29, 0xd9, 0x08, 0x7d, 0xc7, 0xee,
- 0x5e, 0x18, 0x52, 0xb6, 0xbf, 0x8c, 0xde, 0x3d, 0x64, 0xb3, 0x31, 0xe4, 0xd3, 0xe1, 0x0f, 0xdc,
- 0x0b, 0xb1, 0x6c, 0x36, 0xaa, 0x7f, 0xd6, 0xf6, 0x6e, 0x50, 0x62, 0x73, 0xa5, 0x6f, 0x17, 0xde,
- 0x2c, 0x66, 0x63, 0x1e, 0x73, 0x74, 0xa5, 0x4f, 0xfc, 0x3e, 0xaa, 0x05, 0xc4, 0x95, 0x3e, 0x07,
- 0x40, 0xf6, 0x26, 0x25, 0x80, 0xd7, 0x5e, 0x2d, 0x08, 0xda, 0x53, 0x80, 0x99, 0x75, 0xb5, 0xbd,
- 0x3a, 0xb1, 0xc5, 0x57, 0xf0, 0x8c, 0x8e, 0x90, 0x12, 0xb3, 0x6e, 0x9b, 0x32, 0xc1, 0x20, 0xab,
- 0x2f, 0xbe, 0xad, 0xb1, 0x98, 0xcf, 0xe3, 0x72, 0x85, 0x82, 0x41, 0xd5, 0xd2, 0x02, 0x88, 0x60,
- 0xf0, 0x82, 0x26, 0xca, 0x9b, 0xc7, 0x9c, 0x5c, 0xee, 0xb3, 0x92, 0x2d, 0x78, 0x9a, 0x03, 0xfe,
- 0xbe, 0x82, 0x7e, 0xa0, 0x36, 0x43, 0x44, 0x39, 0xc5, 0x9a, 0xac, 0x50, 0x10, 0xf2, 0x76, 0xa0,
- 0xf8, 0x1e, 0x6c, 0xc5, 0x59, 0x89, 0x4f, 0x07, 0xa5, 0x15, 0x0c, 0x11, 0x59, 0x21, 0x09, 0xa3,
- 0xb6, 0x3f, 0x49, 0xf3, 0x99, 0xb7, 0xed, 0x4f, 0xec, 0xaf, 0x29, 0xde, 0xa2, 0x01, 0x33, 0xbe,
- 0xcb, 0x87, 0x26, 0xbf, 0x61, 0xa4, 0xde, 0x92, 0xf4, 0x3e, 0x74, 0x9b, 0x20, 0xc6, 0x77, 0x3f,
- 0x89, 0x5c, 0xbd, 0x2c, 0x20, 0x87, 0x69, 0x73, 0x07, 0xce, 0xe7, 0xca, 0x21, 0x82, 0xae, 0x30,
- 0x69, 0x46, 0x55, 0x21, 0x3f, 0x5d, 0xe4, 0x27, 0x25, 0x3b, 0x4f, 0x33, 0x28, 0xd1, 0xa8, 0x2a,
- 0xd5, 0x2d, 0x39, 0x31, 0xaa, 0xfa, 0x38, 0x73, 0x99, 0x42, 0x48, 0x9d, 0x8f, 0x1a, 0x4f, 0xca,
- 0x38, 0xc1, 0x97, 0x29, 0xa4, 0x8d, 0x36, 0x46, 0xec, 0xa4, 0x05, 0x70, 0x13, 0xe9, 0x47, 0xc0,
- 0xcb, 0x34, 0xa9, 0xc6, 0xc0, 0x4f, 0xe2, 0x32, 0x9e, 0x03, 0x87, 0x12, 0x47, 0xba, 0x42, 0x46,
- 0x0e, 0x43, 0x44, 0x3a, 0xc5, 0x2a, 0x87, 0x7f, 0x18, 0xbd, 0x5f, 0x0f, 0xf4, 0x90, 0xab, 0xef,
- 0xef, 0xbf, 0x10, 0x7f, 0xb8, 0x63, 0xf8, 0x81, 0xb6, 0x31, 0xe6, 0x25, 0xc4, 0xf3, 0xc6, 0xf6,
- 0x7b, 0xfa, 0x77, 0x01, 0x3e, 0x19, 0xd4, 0x0d, 0x72, 0xcc, 0x78, 0x7a, 0x5e, 0xaf, 0xab, 0xd4,
- 0x29, 0x16, 0x6a, 0x10, 0x5b, 0x3c, 0x0a, 0x7c, 0x32, 0xc0, 0xc7, 0x99, 0x81, 0xc6, 0x96, 0x9e,
- 0x42, 0x91, 0xe1, 0x81, 0xc6, 0xd1, 0x16, 0x00, 0x31, 0xd0, 0x78, 0x41, 0x13, 0x5d, 0xb6, 0x78,
- 0x02, 0xe1, 0xca, 0x4c, 0xa0, 0x5f, 0x65, 0x26, 0xce, 0x3b, 0x02, 0x59, 0xf4, 0xfe, 0x11, 0xcc,
- 0xdf, 0x40, 0x59, 0x5d, 0xa4, 0xc5, 0x7e, 0x3d, 0xc3, 0xc6, 0x7c, 0x81, 0xdf, 0xa2, 0x33, 0xc4,
- 0x48, 0x23, 0x44, 0x1a, 0x42, 0xa0, 0x66, 0x28, 0x33, 0xc0, 0x41, 0x75, 0x1c, 0xcf, 0x41, 0x7c,
- 0x00, 0x61, 0xb8, 0x4e, 0x19, 0xb1, 0x20, 0x62, 0x28, 0x23, 0x61, 0xeb, 0x75, 0x23, 0xc3, 0x9c,
- 0xc2, 0xac, 0x8e, 0xb0, 0xf2, 0x24, 0x5e, 0xcd, 0x21, 0xe7, 0xca, 0x24, 0xda, 0x84, 0xb5, 0x4c,
- 0xfa, 0x79, 0x62, 0x13, 0xb6, 0x8f, 0x9e, 0x95, 0x74, 0x3b, 0x0f, 0xfe, 0x84, 0x95, 0x5c, 0xfe,
- 0x75, 0x8d, 0xb3, 0x32, 0x43, 0x49, 0xb7, 0xfb, 0x50, 0x1d, 0x92, 0x48, 0xba, 0xc3, 0x1a, 0xd6,
- 0x67, 0xa9, 0x9d, 0x32, 0xbc, 0x82, 0x52, 0xc7, 0xc9, 0x8b, 0x79, 0x9c, 0x66, 0x2a, 0x1a, 0xbe,
- 0x08, 0xd8, 0x26, 0x74, 0x88, 0xcf, 0x52, 0xf7, 0xd5, 0xb5, 0x3e, 0xe4, 0x1d, 0x2e, 0x21, 0xda,
- 0x13, 0xee, 0xb0, 0x4f, 0xec, 0x09, 0x77, 0x6b, 0x99, 0xa5, 0x9a, 0x61, 0x05, 0xb7, 0x12, 0xc4,
- 0x0e, 0x9b, 0xe2, 0x0d, 0x22, 0xcb, 0x26, 0x02, 0x89, 0xa5, 0x5a, 0x50, 0xc1, 0xcc, 0x6d, 0x06,
- 0xdb, 0x4b, 0xf3, 0x38, 0x4b, 0x7f, 0x8a, 0xef, 0x3e, 0x5b, 0x76, 0x1a, 0x82, 0x98, 0xdb, 0xfc,
- 0xa4, 0xcf, 0xd5, 0x3e, 0xf0, 0x49, 0x5a, 0x0f, 0xfd, 0x0f, 0x03, 0xcf, 0x4d, 0x10, 0xdd, 0xae,
- 0x2c, 0x52, 0xb9, 0xfa, 0xd9, 0x20, 0xba, 0x89, 0x1f, 0xeb, 0x76, 0x51, 0x8c, 0xeb, 0x94, 0xe4,
- 0x14, 0x12, 0x48, 0x0b, 0x3e, 0xfc, 0x34, 0xfc, 0xac, 0x10, 0x4e, 0x9c, 0xac, 0xf7, 0x50, 0xb3,
- 0xce, 0x6b, 0xeb, 0xb1, 0x64, 0x2c, 0xff, 0xec, 0xd4, 0x59, 0x05, 0xa5, 0x9a, 0x29, 0xf7, 0x81,
- 0xa3, 0xde, 0x69, 0x71, 0x23, 0x0b, 0xac, 0x2b, 0x4a, 0xf4, 0xce, 0xb0, 0x86, 0xd9, 0xdd, 0xb1,
- 0xb8, 0x53, 0xa8, 0x58, 0xb6, 0x04, 0x71, 0xfd, 0x6d, 0x83, 0x34, 0x66, 0x51, 0xc4, 0xee, 0x0e,
- 0x4d, 0x9b, 0x74, 0xa3, 0xed, 0x76, 0x3b, 0x5f, 0x1d, 0xe0, 0x33, 0x72, 0x8f, 0x25, 0x81, 0x11,
- 0xe9, 0x46, 0x00, 0xb7, 0x76, 0x3f, 0x4b, 0x16, 0x4f, 0x93, 0xb8, 0xe2, 0x27, 0xf1, 0x2a, 0x63,
- 0xf1, 0x54, 0xcc, 0xeb, 0x78, 0xf7, 0xb3, 0x61, 0x46, 0x36, 0x44, 0xed, 0x7e, 0x52, 0xb0, 0x59,
- 0xd9, 0xa9, 0xbf, 0xa6, 0xa5, 0xae, 0x16, 0xde, 0x45, 0x39, 0x92, 0x28, 0x2f, 0xbe, 0x56, 0x78,
- 0x2f, 0x0c, 0x99, 0x57, 0xa2, 0xa4, 0x48, 0xa4, 0x21, 0xb7, 0x7c, 0x3a, 0x4e, 0x02, 0x72, 0x3b,
- 0x40, 0x98, 0xcf, 0x24, 0xc8, 0xdf, 0x9b, 0x3f, 0x08, 0xc1, 0xd5, 0x47, 0x74, 0x37, 0x7c, 0xba,
- 0x36, 0x34, 0xb2, 0xbf, 0x43, 0xb6, 0xd9, 0x93, 0x36, 0x0b, 0x37, 0xf5, 0x21, 0xdf, 0x23, 0xa8,
- 0x3c, 0xef, 0x37, 0xd7, 0xc2, 0x91, 0x91, 0x12, 0x0b, 0xb7, 0x36, 0x65, 0x02, 0xbd, 0x96, 0xbd,
- 0x98, 0xa6, 0x5c, 0xc9, 0x9a, 0x0b, 0xbb, 0x1b, 0x6d, 0x03, 0x6d, 0x8a, 0xa8, 0x15, 0x4d, 0x9b,
- 0xb1, 0xbc, 0x66, 0x26, 0x6c, 0x36, 0xcb, 0x40, 0x41, 0xa7, 0x10, 0xcb, 0xef, 0xad, 0x6d, 0xb5,
- 0x6d, 0x79, 0x41, 0x62, 0x2c, 0x0f, 0x2a, 0x98, 0x34, 0xb2, 0xc6, 0xe4, 0x19, 0x44, 0xf3, 0x60,
- 0xd7, 0xda, 0x66, 0x1c, 0x80, 0x48, 0x23, 0xbd, 0xa0, 0x79, 0x0d, 0xab, 0x16, 0xef, 0x43, 0xf3,
- 0x24, 0xf0, 0xd7, 0x69, 0x84, 0xb2, 0x25, 0x26, 0x5e, 0xc3, 0xf2, 0x60, 0x66, 0x9d, 0x80, 0x3c,
- 0x3c, 0x5f, 0x1d, 0x4c, 0xf1, 0x3a, 0x01, 0xeb, 0x0b, 0x86, 0x58, 0x27, 0x50, 0xac, 0xdb, 0x74,
- 0xfa, 0x53, 0xbc, 0x87, 0x71, 0x65, 0x2a, 0xe7, 0x69, 0x3a, 0x2f, 0x18, 0x6a, 0x3a, 0x4a, 0xc1,
- 0x7d, 0xa4, 0xf6, 0x87, 0x7e, 0x3d, 0x8f, 0xd4, 0xf7, 0x81, 0xdf, 0x07, 0x5d, 0x98, 0xf4, 0xf0,
- 0xfc, 0xf6, 0xff, 0x7c, 0x7d, 0x63, 0xf0, 0x8b, 0xaf, 0x6f, 0x0c, 0xfe, 0xef, 0xeb, 0x1b, 0x83,
- 0x9f, 0x7d, 0x73, 0xe3, 0x9d, 0x5f, 0x7c, 0x73, 0xe3, 0x9d, 0xff, 0xfd, 0xe6, 0xc6, 0x3b, 0x5f,
- 0xbd, 0xab, 0xfe, 0x12, 0xe2, 0x9b, 0x5f, 0x11, 0x7f, 0xcf, 0xf0, 0xd9, 0x2f, 0x03, 0x00, 0x00,
- 0xff, 0xff, 0x51, 0x6f, 0x77, 0xac, 0x2d, 0x71, 0x00, 0x00,
+ 0x65, 0xb7, 0xa7, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0x8f, 0x7b, 0xe1, 0x01, 0x89,
+ 0xbf, 0x86, 0xc7, 0x7d, 0xe4, 0x11, 0xed, 0xfe, 0x23, 0xa8, 0x32, 0xb3, 0xf2, 0x23, 0x2a, 0x23,
+ 0xab, 0xbc, 0x4f, 0x33, 0xea, 0xf8, 0x45, 0x44, 0x66, 0x65, 0x64, 0x66, 0xe4, 0x47, 0x95, 0xa3,
+ 0x9b, 0xc5, 0x9b, 0xad, 0xa2, 0x64, 0x9c, 0x55, 0x5b, 0x15, 0x94, 0xcb, 0x34, 0x81, 0xe6, 0xdf,
+ 0x91, 0xf8, 0x79, 0xf8, 0x6e, 0x9c, 0xaf, 0xf8, 0xaa, 0x80, 0x8f, 0x3e, 0x34, 0x64, 0xc2, 0xe6,
+ 0xf3, 0x38, 0x9f, 0x56, 0x12, 0xf9, 0xe8, 0x03, 0x23, 0x81, 0x25, 0xe4, 0x5c, 0xfd, 0xfe, 0xf4,
+ 0x97, 0xdf, 0x0c, 0xa2, 0xf7, 0x76, 0xb2, 0x14, 0x72, 0xbe, 0xa3, 0x34, 0x86, 0x5f, 0x45, 0xdf,
+ 0xdf, 0x2e, 0x8a, 0x7d, 0xe0, 0xaf, 0xa0, 0xac, 0x52, 0x96, 0x0f, 0xef, 0x8e, 0x94, 0x83, 0xd1,
+ 0x69, 0x91, 0x8c, 0xb6, 0x8b, 0x62, 0x64, 0x84, 0xa3, 0x53, 0xf8, 0xd9, 0x02, 0x2a, 0xfe, 0xd1,
+ 0xbd, 0x30, 0x54, 0x15, 0x2c, 0xaf, 0x60, 0x78, 0x1e, 0xfd, 0xd6, 0x76, 0x51, 0x8c, 0x81, 0xef,
+ 0x42, 0x5d, 0x81, 0x31, 0x8f, 0x39, 0x0c, 0xd7, 0x5a, 0xaa, 0x2e, 0xa0, 0x7d, 0x3c, 0xec, 0x06,
+ 0x95, 0x9f, 0x49, 0xf4, 0xbd, 0xda, 0xcf, 0xc5, 0x82, 0x4f, 0xd9, 0x55, 0x3e, 0xbc, 0xdd, 0x56,
+ 0x54, 0x22, 0x6d, 0xfb, 0x4e, 0x08, 0x51, 0x56, 0x5f, 0x47, 0xbf, 0xfe, 0x3a, 0xce, 0x32, 0xe0,
+ 0x3b, 0x25, 0xd4, 0x05, 0x77, 0x75, 0xa4, 0x68, 0x24, 0x65, 0xda, 0xee, 0xdd, 0x20, 0xa3, 0x0c,
+ 0x7f, 0x15, 0x7d, 0x5f, 0x4a, 0x4e, 0x21, 0x61, 0x4b, 0x28, 0x87, 0x5e, 0x2d, 0x25, 0x24, 0x1e,
+ 0x79, 0x0b, 0xc2, 0xb6, 0x77, 0x58, 0xbe, 0x84, 0x92, 0xfb, 0x6d, 0x2b, 0x61, 0xd8, 0xb6, 0x81,
+ 0x94, 0xed, 0x7f, 0x18, 0x44, 0x3f, 0xdc, 0x4e, 0x12, 0xb6, 0xc8, 0xf9, 0x21, 0x4b, 0xe2, 0xec,
+ 0x30, 0xcd, 0x2f, 0x8f, 0xe1, 0x6a, 0xe7, 0xa2, 0xe6, 0xf3, 0x19, 0x0c, 0x9f, 0xb9, 0x4f, 0x55,
+ 0xa2, 0x23, 0xcd, 0x8e, 0x6c, 0x58, 0xfb, 0xfe, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x32, 0x88,
+ 0x6e, 0xe0, 0xb2, 0x8c, 0x59, 0xb6, 0x04, 0x53, 0x9a, 0x4f, 0x3b, 0x0c, 0xbb, 0xb8, 0x2e, 0xcf,
+ 0x67, 0xd7, 0x55, 0x53, 0x25, 0xca, 0xa2, 0xf7, 0xed, 0x70, 0x19, 0x43, 0x25, 0xba, 0xd3, 0x23,
+ 0x3a, 0x22, 0x14, 0xa2, 0x3d, 0x3f, 0xee, 0x83, 0x2a, 0x6f, 0x69, 0x34, 0x54, 0xde, 0x32, 0x56,
+ 0x69, 0x67, 0x0f, 0xbd, 0x16, 0x2c, 0x42, 0xfb, 0x7a, 0xd4, 0x83, 0x54, 0xae, 0xfe, 0x34, 0xfa,
+ 0x8d, 0xd7, 0xac, 0xbc, 0xac, 0x8a, 0x38, 0x01, 0xd5, 0x15, 0xee, 0xbb, 0xda, 0x8d, 0x14, 0xf7,
+ 0x86, 0x07, 0x5d, 0x98, 0x15, 0xb4, 0x8d, 0xf0, 0x65, 0x01, 0x78, 0x0c, 0x32, 0x8a, 0xb5, 0x90,
+ 0x0a, 0x5a, 0x0c, 0x29, 0xdb, 0x97, 0xd1, 0xd0, 0xd8, 0x7e, 0xf3, 0x67, 0x90, 0xf0, 0xed, 0xe9,
+ 0x14, 0xb7, 0x8a, 0xd1, 0x15, 0xc4, 0x68, 0x7b, 0x3a, 0xa5, 0x5a, 0xc5, 0x8f, 0x2a, 0x67, 0x57,
+ 0xd1, 0x07, 0xc8, 0xd9, 0x61, 0x5a, 0x09, 0x87, 0x9b, 0x61, 0x2b, 0x0a, 0xd3, 0x4e, 0x47, 0x7d,
+ 0x71, 0xe5, 0xf8, 0xaf, 0x06, 0xd1, 0x0f, 0x3c, 0x9e, 0x4f, 0x61, 0xce, 0x96, 0x30, 0x7c, 0xd2,
+ 0x6d, 0x4d, 0x92, 0xda, 0xff, 0xc7, 0xd7, 0xd0, 0xf0, 0x84, 0xc9, 0x18, 0x32, 0x48, 0x38, 0x19,
+ 0x26, 0x52, 0xdc, 0x19, 0x26, 0x1a, 0xb3, 0x7a, 0x58, 0x23, 0xdc, 0x07, 0xbe, 0xb3, 0x28, 0x4b,
+ 0xc8, 0x39, 0xd9, 0x96, 0x06, 0xe9, 0x6c, 0x4b, 0x07, 0xf5, 0xd4, 0x67, 0x1f, 0xf8, 0x76, 0x96,
+ 0x91, 0xf5, 0x91, 0xe2, 0xce, 0xfa, 0x68, 0x4c, 0x79, 0x48, 0xa2, 0xdf, 0xb4, 0x9e, 0x18, 0x3f,
+ 0xc8, 0xcf, 0xd9, 0x90, 0x7e, 0x16, 0x42, 0xae, 0x7d, 0xac, 0x75, 0x72, 0x9e, 0x6a, 0xbc, 0x78,
+ 0x5b, 0xb0, 0x92, 0x6e, 0x16, 0x29, 0xee, 0xac, 0x86, 0xc6, 0x94, 0x87, 0x3f, 0x89, 0xde, 0x53,
+ 0xa3, 0x64, 0x33, 0x9f, 0xdd, 0xf3, 0x0e, 0xa1, 0x78, 0x42, 0xbb, 0xdf, 0x41, 0x99, 0xc1, 0x41,
+ 0xc9, 0xd4, 0xe0, 0x73, 0xd7, 0xab, 0x87, 0x86, 0x9e, 0x7b, 0x61, 0xa8, 0x65, 0x7b, 0x17, 0x32,
+ 0x20, 0x6d, 0x4b, 0x61, 0x87, 0x6d, 0x0d, 0x29, 0xdb, 0x65, 0xf4, 0x3b, 0xfa, 0xb1, 0xd4, 0xf3,
+ 0xa8, 0x90, 0xd7, 0x83, 0xf4, 0x3a, 0x51, 0x6f, 0x1b, 0xd2, 0xbe, 0x36, 0xfa, 0xc1, 0xad, 0xfa,
+ 0xa8, 0x1e, 0xe8, 0xaf, 0x0f, 0xea, 0x7f, 0xf7, 0xc2, 0x90, 0xb2, 0xfd, 0x8f, 0x83, 0xe8, 0x47,
+ 0x4a, 0xf6, 0x22, 0x8f, 0xdf, 0x64, 0x20, 0xa6, 0xc4, 0x63, 0xe0, 0x57, 0xac, 0xbc, 0x1c, 0xaf,
+ 0xf2, 0x84, 0x98, 0xfe, 0xfd, 0x70, 0xc7, 0xf4, 0x4f, 0x2a, 0x59, 0x19, 0x9f, 0xaa, 0x28, 0x67,
+ 0x05, 0xce, 0xf8, 0x9a, 0x1a, 0x70, 0x56, 0x50, 0x19, 0x9f, 0x8b, 0xb4, 0xac, 0x1e, 0xd5, 0xc3,
+ 0xa6, 0xdf, 0xea, 0x91, 0x3d, 0x4e, 0xde, 0x09, 0x21, 0x66, 0xd8, 0x6a, 0x02, 0x98, 0xe5, 0xe7,
+ 0xe9, 0xec, 0xac, 0x98, 0xd6, 0x61, 0xfc, 0xc8, 0x1f, 0xa1, 0x16, 0x42, 0x0c, 0x5b, 0x04, 0xaa,
+ 0xbc, 0xfd, 0xb3, 0x49, 0x8c, 0x54, 0x57, 0xda, 0x2b, 0xd9, 0xfc, 0x10, 0x66, 0x71, 0xb2, 0x52,
+ 0xfd, 0xff, 0x93, 0x50, 0xc7, 0xc3, 0xb4, 0x2e, 0xc4, 0xa7, 0xd7, 0xd4, 0x52, 0xe5, 0xf9, 0xaf,
+ 0x41, 0x74, 0xaf, 0xa9, 0xfe, 0x45, 0x9c, 0xcf, 0x40, 0xb5, 0xa7, 0x2c, 0xfd, 0x76, 0x3e, 0x3d,
+ 0x85, 0x8a, 0xc7, 0x25, 0x1f, 0x7e, 0xe1, 0xaf, 0x64, 0x48, 0x47, 0x97, 0xed, 0x27, 0xdf, 0x49,
+ 0xd7, 0xb4, 0xfa, 0xb8, 0x1e, 0xd8, 0xd4, 0x10, 0xe0, 0xb6, 0xba, 0x90, 0xe0, 0x01, 0xe0, 0x4e,
+ 0x08, 0x31, 0xad, 0x2e, 0x04, 0x07, 0xf9, 0x32, 0xe5, 0xb0, 0x0f, 0x39, 0x94, 0xed, 0x56, 0x97,
+ 0xaa, 0x2e, 0x42, 0xb4, 0x3a, 0x81, 0x9a, 0xc1, 0xc6, 0xf1, 0xa6, 0x27, 0xc7, 0xf5, 0x80, 0x91,
+ 0xd6, 0xf4, 0xb8, 0xd1, 0x0f, 0x36, 0xab, 0x3b, 0xcb, 0xe7, 0x29, 0x2c, 0xd9, 0x25, 0x5e, 0xdd,
+ 0xd9, 0x26, 0x24, 0x40, 0xac, 0xee, 0xbc, 0xa0, 0x99, 0xc1, 0x2c, 0x3f, 0xaf, 0x52, 0xb8, 0x42,
+ 0x33, 0x98, 0xad, 0x5c, 0x8b, 0x89, 0x19, 0xcc, 0x83, 0x29, 0x0f, 0xc7, 0xd1, 0xaf, 0x09, 0xe1,
+ 0x1f, 0xb1, 0x34, 0x1f, 0xde, 0xf4, 0x28, 0xd5, 0x02, 0x6d, 0xf5, 0x16, 0x0d, 0xa0, 0x12, 0xd7,
+ 0xbf, 0xee, 0xc4, 0x79, 0x02, 0x99, 0xb7, 0xc4, 0x46, 0x1c, 0x2c, 0xb1, 0x83, 0x99, 0xd4, 0x41,
+ 0x08, 0xeb, 0xf1, 0x6b, 0x7c, 0x11, 0x97, 0x69, 0x3e, 0x1b, 0xfa, 0x74, 0x2d, 0x39, 0x91, 0x3a,
+ 0xf8, 0x38, 0x14, 0xc2, 0x4a, 0x71, 0xbb, 0x28, 0xca, 0x7a, 0x58, 0xf4, 0x85, 0xb0, 0x8b, 0x04,
+ 0x43, 0xb8, 0x85, 0xfa, 0xbd, 0xed, 0x42, 0x92, 0xa5, 0x79, 0xd0, 0x9b, 0x42, 0xfa, 0x78, 0x33,
+ 0x28, 0x0a, 0xde, 0x43, 0x88, 0x97, 0xd0, 0xd4, 0xcc, 0xf7, 0x64, 0x6c, 0x20, 0x18, 0xbc, 0x08,
+ 0x34, 0xeb, 0x34, 0x21, 0x3e, 0x8a, 0x2f, 0xa1, 0x7e, 0xc0, 0x50, 0xcf, 0x6b, 0x43, 0x9f, 0xbe,
+ 0x43, 0x10, 0xeb, 0x34, 0x3f, 0xa9, 0x5c, 0x2d, 0xa2, 0x0f, 0x84, 0xfc, 0x24, 0x2e, 0x79, 0x9a,
+ 0xa4, 0x45, 0x9c, 0x37, 0xf9, 0xbf, 0xaf, 0x5f, 0xb7, 0x28, 0xed, 0x72, 0xb3, 0x27, 0xad, 0xdc,
+ 0xfe, 0x72, 0x10, 0xdd, 0xc6, 0x7e, 0x4f, 0xa0, 0x9c, 0xa7, 0x62, 0x19, 0x59, 0xc9, 0x41, 0x78,
+ 0xf8, 0x79, 0xd8, 0x68, 0x4b, 0x41, 0x97, 0xe6, 0xc7, 0xd7, 0x57, 0x54, 0x05, 0xfb, 0xe3, 0x28,
+ 0x92, 0xcb, 0x15, 0xb1, 0xa4, 0x74, 0x7b, 0xad, 0x5a, 0xc7, 0x38, 0xeb, 0xc9, 0xdb, 0x01, 0xc2,
+ 0x4c, 0x15, 0xf2, 0x77, 0xb1, 0x52, 0x1e, 0x7a, 0x35, 0x84, 0x88, 0x98, 0x2a, 0x10, 0x82, 0x0b,
+ 0x3a, 0xbe, 0x60, 0x57, 0xfe, 0x82, 0xd6, 0x92, 0x70, 0x41, 0x15, 0x61, 0xf6, 0xae, 0x54, 0x41,
+ 0x7d, 0x7b, 0x57, 0x4d, 0x31, 0x42, 0x7b, 0x57, 0x98, 0x51, 0x86, 0x59, 0xf4, 0xdb, 0xb6, 0xe1,
+ 0xe7, 0x8c, 0x5d, 0xce, 0xe3, 0xf2, 0x72, 0xf8, 0x98, 0x56, 0x6e, 0x18, 0xed, 0x68, 0xbd, 0x17,
+ 0x6b, 0x86, 0x05, 0xdb, 0x61, 0x9d, 0x68, 0x9c, 0x95, 0x19, 0x1a, 0x16, 0x1c, 0x1b, 0x0a, 0x21,
+ 0x86, 0x05, 0x02, 0x35, 0x09, 0xb4, 0xf2, 0x76, 0x11, 0x8b, 0x75, 0xbb, 0xff, 0xa1, 0x48, 0x21,
+ 0x91, 0x40, 0xb7, 0x20, 0x33, 0x2b, 0xd8, 0x35, 0x19, 0x03, 0x5e, 0x89, 0x39, 0x45, 0x1b, 0x03,
+ 0xb5, 0x12, 0xf3, 0x60, 0x38, 0x3c, 0xf7, 0xcb, 0xb8, 0xb8, 0xf0, 0x87, 0xa7, 0x10, 0x85, 0xc3,
+ 0xb3, 0x41, 0x70, 0x2c, 0x8d, 0x21, 0x2e, 0x93, 0x0b, 0x7f, 0x2c, 0x49, 0x59, 0x38, 0x96, 0x34,
+ 0x83, 0x63, 0x49, 0x0a, 0x5e, 0xa7, 0xfc, 0xe2, 0x08, 0x78, 0xec, 0x8f, 0x25, 0x97, 0x09, 0xc7,
+ 0x52, 0x8b, 0x35, 0x59, 0x92, 0xed, 0x70, 0xbc, 0x78, 0x53, 0x25, 0x65, 0xfa, 0x06, 0x86, 0x01,
+ 0x2b, 0x1a, 0x22, 0xb2, 0x24, 0x12, 0x36, 0x13, 0x80, 0xf2, 0xd9, 0xc8, 0x0e, 0xa6, 0x15, 0x9a,
+ 0x00, 0x1a, 0x1b, 0x16, 0x41, 0x4c, 0x00, 0x7e, 0x12, 0x57, 0x6f, 0xbf, 0x64, 0x8b, 0xa2, 0xea,
+ 0xa8, 0x1e, 0x82, 0xc2, 0xd5, 0x6b, 0xc3, 0xca, 0xe7, 0xdb, 0xe8, 0x77, 0xed, 0x47, 0x7a, 0x96,
+ 0x57, 0xda, 0xeb, 0x26, 0xfd, 0x9c, 0x2c, 0x8c, 0xd8, 0xf2, 0x0a, 0xe0, 0x26, 0x05, 0x6a, 0x3c,
+ 0xf3, 0x5d, 0xe0, 0x71, 0x9a, 0x55, 0xc3, 0x07, 0x7e, 0x1b, 0x8d, 0x9c, 0x48, 0x81, 0x7c, 0x1c,
+ 0xee, 0xb3, 0xbb, 0x8b, 0x22, 0x4b, 0x93, 0xf6, 0xde, 0xa7, 0xd2, 0xd5, 0xe2, 0x70, 0x9f, 0xb5,
+ 0x31, 0x3c, 0xbe, 0x8d, 0x81, 0xcb, 0xff, 0x4c, 0x56, 0x05, 0xf8, 0xc7, 0x37, 0x07, 0x09, 0x8f,
+ 0x6f, 0x18, 0xc5, 0xf5, 0x19, 0x03, 0x3f, 0x8c, 0x57, 0x6c, 0x41, 0x8c, 0x41, 0x5a, 0x1c, 0xae,
+ 0x8f, 0x8d, 0x99, 0x2c, 0x44, 0x7b, 0x38, 0xc8, 0x39, 0x94, 0x79, 0x9c, 0xed, 0x65, 0xf1, 0xac,
+ 0x1a, 0x12, 0xfd, 0xc6, 0xa5, 0x88, 0x2c, 0x84, 0xa6, 0x3d, 0x8f, 0xf1, 0xa0, 0xda, 0x8b, 0x97,
+ 0xac, 0x4c, 0x39, 0xfd, 0x18, 0x0d, 0xd2, 0xf9, 0x18, 0x1d, 0xd4, 0xeb, 0x6d, 0xbb, 0x4c, 0x2e,
+ 0xd2, 0x25, 0x4c, 0x03, 0xde, 0x1a, 0xa4, 0x87, 0x37, 0x0b, 0xf5, 0x34, 0xda, 0x98, 0x2d, 0xca,
+ 0x04, 0xc8, 0x46, 0x93, 0xe2, 0xce, 0x46, 0xd3, 0x98, 0xf2, 0xf0, 0xb7, 0x83, 0xe8, 0xf7, 0xa4,
+ 0xd4, 0xde, 0x90, 0xdc, 0x8d, 0xab, 0x8b, 0x37, 0x2c, 0x2e, 0xa7, 0xc3, 0x8f, 0x7d, 0x76, 0xbc,
+ 0xa8, 0x76, 0xfd, 0xf4, 0x3a, 0x2a, 0xf8, 0xb1, 0x1e, 0xa6, 0x95, 0xd5, 0xe3, 0xbc, 0x8f, 0xd5,
+ 0x41, 0xc2, 0x8f, 0x15, 0xa3, 0x78, 0x00, 0x11, 0x72, 0xb9, 0xf8, 0x7f, 0x40, 0xea, 0xbb, 0x3b,
+ 0x00, 0x6b, 0x9d, 0x1c, 0x1e, 0x1f, 0x6b, 0xa1, 0x1b, 0x2d, 0x9b, 0x94, 0x0d, 0x7f, 0xc4, 0x8c,
+ 0xfa, 0xe2, 0xa4, 0x67, 0xdd, 0x2b, 0xc2, 0x9e, 0x5b, 0x3d, 0x63, 0xd4, 0x17, 0x27, 0x3c, 0x5b,
+ 0xc3, 0x5a, 0xc8, 0xb3, 0x67, 0x68, 0x1b, 0xf5, 0xc5, 0x71, 0x46, 0xa1, 0x98, 0x66, 0x5e, 0x78,
+ 0x1c, 0xb0, 0x83, 0xe7, 0x86, 0xf5, 0x5e, 0xac, 0x72, 0xf8, 0xf7, 0x83, 0xe8, 0x87, 0xc6, 0xe3,
+ 0x11, 0x9b, 0xa6, 0xe7, 0x2b, 0x09, 0xbd, 0x8a, 0xb3, 0x05, 0x54, 0xc3, 0xa7, 0x94, 0xb5, 0x36,
+ 0xab, 0x4b, 0xf0, 0xec, 0x5a, 0x3a, 0xb8, 0xef, 0x6c, 0x17, 0x45, 0xb6, 0x9a, 0xc0, 0xbc, 0xc8,
+ 0xc8, 0xbe, 0xe3, 0x20, 0xe1, 0xbe, 0x83, 0x51, 0x9c, 0x69, 0x4e, 0x58, 0x9d, 0xc7, 0x7a, 0x33,
+ 0x4d, 0x21, 0x0a, 0x67, 0x9a, 0x0d, 0x82, 0x73, 0xa5, 0x09, 0xdb, 0x61, 0x59, 0x06, 0x09, 0x6f,
+ 0x1f, 0x6a, 0x6a, 0x4d, 0x43, 0x84, 0x73, 0x25, 0x44, 0x9a, 0xf5, 0x7f, 0xb3, 0xe6, 0x8a, 0x4b,
+ 0x78, 0xbe, 0x3a, 0x4c, 0xf3, 0xcb, 0xa1, 0x3f, 0x2d, 0x30, 0x00, 0xb1, 0xfe, 0xf7, 0x82, 0x78,
+ 0x6d, 0x77, 0x96, 0x4f, 0x99, 0x7f, 0x6d, 0x57, 0x4b, 0xc2, 0x6b, 0x3b, 0x45, 0x60, 0x93, 0xa7,
+ 0x40, 0x99, 0xac, 0x25, 0x61, 0x93, 0x8a, 0xf0, 0x0d, 0x85, 0x6a, 0x97, 0x98, 0x1c, 0x0a, 0xd1,
+ 0xbe, 0xf0, 0x5a, 0x27, 0x87, 0x23, 0xb4, 0x59, 0xe4, 0xed, 0x01, 0x4f, 0x2e, 0xfc, 0x11, 0xea,
+ 0x20, 0xe1, 0x08, 0xc5, 0x28, 0xae, 0xd2, 0x84, 0xe9, 0x45, 0xea, 0x03, 0x7f, 0x7c, 0xb4, 0x16,
+ 0xa8, 0x6b, 0x9d, 0x1c, 0x5e, 0x1a, 0x1d, 0xcc, 0xc5, 0x33, 0xf3, 0x06, 0xb9, 0x94, 0x85, 0x97,
+ 0x46, 0x9a, 0xc1, 0xa5, 0x97, 0x82, 0xfa, 0x71, 0xfa, 0x4b, 0x6f, 0xe4, 0xe1, 0xd2, 0x3b, 0x9c,
+ 0x72, 0xf2, 0xef, 0x83, 0xe8, 0xa6, 0xed, 0xe5, 0x98, 0xd5, 0x7d, 0xe4, 0x55, 0x9c, 0xa5, 0xd3,
+ 0x98, 0xc3, 0x84, 0x5d, 0x42, 0x8e, 0xf6, 0x6d, 0xdc, 0xd2, 0x4a, 0x7e, 0xe4, 0x28, 0x10, 0xfb,
+ 0x36, 0xbd, 0x14, 0x71, 0x9c, 0x48, 0xfa, 0xac, 0x82, 0x9d, 0xb8, 0x22, 0x46, 0x32, 0x07, 0x09,
+ 0xc7, 0x09, 0x46, 0x71, 0xbe, 0x2a, 0xe5, 0x2f, 0xde, 0x16, 0x50, 0xa6, 0x90, 0x27, 0xe0, 0xcf,
+ 0x57, 0x31, 0x15, 0xce, 0x57, 0x3d, 0x74, 0x6b, 0x5b, 0x43, 0x0f, 0x4e, 0xed, 0x7b, 0x09, 0x98,
+ 0x08, 0xdc, 0x4b, 0x20, 0x50, 0x5c, 0x49, 0x03, 0x78, 0xb7, 0x06, 0x5b, 0x56, 0x82, 0x5b, 0x83,
+ 0x34, 0xdd, 0xda, 0x2c, 0xd2, 0xcc, 0xb8, 0xee, 0x26, 0x1d, 0x45, 0x1f, 0xdb, 0xdd, 0x65, 0xbd,
+ 0x17, 0xeb, 0xdf, 0x9d, 0x3a, 0x85, 0x2c, 0x16, 0x53, 0x48, 0x60, 0x0b, 0xa8, 0x61, 0xfa, 0xec,
+ 0x4e, 0x59, 0xac, 0x72, 0xf8, 0xd7, 0x83, 0xe8, 0x23, 0x9f, 0xc7, 0x97, 0x85, 0xf0, 0xfb, 0xa4,
+ 0xdb, 0x96, 0x24, 0x89, 0x8b, 0x17, 0x61, 0x0d, 0x55, 0x86, 0x3f, 0x8f, 0x3e, 0x6c, 0x44, 0xe6,
+ 0x5e, 0x86, 0x2a, 0x80, 0x9b, 0x40, 0xe9, 0xf2, 0x63, 0x4e, 0xbb, 0xdf, 0xea, 0xcd, 0x9b, 0xb5,
+ 0x89, 0x5b, 0xae, 0x0a, 0xad, 0x4d, 0xb4, 0x0d, 0x25, 0x26, 0xd6, 0x26, 0x1e, 0xcc, 0xec, 0x6a,
+ 0xd8, 0xd5, 0x7b, 0x9d, 0xf2, 0x0b, 0x91, 0xfb, 0xa0, 0x5d, 0x0d, 0xa7, 0xac, 0x1a, 0x22, 0x76,
+ 0x35, 0x48, 0x18, 0x67, 0x07, 0x0d, 0x58, 0xf7, 0x4d, 0xdf, 0xb8, 0xaa, 0x0d, 0xd9, 0x3d, 0xf3,
+ 0x61, 0x37, 0x88, 0xe3, 0xb5, 0x11, 0xab, 0x65, 0xc8, 0xe3, 0x90, 0x05, 0xb4, 0x14, 0x59, 0xef,
+ 0xc5, 0x2a, 0x87, 0x7f, 0x19, 0xfd, 0xa0, 0x55, 0xb1, 0x3d, 0x88, 0xf9, 0xa2, 0x84, 0xe9, 0x70,
+ 0xab, 0xa3, 0xdc, 0x0d, 0xa8, 0x5d, 0x3f, 0xe9, 0xaf, 0xd0, 0xca, 0x97, 0x1b, 0x4e, 0x86, 0x95,
+ 0x2e, 0xc3, 0xd3, 0x90, 0x49, 0x97, 0x0d, 0xe6, 0xcb, 0xb4, 0x4e, 0x6b, 0xc9, 0x6b, 0x47, 0xd7,
+ 0xf6, 0x32, 0x4e, 0x33, 0x71, 0x44, 0xf3, 0x71, 0xc8, 0xa8, 0x83, 0x06, 0x97, 0xbc, 0xa4, 0x4a,
+ 0x6b, 0x64, 0x16, 0x7d, 0xdc, 0x5a, 0x2a, 0x6d, 0xd0, 0x23, 0x81, 0x67, 0xa5, 0xb4, 0xd9, 0x93,
+ 0x56, 0x6e, 0x79, 0xb3, 0x55, 0x58, 0xff, 0x6c, 0x07, 0xb9, 0xcf, 0xab, 0x52, 0xf5, 0x44, 0xfa,
+ 0x66, 0x4f, 0x5a, 0x79, 0xfd, 0x8b, 0xe8, 0xc3, 0xb6, 0x57, 0x35, 0x11, 0x6d, 0x75, 0x9a, 0x42,
+ 0x73, 0xd1, 0x93, 0xfe, 0x0a, 0x66, 0x79, 0xf1, 0x65, 0x5a, 0x71, 0x56, 0xae, 0xc6, 0x17, 0xec,
+ 0xaa, 0xb9, 0xef, 0xec, 0xf6, 0x56, 0x05, 0x8c, 0x2c, 0x82, 0x58, 0x5e, 0xf8, 0xc9, 0x96, 0x2b,
+ 0x73, 0x2f, 0xba, 0x22, 0x5c, 0x59, 0x44, 0x87, 0x2b, 0x97, 0x34, 0x63, 0x55, 0x53, 0x2b, 0x73,
+ 0x89, 0x7b, 0xcd, 0x5f, 0xd4, 0xf6, 0x45, 0xee, 0x87, 0xdd, 0xa0, 0xc9, 0x58, 0x94, 0x78, 0x37,
+ 0x3d, 0x3f, 0xd7, 0x75, 0xf2, 0x97, 0xd4, 0x46, 0x88, 0x8c, 0x85, 0x40, 0x4d, 0x02, 0xbc, 0x97,
+ 0x66, 0x20, 0xce, 0xfb, 0x5e, 0x9e, 0x9f, 0x67, 0x2c, 0x9e, 0xa2, 0x04, 0xb8, 0x16, 0x8f, 0x6c,
+ 0x39, 0x91, 0x00, 0xfb, 0x38, 0x73, 0xda, 0x53, 0x4b, 0x4f, 0x21, 0x61, 0x79, 0x92, 0x66, 0xf8,
+ 0xfa, 0x97, 0xd0, 0xd4, 0x42, 0xe2, 0xb4, 0xa7, 0x05, 0x99, 0x89, 0xb1, 0x16, 0xd5, 0xdd, 0xbe,
+ 0x29, 0xff, 0xfd, 0xb6, 0xa2, 0x25, 0x26, 0x26, 0x46, 0x0f, 0x66, 0xd6, 0x81, 0xb5, 0xf0, 0xac,
+ 0x10, 0xc6, 0x6f, 0xb5, 0xb5, 0xa4, 0x84, 0x58, 0x07, 0xba, 0x84, 0x59, 0xcf, 0xd4, 0xbf, 0xef,
+ 0xb2, 0xab, 0x5c, 0x18, 0xbd, 0xd3, 0x56, 0x69, 0x64, 0xc4, 0x7a, 0x06, 0x33, 0xca, 0xf0, 0x4f,
+ 0xa3, 0x5f, 0x15, 0x86, 0x4b, 0x56, 0x0c, 0x6f, 0x78, 0x14, 0x4a, 0xeb, 0xa6, 0xd6, 0x4d, 0x52,
+ 0x6e, 0x2e, 0x1c, 0xea, 0xd8, 0x38, 0xab, 0xe2, 0x19, 0x0c, 0xef, 0x11, 0x2d, 0x2e, 0xa4, 0xc4,
+ 0x85, 0xc3, 0x36, 0xe5, 0x46, 0xc5, 0x31, 0x9b, 0x2a, 0xeb, 0x9e, 0x1a, 0x6a, 0x61, 0x28, 0x2a,
+ 0x6c, 0xc8, 0x24, 0x33, 0xc7, 0xf1, 0x32, 0x9d, 0xe9, 0x09, 0x47, 0x8e, 0x5b, 0x15, 0x4a, 0x66,
+ 0x0c, 0x33, 0xb2, 0x20, 0x22, 0x99, 0x21, 0x61, 0xe5, 0xf3, 0xdf, 0x06, 0xd1, 0x2d, 0xc3, 0xec,
+ 0x37, 0x3b, 0x67, 0x07, 0xf9, 0x39, 0xab, 0x53, 0x9f, 0xc3, 0x34, 0xbf, 0xac, 0x86, 0x9f, 0x51,
+ 0x26, 0xfd, 0xbc, 0x2e, 0xca, 0xe7, 0xd7, 0xd6, 0x33, 0x59, 0x6b, 0xb3, 0xad, 0x64, 0xce, 0x62,
+ 0xa5, 0x06, 0xca, 0x5a, 0xf5, 0xee, 0x13, 0xe6, 0x88, 0xac, 0x35, 0xc4, 0x9b, 0x26, 0xd6, 0xce,
+ 0x33, 0x96, 0xe3, 0x26, 0x36, 0x16, 0x6a, 0x21, 0xd1, 0xc4, 0x2d, 0xc8, 0x8c, 0xc7, 0x8d, 0x48,
+ 0xee, 0x80, 0x6c, 0x67, 0x19, 0x1a, 0x8f, 0xb5, 0xaa, 0x06, 0x88, 0xf1, 0xd8, 0x0b, 0x2a, 0x3f,
+ 0xa7, 0xd1, 0xf7, 0xea, 0x47, 0x7a, 0x52, 0xc2, 0x32, 0x05, 0x7c, 0x6d, 0xc0, 0x92, 0x10, 0xfd,
+ 0xdf, 0x25, 0x4c, 0xcf, 0x3a, 0xcb, 0xab, 0x22, 0x8b, 0xab, 0x0b, 0x75, 0xd8, 0xeb, 0xd6, 0xb9,
+ 0x11, 0xe2, 0xe3, 0xde, 0xfb, 0x1d, 0x94, 0x19, 0xd4, 0x1b, 0x99, 0x1e, 0x62, 0x1e, 0xf8, 0x55,
+ 0x5b, 0xc3, 0xcc, 0x5a, 0x27, 0x67, 0x76, 0x9f, 0xf7, 0xe3, 0x2c, 0x83, 0x72, 0xd5, 0xc8, 0x8e,
+ 0xe2, 0x3c, 0x3d, 0x87, 0x8a, 0xa3, 0xdd, 0x67, 0x45, 0x8d, 0x30, 0x46, 0xec, 0x3e, 0x07, 0x70,
+ 0x93, 0xcd, 0x23, 0xcf, 0x07, 0xf9, 0x14, 0xde, 0xa2, 0x6c, 0x1e, 0xdb, 0x11, 0x0c, 0x91, 0xcd,
+ 0x53, 0xac, 0xd9, 0x85, 0x7d, 0x9e, 0xb1, 0xe4, 0x52, 0x4d, 0x01, 0x6e, 0x03, 0x0b, 0x09, 0x9e,
+ 0x03, 0xee, 0x84, 0x10, 0x33, 0x09, 0x08, 0xc1, 0x29, 0x14, 0x59, 0x9c, 0xe0, 0xbb, 0x23, 0x52,
+ 0x47, 0xc9, 0x88, 0x49, 0x00, 0x33, 0xa8, 0xb8, 0xea, 0x4e, 0x8a, 0xaf, 0xb8, 0xe8, 0x4a, 0xca,
+ 0x9d, 0x10, 0x62, 0xa6, 0x41, 0x21, 0x18, 0x17, 0x59, 0xca, 0x51, 0x37, 0x90, 0x1a, 0x42, 0x42,
+ 0x74, 0x03, 0x97, 0x40, 0x26, 0x8f, 0xa0, 0x9c, 0x81, 0xd7, 0xa4, 0x90, 0x04, 0x4d, 0x36, 0x84,
+ 0xb9, 0x62, 0x28, 0xeb, 0xce, 0x8a, 0x15, 0xba, 0x62, 0xa8, 0xaa, 0xc5, 0x8a, 0x15, 0x71, 0xc5,
+ 0xd0, 0x01, 0x50, 0x11, 0x4f, 0xe2, 0x8a, 0xfb, 0x8b, 0x28, 0x24, 0xc1, 0x22, 0x36, 0x84, 0x99,
+ 0xa3, 0x65, 0x11, 0x17, 0x1c, 0xcd, 0xd1, 0xaa, 0x00, 0xd6, 0x69, 0xf0, 0x4d, 0x52, 0x6e, 0x46,
+ 0x12, 0xd9, 0x2a, 0xc0, 0xf7, 0x52, 0xc8, 0xa6, 0x15, 0x1a, 0x49, 0xd4, 0x73, 0x6f, 0xa4, 0xc4,
+ 0x48, 0xd2, 0xa6, 0x50, 0x28, 0xa9, 0xbd, 0x6a, 0x5f, 0xed, 0xd0, 0x36, 0xf5, 0x9d, 0x10, 0x62,
+ 0xc6, 0xa7, 0xa6, 0xd0, 0x3b, 0x71, 0x59, 0xa6, 0xf5, 0xe4, 0xff, 0xc0, 0x5f, 0xa0, 0x46, 0x4e,
+ 0x8c, 0x4f, 0x3e, 0x0e, 0x75, 0xaf, 0x66, 0xe0, 0xf6, 0x15, 0x0c, 0x0f, 0xdd, 0x77, 0x83, 0x8c,
+ 0xc9, 0x38, 0x85, 0xc4, 0x3a, 0xce, 0xf4, 0x3d, 0x4d, 0xcf, 0x69, 0xe6, 0x83, 0x2e, 0xcc, 0x7a,
+ 0x05, 0x40, 0xbb, 0x38, 0x62, 0x4b, 0x98, 0xb0, 0x17, 0x6f, 0xd3, 0x8a, 0xa7, 0xf9, 0x4c, 0xcd,
+ 0xdc, 0xcf, 0x08, 0x4b, 0x3e, 0x98, 0x78, 0x05, 0xa0, 0x53, 0xc9, 0x24, 0x10, 0xa8, 0x2c, 0xc7,
+ 0x70, 0xe5, 0x4d, 0x20, 0xb0, 0x45, 0xcd, 0x11, 0x09, 0x44, 0x88, 0x37, 0xfb, 0x28, 0xda, 0xb9,
+ 0x7a, 0x4f, 0x72, 0xc2, 0x9a, 0x5c, 0x8e, 0xb2, 0x86, 0x41, 0x62, 0x29, 0x1b, 0x54, 0x30, 0xeb,
+ 0x4b, 0xed, 0xdf, 0x74, 0xb1, 0x87, 0x84, 0x9d, 0x76, 0x37, 0x7b, 0xd4, 0x83, 0xf4, 0xb8, 0x32,
+ 0x67, 0xf2, 0x94, 0xab, 0xf6, 0x91, 0xfc, 0xa3, 0x1e, 0xa4, 0xb5, 0x27, 0x63, 0x57, 0xeb, 0x79,
+ 0x9c, 0x5c, 0xce, 0x4a, 0xb6, 0xc8, 0xa7, 0x3b, 0x2c, 0x63, 0x25, 0xda, 0x93, 0x71, 0x4a, 0x8d,
+ 0x50, 0x62, 0x4f, 0xa6, 0x43, 0xc5, 0x64, 0x70, 0x76, 0x29, 0xb6, 0xb3, 0x74, 0x86, 0x57, 0xd4,
+ 0x8e, 0x21, 0x01, 0x10, 0x19, 0x9c, 0x17, 0xf4, 0x04, 0x91, 0x5c, 0x71, 0xf3, 0x34, 0x89, 0x33,
+ 0xe9, 0x6f, 0x8b, 0x36, 0xe3, 0x80, 0x9d, 0x41, 0xe4, 0x51, 0xf0, 0xd4, 0x73, 0xb2, 0x28, 0xf3,
+ 0x83, 0x9c, 0x33, 0xb2, 0x9e, 0x0d, 0xd0, 0x59, 0x4f, 0x0b, 0x44, 0xc3, 0xea, 0x04, 0xde, 0xd6,
+ 0xa5, 0xa9, 0xff, 0xf1, 0x0d, 0xab, 0xf5, 0xef, 0x23, 0x25, 0x0f, 0x0d, 0xab, 0x88, 0x43, 0x95,
+ 0x51, 0x4e, 0x64, 0xc0, 0x04, 0xb4, 0xdd, 0x30, 0x79, 0xd8, 0x0d, 0xfa, 0xfd, 0x8c, 0xf9, 0x2a,
+ 0x83, 0x90, 0x1f, 0x01, 0xf4, 0xf1, 0xd3, 0x80, 0x66, 0xbb, 0xc5, 0xa9, 0xcf, 0x05, 0x24, 0x97,
+ 0xad, 0x2b, 0x46, 0x6e, 0x41, 0x25, 0x42, 0x6c, 0xb7, 0x10, 0xa8, 0xbf, 0x89, 0x0e, 0x12, 0x96,
+ 0x87, 0x9a, 0xa8, 0x96, 0xf7, 0x69, 0x22, 0xc5, 0x99, 0xc5, 0xaf, 0x96, 0xaa, 0xc8, 0x94, 0xcd,
+ 0xb4, 0x4e, 0x58, 0xb0, 0x21, 0x62, 0xf1, 0x4b, 0xc2, 0x26, 0x27, 0xc7, 0x3e, 0x8f, 0xda, 0xf7,
+ 0x95, 0x5b, 0x56, 0x8e, 0xe8, 0xfb, 0xca, 0x14, 0x4b, 0x57, 0x52, 0xc6, 0x48, 0x87, 0x15, 0x37,
+ 0x4e, 0x36, 0xfa, 0xc1, 0x66, 0xc9, 0xe3, 0xf8, 0xdc, 0xc9, 0x20, 0x2e, 0xa5, 0xd7, 0xcd, 0x80,
+ 0x21, 0x83, 0x11, 0x4b, 0x9e, 0x00, 0x8e, 0x86, 0x30, 0xc7, 0xf3, 0x0e, 0xcb, 0x39, 0xe4, 0xdc,
+ 0x37, 0x84, 0xb9, 0xc6, 0x14, 0x18, 0x1a, 0xc2, 0x28, 0x05, 0x14, 0xb7, 0x62, 0x3f, 0x08, 0xf8,
+ 0x71, 0x3c, 0xf7, 0x66, 0x6c, 0x72, 0xaf, 0x47, 0xca, 0x43, 0x71, 0x8b, 0x38, 0xeb, 0x90, 0xcf,
+ 0xf6, 0x32, 0x89, 0xcb, 0x99, 0xde, 0xdd, 0x98, 0x0e, 0x9f, 0xd0, 0x76, 0x5c, 0x92, 0x38, 0xe4,
+ 0x0b, 0x6b, 0xa0, 0x61, 0xe7, 0x60, 0x1e, 0xcf, 0x74, 0x4d, 0x3d, 0x35, 0x10, 0xf2, 0x56, 0x55,
+ 0x1f, 0x76, 0x83, 0xc8, 0xcf, 0xab, 0x74, 0x0a, 0x2c, 0xe0, 0x47, 0xc8, 0xfb, 0xf8, 0xc1, 0x20,
+ 0xca, 0xde, 0xea, 0x7a, 0xcb, 0x15, 0xdd, 0x76, 0x3e, 0x55, 0xeb, 0xd8, 0x11, 0xf1, 0x78, 0x10,
+ 0x17, 0xca, 0xde, 0x08, 0x1e, 0xf5, 0xd1, 0x66, 0x83, 0x36, 0xd4, 0x47, 0xf5, 0xfe, 0x6b, 0x9f,
+ 0x3e, 0xea, 0x83, 0x95, 0xcf, 0x9f, 0xab, 0x3e, 0xba, 0x1b, 0xf3, 0xb8, 0xce, 0xdb, 0x5f, 0xa5,
+ 0x70, 0xa5, 0x16, 0xc2, 0x9e, 0xfa, 0x36, 0xd4, 0x48, 0xbc, 0xa8, 0x86, 0x56, 0xc5, 0x5b, 0xbd,
+ 0xf9, 0x80, 0x6f, 0xb5, 0x42, 0xe8, 0xf4, 0x8d, 0x96, 0x0a, 0x5b, 0xbd, 0xf9, 0x80, 0x6f, 0xf5,
+ 0x06, 0x6c, 0xa7, 0x6f, 0xf4, 0x1a, 0xec, 0x56, 0x6f, 0x5e, 0xf9, 0xfe, 0x9b, 0xa6, 0xe3, 0xda,
+ 0xce, 0xeb, 0x3c, 0x2c, 0xe1, 0xe9, 0x12, 0x7c, 0xe9, 0xa4, 0x6b, 0x4f, 0xa3, 0xa1, 0x74, 0x92,
+ 0x56, 0xb1, 0x3e, 0x9b, 0xe2, 0x2b, 0xc5, 0x09, 0xab, 0x52, 0x71, 0x48, 0xff, 0xac, 0x87, 0xd1,
+ 0x06, 0x0e, 0x2d, 0x9a, 0x42, 0x4a, 0xe6, 0xb8, 0xd1, 0x41, 0xcd, 0x8d, 0xe2, 0x8d, 0x80, 0xbd,
+ 0xf6, 0xc5, 0xe2, 0xcd, 0x9e, 0xb4, 0x39, 0xf8, 0x73, 0x18, 0xfb, 0xc4, 0x31, 0xd4, 0xaa, 0xde,
+ 0x43, 0xc7, 0x27, 0xfd, 0x15, 0x94, 0xfb, 0xbf, 0x6b, 0xd6, 0x15, 0xd8, 0xbf, 0xea, 0x04, 0x4f,
+ 0xfb, 0x58, 0x44, 0x1d, 0xe1, 0xd9, 0xb5, 0x74, 0x54, 0x41, 0xfe, 0x73, 0x10, 0xdd, 0xf1, 0x16,
+ 0xc4, 0x3d, 0x7b, 0xfe, 0xfd, 0x3e, 0xb6, 0xfd, 0x67, 0xd0, 0x5f, 0x7c, 0x17, 0x55, 0x55, 0xba,
+ 0x7f, 0x6a, 0x96, 0xf7, 0x8d, 0x86, 0x78, 0xeb, 0xe3, 0x65, 0x39, 0x85, 0x52, 0xf5, 0xd8, 0x50,
+ 0xd0, 0x19, 0x18, 0xf7, 0xdb, 0x4f, 0xaf, 0xa9, 0x65, 0x7d, 0xe2, 0xc7, 0x81, 0xd5, 0xdb, 0x7c,
+ 0x56, 0x79, 0x42, 0x96, 0x2d, 0x1a, 0x17, 0xe8, 0xb3, 0xeb, 0xaa, 0x51, 0x3d, 0xd9, 0x82, 0xc5,
+ 0x17, 0x03, 0x9e, 0xf5, 0x34, 0xec, 0x7c, 0x43, 0xe0, 0x93, 0xeb, 0x29, 0xa9, 0xb2, 0xfc, 0xf7,
+ 0x20, 0xba, 0xef, 0xb0, 0xe6, 0xb4, 0x03, 0xed, 0xc9, 0xfc, 0x24, 0x60, 0x9f, 0x52, 0xd2, 0x85,
+ 0xfb, 0x83, 0xef, 0xa6, 0x6c, 0xbe, 0x87, 0xe3, 0xa8, 0xec, 0xa5, 0x19, 0x87, 0xb2, 0xfd, 0x3d,
+ 0x1c, 0xd7, 0xae, 0xa4, 0x46, 0xf4, 0xf7, 0x70, 0x02, 0xb8, 0xf5, 0x3d, 0x1c, 0x8f, 0x67, 0xef,
+ 0xf7, 0x70, 0xbc, 0xd6, 0x82, 0xdf, 0xc3, 0x09, 0x6b, 0x50, 0x93, 0x4f, 0x53, 0x04, 0xb9, 0xab,
+ 0xde, 0xcb, 0xa2, 0xbb, 0xc9, 0xfe, 0xf4, 0x3a, 0x2a, 0xc4, 0xf4, 0x2b, 0x39, 0x71, 0x0b, 0xaf,
+ 0xc7, 0x33, 0x75, 0x6e, 0xe2, 0x6d, 0xf5, 0xe6, 0x95, 0xef, 0x9f, 0xa9, 0xb5, 0x97, 0x9e, 0x6c,
+ 0x58, 0x29, 0xde, 0xa9, 0x5c, 0x0f, 0x4d, 0x1e, 0xb5, 0x05, 0xbb, 0xe5, 0x37, 0xfa, 0xc1, 0x44,
+ 0x75, 0x6b, 0x42, 0x35, 0xfa, 0xa8, 0xcb, 0x10, 0x6a, 0xf2, 0xad, 0xde, 0x3c, 0x31, 0xc9, 0x49,
+ 0xdf, 0xb2, 0xb5, 0x7b, 0x18, 0x73, 0xdb, 0xfa, 0x49, 0x7f, 0x05, 0xe5, 0x7e, 0xa9, 0x92, 0x5a,
+ 0xdb, 0xbd, 0x68, 0xe7, 0xcd, 0x2e, 0x53, 0x63, 0xa7, 0x99, 0x47, 0x7d, 0xf1, 0x50, 0x7a, 0x63,
+ 0x4f, 0xf0, 0x5d, 0xe9, 0x8d, 0x77, 0x92, 0xff, 0xe4, 0x7a, 0x4a, 0xaa, 0x2c, 0xff, 0x3a, 0x88,
+ 0x6e, 0x92, 0x65, 0x51, 0x71, 0xf0, 0x59, 0x5f, 0xcb, 0x28, 0x1e, 0x3e, 0xbf, 0xb6, 0x9e, 0x2a,
+ 0xd4, 0x7f, 0x0c, 0xa2, 0x5b, 0x81, 0x42, 0xc9, 0x00, 0xb9, 0x86, 0x75, 0x37, 0x50, 0x7e, 0x7c,
+ 0x7d, 0x45, 0x6a, 0xba, 0xb7, 0xf1, 0x71, 0xfb, 0x43, 0x31, 0x01, 0xdb, 0x63, 0xfa, 0x43, 0x31,
+ 0xdd, 0x5a, 0x78, 0x0b, 0xaa, 0x4e, 0x4a, 0xd4, 0xca, 0xc8, 0xb7, 0x05, 0x25, 0x72, 0x16, 0xb4,
+ 0x22, 0x5a, 0xeb, 0xe4, 0x7c, 0x4e, 0x5e, 0xbc, 0x2d, 0xe2, 0x7c, 0x4a, 0x3b, 0x91, 0xf2, 0x6e,
+ 0x27, 0x9a, 0xc3, 0x5b, 0x77, 0xb5, 0xf4, 0x94, 0x35, 0xcb, 0xbc, 0x47, 0x94, 0xbe, 0x46, 0x82,
+ 0x5b, 0x77, 0x2d, 0x94, 0xf0, 0xa6, 0x72, 0xda, 0x90, 0x37, 0x94, 0xca, 0x3e, 0xee, 0x83, 0xa2,
+ 0x05, 0x84, 0xf6, 0xa6, 0x4f, 0x04, 0x36, 0x42, 0x56, 0x5a, 0xa7, 0x02, 0x9b, 0x3d, 0x69, 0xc2,
+ 0xed, 0x18, 0xf8, 0x97, 0x10, 0x4f, 0xa1, 0x0c, 0xba, 0xd5, 0x54, 0x2f, 0xb7, 0x36, 0xed, 0x73,
+ 0xbb, 0xc3, 0xb2, 0xc5, 0x3c, 0x57, 0x8d, 0x49, 0xba, 0xb5, 0xa9, 0x6e, 0xb7, 0x88, 0xc6, 0x9b,
+ 0x96, 0xc6, 0xad, 0x48, 0x2f, 0x1f, 0x87, 0xcd, 0x38, 0x59, 0xe5, 0x7a, 0x2f, 0x96, 0xae, 0xa7,
+ 0x0a, 0xa3, 0x8e, 0x7a, 0xa2, 0x48, 0xda, 0xec, 0x49, 0xe3, 0xdd, 0x43, 0xcb, 0xad, 0x8e, 0xa7,
+ 0xad, 0x0e, 0x5b, 0xad, 0x90, 0x7a, 0xd2, 0x5f, 0x01, 0xef, 0xd5, 0xaa, 0xa8, 0xaa, 0xd7, 0x45,
+ 0x7b, 0x69, 0x96, 0x0d, 0xd7, 0x03, 0x61, 0xd2, 0x40, 0xc1, 0xbd, 0x5a, 0x0f, 0x4c, 0x44, 0x72,
+ 0xb3, 0xb7, 0x99, 0x0f, 0xbb, 0xec, 0x08, 0xaa, 0x57, 0x24, 0xdb, 0x34, 0xda, 0x6f, 0xb3, 0x1e,
+ 0xb5, 0xae, 0xed, 0x28, 0xfc, 0xe0, 0x5a, 0x15, 0xde, 0xea, 0xcd, 0xa3, 0xcb, 0x00, 0x82, 0x12,
+ 0x33, 0xcb, 0x3d, 0xca, 0x84, 0x33, 0x93, 0xdc, 0xef, 0xa0, 0xd0, 0x9e, 0xa5, 0xec, 0x46, 0xaf,
+ 0xd3, 0xe9, 0x0c, 0xb8, 0xf7, 0x1c, 0xcb, 0x06, 0x82, 0xe7, 0x58, 0x08, 0x44, 0x4d, 0x27, 0x7f,
+ 0xd7, 0x9b, 0xb5, 0x07, 0x53, 0x5f, 0xd3, 0x29, 0x65, 0x8b, 0x0a, 0x35, 0x9d, 0x97, 0x46, 0xa3,
+ 0x81, 0x76, 0xab, 0x5e, 0xdc, 0x7f, 0x1c, 0x32, 0x83, 0xde, 0xde, 0x5f, 0xef, 0xc5, 0xa2, 0x19,
+ 0xc5, 0x38, 0x4c, 0xe7, 0x29, 0xf7, 0xcd, 0x28, 0x96, 0x8d, 0x1a, 0x09, 0xcd, 0x28, 0x6d, 0x94,
+ 0xaa, 0x5e, 0x9d, 0x23, 0x1c, 0x4c, 0xc3, 0xd5, 0x93, 0x4c, 0xbf, 0xea, 0x69, 0xb6, 0x75, 0xec,
+ 0x9a, 0xeb, 0x90, 0xe1, 0x17, 0x6a, 0xb1, 0xec, 0x89, 0x6d, 0xf1, 0x42, 0x27, 0x06, 0x43, 0xa3,
+ 0x0e, 0xa5, 0x80, 0x8f, 0x13, 0x6a, 0xae, 0x39, 0x19, 0x2e, 0x0a, 0x88, 0xcb, 0x38, 0x4f, 0xbc,
+ 0x8b, 0x53, 0x61, 0xb0, 0x45, 0x86, 0x16, 0xa7, 0xa4, 0x06, 0x3a, 0xd4, 0x77, 0x5f, 0xc5, 0xf4,
+ 0x74, 0x05, 0xfd, 0xce, 0xa3, 0xfb, 0x26, 0xe6, 0xa3, 0x1e, 0x24, 0x3e, 0xd4, 0x6f, 0x00, 0xbd,
+ 0x2d, 0x2f, 0x9d, 0x7e, 0x1c, 0x30, 0xe5, 0xa2, 0xa1, 0x85, 0x30, 0xad, 0x82, 0x82, 0x5a, 0x27,
+ 0xb8, 0xc0, 0x7f, 0x0a, 0x2b, 0x5f, 0x50, 0x9b, 0xfc, 0x54, 0x20, 0xa1, 0xa0, 0x6e, 0xa3, 0x28,
+ 0xcf, 0xb4, 0xd7, 0x41, 0x0f, 0x02, 0xfa, 0xf6, 0xd2, 0x67, 0xad, 0x93, 0x43, 0x3d, 0x67, 0x37,
+ 0x5d, 0x3a, 0xa7, 0x18, 0x9e, 0x82, 0xee, 0xa6, 0x4b, 0xff, 0x21, 0xc6, 0x7a, 0x2f, 0x16, 0x5f,
+ 0x18, 0x88, 0x39, 0xbc, 0x6d, 0x4e, 0xf2, 0x3d, 0xc5, 0x15, 0xf2, 0xd6, 0x51, 0xfe, 0xc3, 0x6e,
+ 0xd0, 0x5c, 0xcf, 0x3d, 0x29, 0x59, 0x02, 0x55, 0xa5, 0xbe, 0x9e, 0xe7, 0xde, 0x7f, 0x52, 0xb2,
+ 0x11, 0xfa, 0x76, 0xde, 0xbd, 0x30, 0xa4, 0x6c, 0x7f, 0x19, 0xbd, 0x7b, 0xc8, 0x66, 0x63, 0xc8,
+ 0xa7, 0xc3, 0x1f, 0xb9, 0x17, 0x62, 0xd9, 0x6c, 0x54, 0xff, 0xac, 0xed, 0xdd, 0xa0, 0xc4, 0xe6,
+ 0x4a, 0xdf, 0x2e, 0xbc, 0x59, 0xcc, 0xc6, 0x3c, 0xe6, 0xe8, 0x4a, 0x9f, 0xf8, 0x7d, 0x54, 0x0b,
+ 0x88, 0x2b, 0x7d, 0x0e, 0x80, 0xec, 0x4d, 0x4a, 0x00, 0xaf, 0xbd, 0x5a, 0x10, 0xb4, 0xa7, 0x00,
+ 0x33, 0xeb, 0x6a, 0x7b, 0x75, 0x62, 0x8b, 0xaf, 0xe0, 0x19, 0x1d, 0x21, 0x25, 0x66, 0xdd, 0x36,
+ 0x65, 0x82, 0x41, 0x56, 0x5f, 0x7c, 0xcf, 0x63, 0x31, 0x9f, 0xc7, 0xe5, 0x0a, 0x05, 0x83, 0xaa,
+ 0xa5, 0x05, 0x10, 0xc1, 0xe0, 0x05, 0x4d, 0x94, 0x37, 0x8f, 0x39, 0xb9, 0xdc, 0x67, 0x25, 0x5b,
+ 0xf0, 0x34, 0x07, 0xfc, 0x4d, 0x07, 0xfd, 0x40, 0x6d, 0x86, 0x88, 0x72, 0x8a, 0x35, 0x59, 0xa1,
+ 0x20, 0xe4, 0xed, 0x40, 0xf1, 0x0d, 0xda, 0x8a, 0xb3, 0x12, 0x9f, 0x0e, 0x4a, 0x2b, 0x18, 0x22,
+ 0xb2, 0x42, 0x12, 0x46, 0x6d, 0x7f, 0x92, 0xe6, 0x33, 0x6f, 0xdb, 0x9f, 0xd8, 0x5f, 0x70, 0xbc,
+ 0x45, 0x03, 0x66, 0x7c, 0x97, 0x0f, 0x4d, 0x7e, 0x37, 0x49, 0xbd, 0x99, 0xe9, 0x7d, 0xe8, 0x36,
+ 0x41, 0x8c, 0xef, 0x7e, 0x12, 0xb9, 0x7a, 0x59, 0x40, 0x0e, 0xd3, 0xe6, 0x0e, 0x9c, 0xcf, 0x95,
+ 0x43, 0x04, 0x5d, 0x61, 0xd2, 0x8c, 0xaa, 0x42, 0x7e, 0xba, 0xc8, 0x4f, 0x4a, 0x76, 0x9e, 0x66,
+ 0x50, 0xa2, 0x51, 0x55, 0xaa, 0x5b, 0x72, 0x62, 0x54, 0xf5, 0x71, 0xe6, 0x32, 0x85, 0x90, 0x3a,
+ 0x1f, 0x52, 0x9e, 0x94, 0x71, 0x82, 0x2f, 0x53, 0x48, 0x1b, 0x6d, 0x8c, 0xd8, 0x49, 0x0b, 0xe0,
+ 0x26, 0xd2, 0x8f, 0x80, 0x97, 0x69, 0x52, 0x8d, 0x81, 0x9f, 0xc4, 0x65, 0x3c, 0x07, 0x0e, 0x25,
+ 0x8e, 0x74, 0x85, 0x8c, 0x1c, 0x86, 0x88, 0x74, 0x8a, 0x55, 0x0e, 0xff, 0x30, 0x7a, 0xbf, 0x1e,
+ 0xe8, 0x21, 0x57, 0xdf, 0xfc, 0x7f, 0x21, 0xfe, 0x58, 0xc8, 0xf0, 0x03, 0x6d, 0x63, 0xcc, 0x4b,
+ 0x88, 0xe7, 0x8d, 0xed, 0xf7, 0xf4, 0xef, 0x02, 0x7c, 0x32, 0xa8, 0x1b, 0xe4, 0x98, 0xf1, 0xf4,
+ 0xbc, 0x5e, 0x57, 0xa9, 0x53, 0x2c, 0xd4, 0x20, 0xb6, 0x78, 0x14, 0xf8, 0x4c, 0x81, 0x8f, 0x33,
+ 0x03, 0x8d, 0x2d, 0x3d, 0x85, 0x22, 0xc3, 0x03, 0x8d, 0xa3, 0x2d, 0x00, 0x62, 0xa0, 0xf1, 0x82,
+ 0x26, 0xba, 0x6c, 0xf1, 0x04, 0xc2, 0x95, 0x99, 0x40, 0xbf, 0xca, 0x4c, 0x9c, 0x77, 0x04, 0xb2,
+ 0xe8, 0xfd, 0x23, 0x98, 0xbf, 0x81, 0xb2, 0xba, 0x48, 0x8b, 0xfd, 0x7a, 0x86, 0x8d, 0xf9, 0x02,
+ 0xbf, 0x45, 0x67, 0x88, 0x91, 0x46, 0x88, 0x34, 0x84, 0x40, 0xcd, 0x50, 0x66, 0x80, 0x83, 0xea,
+ 0x38, 0x9e, 0x83, 0xf8, 0xe8, 0xc2, 0x70, 0x9d, 0x32, 0x62, 0x41, 0xc4, 0x50, 0x46, 0xc2, 0xd6,
+ 0xeb, 0x46, 0x86, 0x39, 0x85, 0x59, 0x1d, 0x61, 0xe5, 0x49, 0xbc, 0x9a, 0x43, 0xce, 0x95, 0x49,
+ 0xb4, 0x09, 0x6b, 0x99, 0xf4, 0xf3, 0xc4, 0x26, 0x6c, 0x1f, 0x3d, 0x2b, 0xe9, 0x76, 0x1e, 0xfc,
+ 0x09, 0x2b, 0xb9, 0xfc, 0x8b, 0x1e, 0x67, 0x65, 0x86, 0x92, 0x6e, 0xf7, 0xa1, 0x3a, 0x24, 0x91,
+ 0x74, 0x87, 0x35, 0xac, 0x4f, 0x61, 0x3b, 0x65, 0x78, 0x05, 0xa5, 0x8e, 0x93, 0x17, 0xf3, 0x38,
+ 0xcd, 0x54, 0x34, 0x7c, 0x11, 0xb0, 0x4d, 0xe8, 0x10, 0x9f, 0xc2, 0xee, 0xab, 0x6b, 0x7d, 0x3c,
+ 0x3c, 0x5c, 0x42, 0xb4, 0x27, 0xdc, 0x61, 0x9f, 0xd8, 0x13, 0xee, 0xd6, 0x32, 0x4b, 0x35, 0xc3,
+ 0x0a, 0x6e, 0x25, 0x88, 0x1d, 0x36, 0xc5, 0x1b, 0x44, 0x96, 0x4d, 0x04, 0x12, 0x4b, 0xb5, 0xa0,
+ 0x82, 0x99, 0xdb, 0x0c, 0xb6, 0x97, 0xe6, 0x71, 0x96, 0xfe, 0x1c, 0xdf, 0x7d, 0xb6, 0xec, 0x34,
+ 0x04, 0x31, 0xb7, 0xf9, 0x49, 0x9f, 0xab, 0x7d, 0xe0, 0x93, 0xb4, 0x1e, 0xfa, 0x1f, 0x06, 0x9e,
+ 0x9b, 0x20, 0xba, 0x5d, 0x59, 0xa4, 0x72, 0xf5, 0x8b, 0x41, 0x74, 0x13, 0x3f, 0xd6, 0xed, 0xa2,
+ 0x18, 0xd7, 0x29, 0xc9, 0x29, 0x24, 0x90, 0x16, 0x7c, 0xf8, 0x69, 0xf8, 0x59, 0x21, 0x9c, 0x38,
+ 0x59, 0xef, 0xa1, 0x66, 0x9d, 0xd7, 0xd6, 0x63, 0xc9, 0x58, 0xfe, 0xa9, 0xab, 0xb3, 0x0a, 0x4a,
+ 0x35, 0x53, 0xee, 0x03, 0x47, 0xbd, 0xd3, 0xe2, 0x46, 0x16, 0x58, 0x57, 0x94, 0xe8, 0x9d, 0x61,
+ 0x0d, 0xb3, 0xbb, 0x63, 0x71, 0xa7, 0x50, 0xb1, 0x6c, 0x09, 0xe2, 0xfa, 0xdb, 0x06, 0x69, 0xcc,
+ 0xa2, 0x88, 0xdd, 0x1d, 0x9a, 0x36, 0xe9, 0x46, 0xdb, 0xed, 0x76, 0xbe, 0x3a, 0xc0, 0x67, 0xe4,
+ 0x1e, 0x4b, 0x02, 0x23, 0xd2, 0x8d, 0x00, 0x6e, 0xed, 0x7e, 0x96, 0x2c, 0x9e, 0x26, 0x71, 0xc5,
+ 0x4f, 0xe2, 0x55, 0xc6, 0xe2, 0xa9, 0x98, 0xd7, 0xf1, 0xee, 0x67, 0xc3, 0x8c, 0x6c, 0x88, 0xda,
+ 0xfd, 0xa4, 0x60, 0xb3, 0xb2, 0x53, 0x7f, 0xc1, 0x4b, 0x5d, 0x2d, 0xbc, 0x8b, 0x72, 0x24, 0x51,
+ 0x5e, 0x7c, 0xad, 0xf0, 0x5e, 0x18, 0x32, 0xaf, 0x44, 0x49, 0x91, 0x48, 0x43, 0x6e, 0xf9, 0x74,
+ 0x9c, 0x04, 0xe4, 0x76, 0x80, 0x30, 0x9f, 0x49, 0x90, 0xbf, 0x37, 0x7f, 0x84, 0x82, 0xab, 0x0f,
+ 0xf7, 0x6e, 0xf8, 0x74, 0x6d, 0x68, 0x64, 0x7f, 0xfb, 0x6c, 0xb3, 0x27, 0x6d, 0x16, 0x6e, 0xea,
+ 0xe3, 0xc1, 0x47, 0x50, 0x79, 0xde, 0x6f, 0xae, 0x85, 0x23, 0x23, 0x25, 0x16, 0x6e, 0x6d, 0xca,
+ 0x04, 0x7a, 0x2d, 0x7b, 0x31, 0x4d, 0xb9, 0x92, 0x35, 0x17, 0x76, 0x37, 0xda, 0x06, 0xda, 0x14,
+ 0x51, 0x2b, 0x9a, 0x36, 0x63, 0x79, 0xcd, 0x4c, 0xd8, 0x6c, 0x96, 0x81, 0x82, 0x4e, 0x21, 0x96,
+ 0xdf, 0x78, 0xdb, 0x6a, 0xdb, 0xf2, 0x82, 0xc4, 0x58, 0x1e, 0x54, 0x30, 0x69, 0x64, 0x8d, 0xc9,
+ 0x33, 0x88, 0xe6, 0xc1, 0xae, 0xb5, 0xcd, 0x38, 0x00, 0x91, 0x46, 0x7a, 0x41, 0xf3, 0x1a, 0x56,
+ 0x2d, 0xde, 0x87, 0xe6, 0x49, 0xe0, 0x2f, 0xe2, 0x08, 0x65, 0x4b, 0x4c, 0xbc, 0x86, 0xe5, 0xc1,
+ 0xcc, 0x3a, 0x01, 0x79, 0x78, 0xbe, 0x3a, 0x98, 0xe2, 0x75, 0x02, 0xd6, 0x17, 0x0c, 0xb1, 0x4e,
+ 0xa0, 0x58, 0xb7, 0xe9, 0xf4, 0xe7, 0x7f, 0x0f, 0xe3, 0xca, 0x54, 0xce, 0xd3, 0x74, 0x5e, 0x30,
+ 0xd4, 0x74, 0x94, 0x82, 0xfb, 0x48, 0xed, 0x8f, 0x0b, 0x7b, 0x1e, 0xa9, 0xef, 0xa3, 0xc2, 0x0f,
+ 0xba, 0x30, 0xe9, 0xe1, 0xf9, 0xed, 0xff, 0xf9, 0xe6, 0xc6, 0xe0, 0xeb, 0x6f, 0x6e, 0x0c, 0xfe,
+ 0xef, 0x9b, 0x1b, 0x83, 0x5f, 0x7c, 0x7b, 0xe3, 0x9d, 0xaf, 0xbf, 0xbd, 0xf1, 0xce, 0xff, 0x7e,
+ 0x7b, 0xe3, 0x9d, 0xaf, 0xde, 0x55, 0x7f, 0x7d, 0xf1, 0xcd, 0xaf, 0x88, 0xbf, 0xa1, 0xf8, 0xec,
+ 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x4f, 0x9f, 0x53, 0xa1, 0x71, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -475,6 +476,7 @@ type ClientCommandsClient interface {
ObjectCreateRelationOption(ctx context.Context, in *pb.RpcObjectCreateRelationOptionRequest, opts ...grpc.CallOption) (*pb.RpcObjectCreateRelationOptionResponse, error)
RelationListRemoveOption(ctx context.Context, in *pb.RpcRelationListRemoveOptionRequest, opts ...grpc.CallOption) (*pb.RpcRelationListRemoveOptionResponse, error)
RelationOptions(ctx context.Context, in *pb.RpcRelationOptionsRequest, opts ...grpc.CallOption) (*pb.RpcRelationOptionsResponse, error)
+ RelationListWithValue(ctx context.Context, in *pb.RpcRelationListWithValueRequest, opts ...grpc.CallOption) (*pb.RpcRelationListWithValueResponse, error)
// Object Relations
// ***
ObjectRelationAdd(ctx context.Context, in *pb.RpcObjectRelationAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectRelationAddResponse, error)
@@ -1564,6 +1566,15 @@ func (c *clientCommandsClient) RelationOptions(ctx context.Context, in *pb.RpcRe
return out, nil
}
+func (c *clientCommandsClient) RelationListWithValue(ctx context.Context, in *pb.RpcRelationListWithValueRequest, opts ...grpc.CallOption) (*pb.RpcRelationListWithValueResponse, error) {
+ out := new(pb.RpcRelationListWithValueResponse)
+ err := c.cc.Invoke(ctx, "/anytype.ClientCommands/RelationListWithValue", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *clientCommandsClient) ObjectRelationAdd(ctx context.Context, in *pb.RpcObjectRelationAddRequest, opts ...grpc.CallOption) (*pb.RpcObjectRelationAddResponse, error) {
out := new(pb.RpcObjectRelationAddResponse)
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectRelationAdd", in, out, opts...)
@@ -3171,6 +3182,7 @@ type ClientCommandsServer interface {
ObjectCreateRelationOption(context.Context, *pb.RpcObjectCreateRelationOptionRequest) *pb.RpcObjectCreateRelationOptionResponse
RelationListRemoveOption(context.Context, *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse
RelationOptions(context.Context, *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse
+ RelationListWithValue(context.Context, *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse
// Object Relations
// ***
ObjectRelationAdd(context.Context, *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse
@@ -3674,6 +3686,9 @@ func (*UnimplementedClientCommandsServer) RelationListRemoveOption(ctx context.C
func (*UnimplementedClientCommandsServer) RelationOptions(ctx context.Context, req *pb.RpcRelationOptionsRequest) *pb.RpcRelationOptionsResponse {
return nil
}
+func (*UnimplementedClientCommandsServer) RelationListWithValue(ctx context.Context, req *pb.RpcRelationListWithValueRequest) *pb.RpcRelationListWithValueResponse {
+ return nil
+}
func (*UnimplementedClientCommandsServer) ObjectRelationAdd(ctx context.Context, req *pb.RpcObjectRelationAddRequest) *pb.RpcObjectRelationAddResponse {
return nil
}
@@ -5914,6 +5929,24 @@ func _ClientCommands_RelationOptions_Handler(srv interface{}, ctx context.Contex
return interceptor(ctx, in, info, handler)
}
+func _ClientCommands_RelationListWithValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(pb.RpcRelationListWithValueRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ClientCommandsServer).RelationListWithValue(ctx, in), nil
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/anytype.ClientCommands/RelationListWithValue",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ClientCommandsServer).RelationListWithValue(ctx, req.(*pb.RpcRelationListWithValueRequest)), nil
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _ClientCommands_ObjectRelationAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(pb.RpcObjectRelationAddRequest)
if err := dec(in); err != nil {
@@ -9244,6 +9277,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{
MethodName: "RelationOptions",
Handler: _ClientCommands_RelationOptions_Handler,
},
+ {
+ MethodName: "RelationListWithValue",
+ Handler: _ClientCommands_RelationListWithValue_Handler,
+ },
{
MethodName: "ObjectRelationAdd",
Handler: _ClientCommands_ObjectRelationAdd_Handler,
diff --git a/pkg/lib/bundle/relation.gen.go b/pkg/lib/bundle/relation.gen.go
index f0bded267..d0b2a2c39 100644
--- a/pkg/lib/bundle/relation.gen.go
+++ b/pkg/lib/bundle/relation.gen.go
@@ -9,7 +9,7 @@ import (
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
)
-const RelationChecksum = "68778695c5d49dd1ffbab91e13bd9769d80fd89de3a77902cec1c5066e5495a8"
+const RelationChecksum = "a8068f8bee7828cfa88a4cf262a8276bf2cbf1eadc9934dd52c5c06be2d02bbd"
const (
RelationKeyTag domain.RelationKey = "tag"
RelationKeyCamera domain.RelationKey = "camera"
@@ -459,13 +459,13 @@ var (
DataSource: model.Relation_details,
Description: "Done checkbox used to render action layout. ",
Format: model.RelationFormat_checkbox,
- Hidden: true,
Id: "_brdone",
Key: "done",
MaxCount: 1,
Name: "Done",
ReadOnly: false,
ReadOnlyRelation: true,
+ Revision: 1,
Scope: model.Relation_type,
},
RelationKeyDueDate: {
diff --git a/pkg/lib/bundle/relations.json b/pkg/lib/bundle/relations.json
index b72138981..1e066dff5 100644
--- a/pkg/lib/bundle/relations.json
+++ b/pkg/lib/bundle/relations.json
@@ -91,12 +91,13 @@
{
"description": "Done checkbox used to render action layout. ",
"format": "checkbox",
- "hidden": true,
+ "hidden": false,
"key": "done",
"maxCount": 1,
"name": "Done",
"readonly": false,
- "source": "details"
+ "source": "details",
+ "revision": 1
},
{
"description": "Artist URL",
diff --git a/pkg/lib/bundle/types.gen.go b/pkg/lib/bundle/types.gen.go
index d52b8ab6c..d54f95654 100644
--- a/pkg/lib/bundle/types.gen.go
+++ b/pkg/lib/bundle/types.gen.go
@@ -9,7 +9,7 @@ import (
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
)
-const TypeChecksum = "8b79add6b322acbcee123ad178c1aee523a2d9b9f219c391903530b29e554a1e"
+const TypeChecksum = "a475473f827167d93b818920569ea0f2c758761ef24d6a6bcb8da6b009f01904"
const (
TypePrefix = "_ot"
)
@@ -337,11 +337,12 @@ var (
TypeKeyTemplate: {
Description: "Sample object that has already some details in place and used to create objects from",
- Hidden: true,
+ IconEmoji: "🧩",
Layout: model.ObjectType_basic,
Name: "Template",
Readonly: true,
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTargetObjectType), MustGetRelationLink(RelationKeyTemplateIsBundled)},
+ Revision: 1,
Types: []model.SmartBlockType{model.SmartBlockType_Template},
Url: TypePrefix + "template",
},
diff --git a/pkg/lib/bundle/types.json b/pkg/lib/bundle/types.json
index 8184ae50a..e654caf0b 100644
--- a/pkg/lib/bundle/types.json
+++ b/pkg/lib/bundle/types.json
@@ -268,14 +268,15 @@
"types": [
"Template"
],
- "emoji": "",
- "hidden": true,
+ "emoji": "\uD83E\uDDE9",
+ "hidden": false,
"layout": "basic",
"relations": [
"targetObjectType",
"templateIsBundled"
],
- "description": "Sample object that has already some details in place and used to create objects from"
+ "description": "Sample object that has already some details in place and used to create objects from",
+ "revision": 1
},
{
"id": "set",
diff --git a/pkg/lib/database/schema.go b/pkg/lib/database/schema.go
deleted file mode 100644
index 57ee9aae5..000000000
--- a/pkg/lib/database/schema.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package database
-
-import (
- "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
-)
-
-// Schema used to subset compatible objects by some common relations
-type Schema interface {
- ListRelations() []*model.RelationLink
- RequiredRelations() []*model.RelationLink
-}
diff --git a/pkg/lib/database/schema_by_realtion_test.go b/pkg/lib/database/schema_by_realtion_test.go
deleted file mode 100644
index f4742e32d..000000000
--- a/pkg/lib/database/schema_by_realtion_test.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package database
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
-)
-
-func TestSchemaByRelations_ListRelations(t *testing.T) {
- // Given
- common := []*model.RelationLink{
- {
- Key: bundle.RelationKeyAssignee.String(),
- Format: model.RelationFormat_object,
- },
- {
- Key: bundle.RelationKeyDueDate.String(),
- Format: model.RelationFormat_date,
- },
- }
- sch := NewByRelations(common)
-
- // When
- got := sch.ListRelations()
-
- // Then
- want := []*model.RelationLink{
- {
- Key: bundle.RelationKeyAssignee.String(),
- Format: model.RelationFormat_object,
- },
- {
- Key: bundle.RelationKeyDueDate.String(),
- Format: model.RelationFormat_date,
- },
- }
- assert.ElementsMatch(t, want, got)
-}
-
-func TestSchemaByRelations_RequiredRelations(t *testing.T) {
- t.Run("hardcoded relations are added", func(t *testing.T) {
- // Given
- common := []*model.RelationLink{
- {
- Key: bundle.RelationKeyAssignee.String(),
- Format: model.RelationFormat_object,
- },
- }
- sch := NewByRelations(common)
-
- // When
- got := sch.RequiredRelations()
-
- // Then
- want := []*model.RelationLink{
- {
- Key: bundle.RelationKeyName.String(),
- Format: model.RelationFormat_shorttext,
- },
- {
- Key: bundle.RelationKeyType.String(),
- Format: model.RelationFormat_object,
- },
- {
- Key: bundle.RelationKeyAssignee.String(),
- Format: model.RelationFormat_object,
- },
- }
- assert.ElementsMatch(t, want, got)
- })
-}
diff --git a/pkg/lib/database/schema_by_relation.go b/pkg/lib/database/schema_by_relation.go
deleted file mode 100644
index a4ebd6f27..000000000
--- a/pkg/lib/database/schema_by_relation.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package database
-
-import (
- "github.com/samber/lo"
-
- "github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
-)
-
-type schemaByRelations struct {
- CommonRelations []*model.RelationLink
-}
-
-func NewByRelations(commonRelations []*model.RelationLink) Schema {
- return &schemaByRelations{CommonRelations: commonRelations}
-}
-
-func (sch *schemaByRelations) RequiredRelations() []*model.RelationLink {
- required := []*model.RelationLink{
- bundle.MustGetRelationLink(bundle.RelationKeyName),
- bundle.MustGetRelationLink(bundle.RelationKeyType),
- }
- required = append(required, sch.CommonRelations...)
- return lo.UniqBy(required, func(rel *model.RelationLink) string {
- return rel.Key
- })
-}
-
-func (sch *schemaByRelations) ListRelations() []*model.RelationLink {
- return sch.CommonRelations
-}
diff --git a/pkg/lib/database/schema_by_type.go b/pkg/lib/database/schema_by_type.go
deleted file mode 100644
index fef3abfdb..000000000
--- a/pkg/lib/database/schema_by_type.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package database
-
-import (
- "github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
-)
-
-type schemaByType struct {
- ObjType *model.ObjectType
-}
-
-func NewByType(objType *model.ObjectType) Schema {
- return &schemaByType{ObjType: objType}
-}
-
-func (sch *schemaByType) ListRelations() []*model.RelationLink {
- return sch.ObjType.RelationLinks
-}
-
-func (sch *schemaByType) RequiredRelations() []*model.RelationLink {
- return []*model.RelationLink{bundle.MustGetRelationLink(bundle.RelationKeyName)}
-}
diff --git a/pkg/lib/database/schema_by_type_test.go b/pkg/lib/database/schema_by_type_test.go
deleted file mode 100644
index d04c552b5..000000000
--- a/pkg/lib/database/schema_by_type_test.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package database
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- "github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
-)
-
-func givenSchemaByType() Schema {
- objType := bundle.MustGetType(bundle.TypeKeyProject)
- return NewByType(objType)
-}
-
-func TestSchemaByType_RequiredRelations(t *testing.T) {
- // Given
- sch := givenSchemaByType()
-
- // When
- got := sch.RequiredRelations()
-
- // Then
- want := []*model.RelationLink{
- // Relation links from type are ignored
- bundle.MustGetRelationLink(bundle.RelationKeyName),
- }
- assert.ElementsMatch(t, want, got)
-}
-
-func TestSchemaByType_ListRelations(t *testing.T) {
- // Given
- sch := givenSchemaByType()
-
- // When
- got := sch.ListRelations()
-
- // Then
- want := bundle.MustGetType(bundle.TypeKeyProject).RelationLinks
-
- assert.ElementsMatch(t, want, got)
-}
diff --git a/pkg/lib/database/schema_empty.go b/pkg/lib/database/schema_empty.go
deleted file mode 100644
index 3528561b4..000000000
--- a/pkg/lib/database/schema_empty.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package database
-
-import (
- "github.com/anyproto/anytype-heart/pkg/lib/bundle"
- "github.com/anyproto/anytype-heart/pkg/lib/pb/model"
-)
-
-type emptySchema struct{}
-
-func NewEmptySchema() Schema {
- return &emptySchema{}
-}
-
-func (sch *emptySchema) RequiredRelations() []*model.RelationLink {
- return []*model.RelationLink{bundle.MustGetRelationLink(bundle.RelationKeyName)}
-}
-
-func (sch *emptySchema) ListRelations() []*model.RelationLink {
- return nil
-}
diff --git a/pkg/lib/localstore/objectstore/mock_objectstore/mock_ObjectStore.go b/pkg/lib/localstore/objectstore/mock_objectstore/mock_ObjectStore.go
index 3f0247737..308fbb312 100644
--- a/pkg/lib/localstore/objectstore/mock_objectstore/mock_ObjectStore.go
+++ b/pkg/lib/localstore/objectstore/mock_objectstore/mock_ObjectStore.go
@@ -2398,6 +2398,53 @@ func (_c *MockObjectStore_QueryByIDAndSubscribeForChanges_Call) RunAndReturn(run
return _c
}
+// QueryIterate provides a mock function with given fields: q, proc
+func (_m *MockObjectStore) QueryIterate(q database.Query, proc func(*types.Struct)) error {
+ ret := _m.Called(q, proc)
+
+ if len(ret) == 0 {
+ panic("no return value specified for QueryIterate")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(database.Query, func(*types.Struct)) error); ok {
+ r0 = rf(q, proc)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// MockObjectStore_QueryIterate_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'QueryIterate'
+type MockObjectStore_QueryIterate_Call struct {
+ *mock.Call
+}
+
+// QueryIterate is a helper method to define mock.On call
+// - q database.Query
+// - proc func(*types.Struct)
+func (_e *MockObjectStore_Expecter) QueryIterate(q interface{}, proc interface{}) *MockObjectStore_QueryIterate_Call {
+ return &MockObjectStore_QueryIterate_Call{Call: _e.mock.On("QueryIterate", q, proc)}
+}
+
+func (_c *MockObjectStore_QueryIterate_Call) Run(run func(q database.Query, proc func(*types.Struct))) *MockObjectStore_QueryIterate_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(database.Query), args[1].(func(*types.Struct)))
+ })
+ return _c
+}
+
+func (_c *MockObjectStore_QueryIterate_Call) Return(_a0 error) *MockObjectStore_QueryIterate_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *MockObjectStore_QueryIterate_Call) RunAndReturn(run func(database.Query, func(*types.Struct)) error) *MockObjectStore_QueryIterate_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// QueryObjectIDs provides a mock function with given fields: q
func (_m *MockObjectStore) QueryObjectIDs(q database.Query) ([]string, int, error) {
ret := _m.Called(q)
diff --git a/pkg/lib/localstore/objectstore/objects.go b/pkg/lib/localstore/objectstore/objects.go
index 9e5e2beb1..ab0c56fde 100644
--- a/pkg/lib/localstore/objectstore/objects.go
+++ b/pkg/lib/localstore/objectstore/objects.go
@@ -56,6 +56,7 @@ type ObjectStore interface {
QueryByID(ids []string) (records []database.Record, err error)
QueryByIDAndSubscribeForChanges(ids []string, subscription database.Subscription) (records []database.Record, close func(), err error)
QueryObjectIDs(q database.Query) (ids []string, total int, err error)
+ QueryIterate(q database.Query, proc func(details *types.Struct)) error
HasIDs(ids ...string) (exists []string, err error)
GetByIDs(spaceID string, ids []string) ([]*model.ObjectInfo, error)
diff --git a/pkg/lib/localstore/objectstore/queries.go b/pkg/lib/localstore/objectstore/queries.go
index f31437282..a2089ba4b 100644
--- a/pkg/lib/localstore/objectstore/queries.go
+++ b/pkg/lib/localstore/objectstore/queries.go
@@ -8,6 +8,7 @@ import (
"strings"
"time"
+ anystore "github.com/anyproto/any-store"
"github.com/blevesearch/bleve/v2/search"
"github.com/gogo/protobuf/types"
"github.com/samber/lo"
@@ -504,3 +505,50 @@ func (s *dsObjectStore) QueryByIDAndSubscribeForChanges(ids []string, sub databa
s.addSubscriptionIfNotExists(sub)
return
}
+
+func (s *dsObjectStore) QueryIterate(q database.Query, proc func(details *types.Struct)) (err error) {
+ arena := s.arenaPool.Get()
+ defer s.arenaPool.Put(arena)
+
+ filters, err := database.NewFilters(q, s, arena)
+ if err != nil {
+ return fmt.Errorf("new filters: %w", err)
+ }
+
+ anystoreFilter := filters.FilterObj.AnystoreFilter()
+ query := s.objects.Find(anystoreFilter)
+
+ iter, err := query.Iter(s.componentCtx)
+ if err != nil {
+ return fmt.Errorf("find: %w", err)
+ }
+
+ defer func() {
+ if iterCloseErr := iter.Close(); iterCloseErr != nil {
+ err = errors.Join(iterCloseErr, err)
+ }
+ }()
+
+ for iter.Next() {
+ var doc anystore.Doc
+ doc, err = iter.Doc()
+ if err != nil {
+ err = fmt.Errorf("get doc: %w", err)
+ return
+ }
+
+ var details *types.Struct
+ details, err = pbtypes.JsonToProto(doc.Value())
+ if err != nil {
+ err = fmt.Errorf("json to proto: %w", err)
+ return
+ }
+ proc(details)
+ }
+ err = iter.Err()
+ if err != nil {
+ err = fmt.Errorf("iterate: %w", err)
+ return
+ }
+ return
+}
diff --git a/pkg/lib/localstore/objectstore/queries_test.go b/pkg/lib/localstore/objectstore/queries_test.go
index ece21cef1..08c1482d0 100644
--- a/pkg/lib/localstore/objectstore/queries_test.go
+++ b/pkg/lib/localstore/objectstore/queries_test.go
@@ -1,7 +1,7 @@
package objectstore
import (
- context2 "context"
+ "context"
"fmt"
"sort"
"strconv"
@@ -1104,7 +1104,7 @@ func TestQueryByIdAndSubscribeForChanges(t *testing.T) {
assertRecordsEqual(t, []TestObject{obj1, obj3}, recs)
t.Run("update details called, but there are no changes", func(t *testing.T) {
- err = s.UpdateObjectDetails(context2.Background(), "id1", makeDetails(obj1))
+ err = s.UpdateObjectDetails(context.Background(), "id1", makeDetails(obj1))
require.NoError(t, err)
select {
@@ -1116,7 +1116,7 @@ func TestQueryByIdAndSubscribeForChanges(t *testing.T) {
t.Run("update details order", func(t *testing.T) {
for i := 1; i <= 1000; i++ {
- err = s.UpdateObjectDetails(context2.Background(), "id1", makeDetails(makeObjectWithName("id1", fmt.Sprintf("%d", i))))
+ err = s.UpdateObjectDetails(context.Background(), "id1", makeDetails(makeObjectWithName("id1", fmt.Sprintf("%d", i))))
require.NoError(t, err)
}
@@ -1265,3 +1265,73 @@ func TestIndex(t *testing.T) {
obj2, obj3,
}, recs)
}
+
+func TestDsObjectStore_QueryAndProcess(t *testing.T) {
+ const spaceId = "spaceId"
+ s := NewStoreFixture(t)
+ s.AddObjects(t, []TestObject{
+ {
+ bundle.RelationKeyId: pbtypes.String("id1"),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyName: pbtypes.String("first"),
+ },
+ {
+ bundle.RelationKeyId: pbtypes.String("id2"),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyName: pbtypes.String("favorite"),
+ bundle.RelationKeyIsFavorite: pbtypes.Bool(true),
+ },
+ {
+ bundle.RelationKeyId: pbtypes.String("id3"),
+ bundle.RelationKeySpaceId: pbtypes.String(spaceId),
+ bundle.RelationKeyName: pbtypes.String("hi!"),
+ bundle.RelationKeyDescription: pbtypes.String("hi!"),
+ },
+ })
+
+ t.Run("counter", func(t *testing.T) {
+ var counter = 0
+ err := s.QueryIterate(database.Query{Filters: []*model.BlockContentDataviewFilter{{
+ RelationKey: bundle.RelationKeySpaceId.String(),
+ Condition: model.BlockContentDataviewFilter_Equal,
+ Value: pbtypes.String(spaceId),
+ }}}, func(_ *types.Struct) {
+ counter++
+ })
+
+ assert.NoError(t, err)
+ assert.Equal(t, 3, counter)
+ })
+
+ t.Run("favorites collector", func(t *testing.T) {
+ favs := make([]string, 0)
+ err := s.QueryIterate(database.Query{Filters: []*model.BlockContentDataviewFilter{{
+ RelationKey: bundle.RelationKeySpaceId.String(),
+ Condition: model.BlockContentDataviewFilter_Equal,
+ Value: pbtypes.String(spaceId),
+ }}}, func(s *types.Struct) {
+ if pbtypes.GetBool(s, bundle.RelationKeyIsFavorite.String()) {
+ favs = append(favs, pbtypes.GetString(s, bundle.RelationKeyId.String()))
+ }
+ })
+
+ assert.NoError(t, err)
+ assert.Equal(t, []string{"id2"}, favs)
+ })
+
+ t.Run("name and description analyzer", func(t *testing.T) {
+ ids := make([]string, 0)
+ err := s.QueryIterate(database.Query{Filters: []*model.BlockContentDataviewFilter{{
+ RelationKey: bundle.RelationKeySpaceId.String(),
+ Condition: model.BlockContentDataviewFilter_Equal,
+ Value: pbtypes.String(spaceId),
+ }}}, func(s *types.Struct) {
+ if pbtypes.GetString(s, bundle.RelationKeyName.String()) == pbtypes.GetString(s, bundle.RelationKeyDescription.String()) {
+ ids = append(ids, pbtypes.GetString(s, bundle.RelationKeyId.String()))
+ }
+ })
+
+ assert.NoError(t, err)
+ assert.Equal(t, []string{"id3"}, ids)
+ })
+}
diff --git a/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go b/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go
index 7da55be02..262ae92ae 100644
--- a/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go
+++ b/space/internal/components/migration/systemobjectreviser/systemobjectreviser.go
@@ -149,6 +149,7 @@ func buildDiffDetails(origin, current *types.Struct) (details []*model.Detail) {
bundle.RelationKeyIsReadonly.String(), bundle.RelationKeyIsHidden.String(),
bundle.RelationKeyRevision.String(), bundle.RelationKeyRelationReadonlyValue.String(),
bundle.RelationKeyRelationMaxCount.String(), bundle.RelationKeyTargetObjectType.String(),
+ bundle.RelationKeyIconEmoji.String(),
})
for key, value := range diff.Fields {
diff --git a/space/spacecore/storage/sqlitestorage/service.go b/space/spacecore/storage/sqlitestorage/service.go
index fed45cd03..50cffbc82 100644
--- a/space/spacecore/storage/sqlitestorage/service.go
+++ b/space/spacecore/storage/sqlitestorage/service.go
@@ -106,6 +106,12 @@ func (s *storageService) Run(ctx context.Context) (err error) {
sql.Register(driverName,
&sqlite3.SQLiteDriver{
ConnectHook: func(conn *sqlite3.SQLiteConn) error {
+ if s.dbTempPath != "" {
+ _, err := conn.Exec("PRAGMA temp_store_directory = '"+s.dbTempPath+"';", nil)
+ if err != nil {
+ return err
+ }
+ }
conn.RegisterUpdateHook(func(op int, db string, table string, rowid int64) {
s.lastWrite.Store(time.Now())
})
@@ -126,12 +132,6 @@ func (s *storageService) Run(ctx context.Context) (err error) {
return
}
s.writeDb.SetMaxOpenConns(1)
- if s.dbTempPath != "" {
- if _, err = s.writeDb.Exec("PRAGMA temp_store_directory = '" + s.dbTempPath + "';"); err != nil {
- log.Error("write:: failed to set temp store directory", zap.Error(err))
- return
- }
- }
if _, err = s.writeDb.Exec(sqlCreateTables); err != nil {
log.With(zap.String("db", "spacestore_sqlite"), zap.String("type", "createtable"), zap.Error(err)).Error("failed to open db")
@@ -142,12 +142,6 @@ func (s *storageService) Run(ctx context.Context) (err error) {
log.With(zap.String("db", "spacestore_sqlite"), zap.String("type", "read"), zap.Error(err)).Error("failed to open db")
return
}
- if s.dbTempPath != "" {
- if _, err = s.readDb.Exec("PRAGMA temp_store_directory = '" + s.dbTempPath + "';"); err != nil {
- log.Error("read:: failed to set temp store directory", zap.Error(err))
- return
- }
- }
s.readDb.SetMaxOpenConns(10)
if err = initStmts(s); err != nil {
diff --git a/tantivity_sha256.txt b/tantivity_sha256.txt
index e7ab01e6f..6aced83d8 100644
--- a/tantivity_sha256.txt
+++ b/tantivity_sha256.txt
@@ -1,11 +1,11 @@
-7a472fd61b7c32b1aecc130a0d65a0b1e36f404c97144b2dc993c7bfe628ea6b deps/libs/android-386.tar.gz
-7c3902588b98d6c4951124b8ded78b956448483a057c03e7ef85cb05182a7afd deps/libs/android-amd64.tar.gz
-f12a6a9b2904a67a7cec36863a65dc128b8efd9c6968db29bb7904ca79040381 deps/libs/android-arm.tar.gz
-d15a085afb2887a839697080101772525b614667924c5df98aa212ae3d72a825 deps/libs/android-arm64.tar.gz
-dc6eca09d7946dbf0b0fd7615be555edfc6d6f1be9a47dd757d90626a6d05c09 deps/libs/darwin-amd64.tar.gz
-216a751320edb4e5e737ebeb7eb3181fbdab71f2ec4d441621ce723056a5bc03 deps/libs/darwin-arm64.tar.gz
-87d629216a127eb29064cb3d1dca63ef360d1920330bfcbecf0ca78e35f37756 deps/libs/ios-amd64.tar.gz
-4a82c10a149f84073af08f2cf85dce680fd3301fc7cd19279227dddd60effbcc deps/libs/ios-arm64.tar.gz
-b55ecde8d30fd38ab12ffe2d51415b2c7a74ff5af7b61cd35c401345a33a482d deps/libs/ios-arm64-sim.tar.gz
-a514c9e61dd8e6fea7c5236cf359ffd14bc2fd5db52fc1ca8b0e3df10a00cbcd deps/libs/linux-amd64-musl.tar.gz
-3bbab5b3a28cab4306b3ced4dd0c60f06a85e01592367ccf910f3a59c7db674b deps/libs/windows-amd64.tar.gz
+03ed207923dd1f17882dd7b521669a17c2fa70199ed19a5ce87e93c23e627d95 deps/libs/android-386.tar.gz
+0f9cc0190fa412dae498f790ff0629b9c5d3f4531095a9b2b756d295d483b173 deps/libs/android-amd64.tar.gz
+8da9dd9060d02811c774f913d1b165f354d045b1237ff05aa5daab841a096481 deps/libs/android-arm.tar.gz
+9b6c9973af588d984b214619fdc56dfc463b622bc933cd95fd0278e6f23bf63c deps/libs/android-arm64.tar.gz
+eb3354937db4ec79a3586b06e0db0e474b5fdeb54fd4cf0b0b8f15f7167112aa deps/libs/darwin-amd64.tar.gz
+abc15c4db91dc854461b3bc0665ab5221aa63694263c322d2833170ada279e7a deps/libs/darwin-arm64.tar.gz
+1d93858fe723b24eda7c1ebaf2f5e191513125dc97a89282ae5c607bd4245c1b deps/libs/ios-amd64.tar.gz
+4c5256eee402fa7d73c9db5d407ff76227cf144caca0504a4c051db18af67dc0 deps/libs/ios-arm64.tar.gz
+7984768b08c8873b959b180d21aeccb4b4641d89f5980673c64ec5fa833a48e1 deps/libs/ios-arm64-sim.tar.gz
+727643dab7d31ce3b08de4b9d85265a6dd9939e7323e6310457d0a8355791dcc deps/libs/linux-amd64-musl.tar.gz
+628f3d449505f560a60885e46c40f16a6fa63d3ce98133e7ddce05176bbd3444 deps/libs/windows-amd64.tar.gz
diff --git a/util/testMock/objectstore_mock.go b/util/testMock/objectstore_mock.go
index ad72600fe..1032052c1 100644
--- a/util/testMock/objectstore_mock.go
+++ b/util/testMock/objectstore_mock.go
@@ -684,6 +684,20 @@ func (mr *MockObjectStoreMockRecorder) QueryByIDAndSubscribeForChanges(arg0, arg
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryByIDAndSubscribeForChanges", reflect.TypeOf((*MockObjectStore)(nil).QueryByIDAndSubscribeForChanges), arg0, arg1)
}
+// QueryIterate mocks base method.
+func (m *MockObjectStore) QueryIterate(arg0 database.Query, arg1 func(*types.Struct)) error {
+ m.ctrl.T.Helper()
+ ret := m.ctrl.Call(m, "QueryIterate", arg0, arg1)
+ ret0, _ := ret[0].(error)
+ return ret0
+}
+
+// QueryIterate indicates an expected call of QueryIterate.
+func (mr *MockObjectStoreMockRecorder) QueryIterate(arg0, arg1 any) *gomock.Call {
+ mr.mock.ctrl.T.Helper()
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryIterate", reflect.TypeOf((*MockObjectStore)(nil).QueryIterate), arg0, arg1)
+}
+
// QueryObjectIDs mocks base method.
func (m *MockObjectStore) QueryObjectIDs(arg0 database.Query) ([]string, int, error) {
m.ctrl.T.Helper()