From ed1f3a9a4a1ab7852d9a0f727a0ad6d1e32475e4 Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Tue, 15 Oct 2024 13:20:39 +0200 Subject: [PATCH] GO-1822: added more tests and fixed existing Signed-off-by: AnastasiaShemyakinskaya --- core/block/import/common/error.go | 6 +- core/block/import/common/filenameprovider.go | 3 +- core/block/import/common/test/utils.go | 25 + core/block/import/csv/converter.go | 4 +- core/block/import/csv/converter_test.go | 85 +- core/block/import/html/converter.go | 2 +- core/block/import/html/converter_test.go | 98 +- core/block/import/markdown/blockconverter.go | 3 +- .../import/markdown/blockconverter_test.go | 17 +- core/block/import/markdown/import_test.go | 30 +- core/block/import/notion/api/client/error.go | 2 +- core/block/import/notion/converter_test.go | 97 ++ core/block/import/pb/converter.go | 5 +- core/block/import/pb/converter_test.go | 53 +- core/block/import/txt/converter.go | 3 +- core/block/import/txt/converter_test.go | 104 +- docs/ImportErrorCodes.md | 1 - docs/proto.md | 1 - pkg/lib/pb/model/models.pb.go | 1103 ++++++++--------- pkg/lib/pb/model/protos/models.proto | 1 - 20 files changed, 969 insertions(+), 674 deletions(-) create mode 100644 core/block/import/common/test/utils.go diff --git a/core/block/import/common/error.go b/core/block/import/common/error.go index 98961dc40..a4ba5a980 100644 --- a/core/block/import/common/error.go +++ b/core/block/import/common/error.go @@ -23,14 +23,12 @@ var ( ErrFileImportNoObjectsInZipArchive = fmt.Errorf("no objects in zip archive") ErrFileImportNoObjectsInDirectory = fmt.Errorf("no objects in directory") - ErrFileImportSourceFileOpenError = fmt.Errorf("failed to open imported file") ErrPbNotAnyBlockFormat = fmt.Errorf("file doesn't match Anyblock format ") ErrWrongHTMLFormat = fmt.Errorf("html file has wrong structure") ErrNoSnapshotToImport = fmt.Errorf("no snapshot to import") // for external import - ErrCSVFileFormat = fmt.Errorf("csv file has wrong structure") ) type ConvertError struct { @@ -145,8 +143,6 @@ func GetImportNotificationErrorCode(err error) model.ImportErrorCode { return model.Import_FILE_LOAD_ERROR case errors.Is(err, ErrWrongHTMLFormat): return model.Import_HTML_WRONG_HTML_STRUCTURE - case errors.Is(err, ErrCSVFileFormat): - return model.Import_CSV_WRONG_CSV_STRUCTURE case errors.Is(err, list.ErrInsufficientPermissions): return model.Import_INSUFFICIENT_PERMISSIONS default: @@ -173,7 +169,7 @@ func IsNoObjectError(err error) bool { func isDefinedError(err error) bool { return errors.Is(err, ErrCancel) || errors.Is(err, ErrCsvLimitExceeded) || errors.Is(err, ErrNotionServerExceedRateLimit) || errors.Is(err, ErrNotionServerIsUnavailable) || errors.Is(err, ErrFileLoad) || errors.Is(err, ErrPbNotAnyBlockFormat) || - errors.Is(err, ErrWrongHTMLFormat) || errors.Is(err, ErrFileImportSourceFileOpenError) || errors.Is(err, ErrCSVFileFormat) + errors.Is(err, ErrWrongHTMLFormat) } func GetGalleryResponseCode(err error) pb.RpcObjectImportExperienceResponseErrorCode { diff --git a/core/block/import/common/filenameprovider.go b/core/block/import/common/filenameprovider.go index 545483f3a..c7241eb82 100644 --- a/core/block/import/common/filenameprovider.go +++ b/core/block/import/common/filenameprovider.go @@ -2,7 +2,6 @@ package common import ( "bufio" - "fmt" "io" "os" "path/filepath" @@ -37,7 +36,7 @@ func ProvideFileName(fileName string, filesSource source.Source, path string, te fileName = tempFile return nil }); err != nil { - return "", false, fmt.Errorf("%w: %s", ErrFileImportSourceFileOpenError, err.Error()) + return "", false, err } return fileName, createFileBlock, nil } diff --git a/core/block/import/common/test/utils.go b/core/block/import/common/test/utils.go new file mode 100644 index 000000000..5c5b000d5 --- /dev/null +++ b/core/block/import/common/test/utils.go @@ -0,0 +1,25 @@ +package test + +import ( + "archive/zip" + "fmt" + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func CreateEmptyZip(t *testing.T, zipFileName string) error { + zipFile, err := os.Create(zipFileName) + if err != nil { + return fmt.Errorf("Failed to create zip file: %w\n", err) + } + defer zipFile.Close() + + zipWriter := zip.NewWriter(zipFile) + defer func() { + err = zipWriter.Close() + assert.NoError(t, err) + }() + return nil +} diff --git a/core/block/import/csv/converter.go b/core/block/import/csv/converter.go index d2a08002d..7112fd2a4 100644 --- a/core/block/import/csv/converter.go +++ b/core/block/import/csv/converter.go @@ -145,7 +145,7 @@ func (c *CSV) getSnapshotsAndObjectsIds(importSource source.Source, } csvTable, err := c.getCSVTable(fileReader, params.GetDelimiter()) if err != nil { - allErrors.Add(fmt.Errorf("%w, %s", common.ErrCSVFileFormat, err.Error())) + allErrors.Add(err) return !allErrors.ShouldAbortImport(len(params.GetPath()), model.Import_Csv) } if params.TransposeRowsAndColumns && len(csvTable) != 0 { @@ -160,7 +160,7 @@ func (c *CSV) getSnapshotsAndObjectsIds(importSource source.Source, allSnapshots = append(allSnapshots, snapshots...) return true }); iterateErr != nil { - allErrors.Add(fmt.Errorf("%w: %s", common.ErrFileImportSourceFileOpenError, iterateErr.Error())) + allErrors.Add(iterateErr) } return &Result{allObjectsIds, allSnapshots} } diff --git a/core/block/import/csv/converter_test.go b/core/block/import/csv/converter_test.go index 5d8fca2c3..2647b8bdf 100644 --- a/core/block/import/csv/converter_test.go +++ b/core/block/import/csv/converter_test.go @@ -3,7 +3,6 @@ package csv import ( "context" "errors" - "os" "path/filepath" "strings" "testing" @@ -11,11 +10,10 @@ import ( "github.com/gogo/protobuf/types" "github.com/samber/lo" "github.com/stretchr/testify/assert" - "golang.org/x/mod/module" - "golang.org/x/mod/zip" "github.com/anyproto/anytype-heart/core/block/editor/template" "github.com/anyproto/anytype-heart/core/block/import/common" + "github.com/anyproto/anytype-heart/core/block/import/common/test" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -29,7 +27,7 @@ func TestCsv_GetSnapshotsEmptyFile(t *testing.T) { p := process.NewProgress(pb.ModelProcess_Import) sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ - CsvParams: &pb.RpcObjectImportRequestCsvParams{Path: []string{"testdata/test.csv"}}, + CsvParams: &pb.RpcObjectImportRequestCsvParams{Path: []string{filepath.Join("testdata", "test.csv")}}, }, Type: model.Import_Csv, Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, @@ -55,7 +53,7 @@ func TestCsv_GetSnapshots(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/Journal.csv"}, + Path: []string{filepath.Join("testdata", "Journal.csv")}, UseFirstRowForRelations: true}, }, Type: model.Import_Csv, @@ -88,7 +86,7 @@ func TestCsv_GetSnapshotsTable(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/Journal.csv"}, + Path: []string{filepath.Join("testdata", "Journal.csv")}, Mode: pb.RpcObjectImportRequestCsvParams_TABLE, }, }, @@ -117,7 +115,7 @@ func TestCsv_GetSnapshotsTableUseFirstColumnForRelationsOn(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/Journal.csv"}, + Path: []string{filepath.Join("testdata", "Journal.csv")}, Mode: pb.RpcObjectImportRequestCsvParams_TABLE, UseFirstRowForRelations: true, }, @@ -157,7 +155,11 @@ func TestCsv_GetSnapshotsSemiColon(t *testing.T) { p := process.NewProgress(pb.ModelProcess_Import) sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ - CsvParams: &pb.RpcObjectImportRequestCsvParams{Path: []string{"testdata/semicolon.csv"}, Delimiter: ";", UseFirstRowForRelations: true}, + CsvParams: &pb.RpcObjectImportRequestCsvParams{ + Path: []string{filepath.Join("testdata", "semicolon.csv")}, + Delimiter: ";", + UseFirstRowForRelations: true, + }, }, Type: model.Import_Csv, Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, @@ -177,7 +179,7 @@ func TestCsv_GetSnapshotsTranspose(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/transpose.csv"}, + Path: []string{filepath.Join("testdata", "transpose.csv")}, Delimiter: ";", TransposeRowsAndColumns: true, UseFirstRowForRelations: true, @@ -217,7 +219,7 @@ func TestCsv_GetSnapshotsTransposeUseFirstRowForRelationsOff(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/transpose.csv"}, + Path: []string{filepath.Join("testdata", "transpose.csv")}, Delimiter: ";", TransposeRowsAndColumns: true, UseFirstRowForRelations: false, @@ -245,7 +247,7 @@ func TestCsv_GetSnapshotsUseFirstColumnForRelationsOn(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/Journal.csv"}, + Path: []string{filepath.Join("testdata", "Journal.csv")}, Delimiter: ",", UseFirstRowForRelations: true, }, @@ -292,7 +294,7 @@ func TestCsv_GetSnapshotsUseFirstColumnForRelationsOff(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/Journal.csv"}, + Path: []string{filepath.Join("testdata", "Journal.csv")}, Delimiter: ",", }, }, @@ -347,7 +349,7 @@ func TestCsv_GetSnapshotsQuotedStrings(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/quotedstrings.csv"}, + Path: []string{filepath.Join("testdata", "quotedstrings.csv")}, Delimiter: ",", TransposeRowsAndColumns: true, UseFirstRowForRelations: true, @@ -368,7 +370,7 @@ func TestCsv_GetSnapshotsBigFile(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/bigfile.csv", "testdata/transpose.csv"}, + Path: []string{filepath.Join("testdata", "bigfile.csv"), filepath.Join("testdata", "transpose.csv")}, Delimiter: ";", UseFirstRowForRelations: true, }, @@ -389,7 +391,7 @@ func TestCsv_GetSnapshotsEmptyFirstLineUseFirstColumnForRelationsOn(t *testing.T sn, err := csv.GetSnapshots(ctx, &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/emptyfirstline.csv"}, + Path: []string{filepath.Join("testdata", "emptyfirstline.csv")}, Delimiter: ";", UseFirstRowForRelations: true, }, @@ -417,7 +419,7 @@ func TestCsv_GetSnapshotsEmptyFirstLineUseFirstColumnForRelationsOff(t *testing. sn, err := csv.GetSnapshots(ctx, &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/emptyfirstline.csv"}, + Path: []string{filepath.Join("testdata", "emptyfirstline.csv")}, Delimiter: ";", UseFirstRowForRelations: false, }, @@ -464,7 +466,7 @@ func TestCsv_GetSnapshots1000RowsFile(t *testing.T) { sn, _ := csv.GetSnapshots(ctx, &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/1000_rows.csv"}, + Path: []string{filepath.Join("testdata", "1000_rows.csv")}, Delimiter: ";", UseFirstRowForRelations: false, }, @@ -490,7 +492,7 @@ func TestCsv_GetSnapshots1000RowsFile(t *testing.T) { sn, _ = csv.GetSnapshots(ctx, &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/1000_rows.csv"}, + Path: []string{filepath.Join("testdata", "1000_rows.csv")}, Delimiter: ";", UseFirstRowForRelations: true, }, @@ -569,7 +571,7 @@ func Test_findUniqueRelationWithSpaces(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/relationswithspaces.csv"}, + Path: []string{filepath.Join("testdata", "relationswithspaces.csv")}, Delimiter: ";", UseFirstRowForRelations: true, }, @@ -612,7 +614,7 @@ func TestCsv_GetSnapshots10Relations(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/10_relations.csv"}, + Path: []string{filepath.Join("testdata", "10_relations.csv")}, Delimiter: ";", UseFirstRowForRelations: false, }, @@ -643,7 +645,7 @@ func TestCsv_GetSnapshots10Relations(t *testing.T) { sn, err = csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/10_relations.csv"}, + Path: []string{filepath.Join("testdata", "10_relations.csv")}, Delimiter: ";", UseFirstRowForRelations: true, }, @@ -681,7 +683,7 @@ func TestCsv_GetSnapshotsTableModeDifferentColumnsNumber(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/differentcolumnnumber.csv"}, + Path: []string{filepath.Join("testdata", "differentcolumnnumber.csv")}, Delimiter: ",", UseFirstRowForRelations: true, Mode: pb.RpcObjectImportRequestCsvParams_TABLE, @@ -719,7 +721,7 @@ func TestCsv_GetSnapshotsTableModeDifferentColumnsNumber(t *testing.T) { sn, err := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{"testdata/differentcolumnnumber.csv"}, + Path: []string{filepath.Join("testdata", "differentcolumnnumber.csv")}, Delimiter: ",", UseFirstRowForRelations: true, Mode: pb.RpcObjectImportRequestCsvParams_COLLECTION, @@ -782,14 +784,9 @@ func TestCSV_GetSnapshots(t *testing.T) { t.Run("no object in archive", func(t *testing.T) { // given dir := t.TempDir() - file := "archive.zip" - filePath := filepath.Join(dir, file) - tmpZip, err := os.Create(filePath) - f, err := os.CreateTemp(dir, filepath.Join("test", "test")) + zipPath := filepath.Join(dir, "empty.zip") + err := test.CreateEmptyZip(t, zipPath) assert.Nil(t, err) - err = zip.Create(tmpZip, module.Version{Path: dir}, []zip.File{*f}) - assert.Nil(t, err) - csv := CSV{} p := process.NewProgress(pb.ModelProcess_Import) @@ -797,7 +794,7 @@ func TestCSV_GetSnapshots(t *testing.T) { _, ce := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ CsvParams: &pb.RpcObjectImportRequestCsvParams{ - Path: []string{filePath}, + Path: []string{zipPath}, Delimiter: ",", UseFirstRowForRelations: true, Mode: pb.RpcObjectImportRequestCsvParams_TABLE, @@ -809,7 +806,31 @@ func TestCSV_GetSnapshots(t *testing.T) { // then assert.NotNil(t, ce) - assert.NotNil(t, errors.Is(ce.GetResultError(model.Import_Csv), common.ErrFileImportNoObjectsInZipArchive)) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Csv), common.ErrFileImportNoObjectsInZipArchive)) + }) + t.Run("no object in dir", func(t *testing.T) { + // given + dir := t.TempDir() + csv := CSV{} + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := csv.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfCsvParams{ + CsvParams: &pb.RpcObjectImportRequestCsvParams{ + Path: []string{dir}, + Delimiter: ",", + UseFirstRowForRelations: true, + Mode: pb.RpcObjectImportRequestCsvParams_TABLE, + }, + }, + Type: model.Import_Csv, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, p) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Csv), common.ErrFileImportNoObjectsInDirectory)) }) } func getRelationsNumber(keys []string) int { diff --git a/core/block/import/html/converter.go b/core/block/import/html/converter.go index e5d0f34fb..e084d46c7 100644 --- a/core/block/import/html/converter.go +++ b/core/block/import/html/converter.go @@ -149,7 +149,7 @@ func (h *HTML) getSnapshotsAndRootObjects(path string, rootObjects = append(rootObjects, id) return true }); iterateErr != nil { - allErrors.Add(fmt.Errorf("%w: %s", common.ErrFileImportSourceFileOpenError, iterateErr.Error())) + allErrors.Add(iterateErr) } return snapshots, rootObjects } diff --git a/core/block/import/html/converter_test.go b/core/block/import/html/converter_test.go index abdd12c98..bef739e4c 100644 --- a/core/block/import/html/converter_test.go +++ b/core/block/import/html/converter_test.go @@ -14,6 +14,7 @@ import ( "github.com/anyproto/anytype-heart/core/block/import/common" "github.com/anyproto/anytype-heart/core/block/import/common/source" + "github.com/anyproto/anytype-heart/core/block/import/common/test" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -28,28 +29,79 @@ func (p *MockTempDirProvider) TempDir() string { } func TestHTML_GetSnapshots(t *testing.T) { - h := &HTML{} - p := process.NewProgress(pb.ModelProcess_Import) - sn, err := h.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ - Params: &pb.RpcObjectImportRequestParamsOfHtmlParams{ - HtmlParams: &pb.RpcObjectImportRequestHtmlParams{Path: []string{"testdata/test.html", "testdata/test"}}, - }, - Type: model.Import_Html, - Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, - }, p) + t.Run("success", func(t *testing.T) { + h := &HTML{} + p := process.NewProgress(pb.ModelProcess_Import) + sn, err := h.GetSnapshots( + context.Background(), + &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfHtmlParams{ + HtmlParams: &pb.RpcObjectImportRequestHtmlParams{Path: []string{filepath.Join("testdata", "test.html"), filepath.Join("testdata", "test")}}, + }, + Type: model.Import_Html, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, + p, + ) - assert.NotNil(t, sn) - assert.Len(t, sn.Snapshots, 2) - assert.Contains(t, sn.Snapshots[0].FileName, "test.html") - assert.NotEmpty(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"]) - assert.Equal(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"], pbtypes.String("test")) + assert.NotNil(t, sn) + assert.Len(t, sn.Snapshots, 2) + assert.Contains(t, sn.Snapshots[0].FileName, "test.html") + assert.NotEmpty(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"]) + assert.Equal(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"], pbtypes.String("test")) - assert.Contains(t, sn.Snapshots[1].FileName, rootCollectionName) - assert.NotEmpty(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes) - assert.Equal(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes[0], bundle.TypeKeyCollection.String()) + assert.Contains(t, sn.Snapshots[1].FileName, rootCollectionName) + assert.NotEmpty(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes) + assert.Equal(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes[0], bundle.TypeKeyCollection.String()) - assert.NotEmpty(t, err) - assert.True(t, errors.Is(err.GetResultError(model.Import_Html), common.ErrFileImportNoObjectsInDirectory)) + assert.NotEmpty(t, err) + assert.True(t, errors.Is(err.GetResultError(model.Import_Html), common.ErrFileImportNoObjectsInDirectory)) + }) + t.Run("no object in archive", func(t *testing.T) { + // given + dir := t.TempDir() + zipPath := filepath.Join(dir, "empty.zip") + err := test.CreateEmptyZip(t, zipPath) + assert.Nil(t, err) + html := HTML{} + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := html.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfHtmlParams{ + HtmlParams: &pb.RpcObjectImportRequestHtmlParams{ + Path: []string{zipPath}, + }, + }, + Type: model.Import_Html, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, p) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Html), common.ErrFileImportNoObjectsInZipArchive)) + }) + t.Run("no object in dir", func(t *testing.T) { + // given + dir := t.TempDir() + html := HTML{} + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := html.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfHtmlParams{ + HtmlParams: &pb.RpcObjectImportRequestHtmlParams{ + Path: []string{dir}, + }, + }, + Type: model.Import_Html, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, p) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Html), common.ErrFileImportNoObjectsInDirectory)) + }) } func TestHTML_provideFileName(t *testing.T) { @@ -73,9 +125,10 @@ func TestHTML_provideFileName(t *testing.T) { currentDir, err := os.Getwd() assert.Nil(t, err) source := source.GetSource(currentDir) + filePath := filepath.Join("testdata", "test") // when - absPath, err := filepath.Abs("testdata/test") + absPath, err := filepath.Abs(filePath) assert.Nil(t, err) newFileName, _, err := common.ProvideFileName(absPath, source, currentDir, h.tempDirProvider) @@ -89,13 +142,14 @@ func TestHTML_provideFileName(t *testing.T) { currentDir, err := os.Getwd() assert.Nil(t, err) source := source.GetSource(currentDir) + filePath := filepath.Join("testdata", "test") // when - newFileName, _, err := common.ProvideFileName("testdata/test", source, currentDir, h.tempDirProvider) + newFileName, _, err := common.ProvideFileName(filePath, source, currentDir, h.tempDirProvider) // then assert.Nil(t, err) - absPath, err := filepath.Abs("testdata/test") + absPath, err := filepath.Abs(filePath) assert.Nil(t, err) assert.Equal(t, absPath, newFileName) }) diff --git a/core/block/import/markdown/blockconverter.go b/core/block/import/markdown/blockconverter.go index 17038527e..bf856c9ac 100644 --- a/core/block/import/markdown/blockconverter.go +++ b/core/block/import/markdown/blockconverter.go @@ -1,7 +1,6 @@ package markdown import ( - "fmt" "io" "os" "path/filepath" @@ -76,7 +75,7 @@ func (m *mdConverter) getFileInfo(importSource source.Source, allErrors *common. } return true }); iterateErr != nil { - allErrors.Add(fmt.Errorf("%w: %s", common.ErrFileImportSourceFileOpenError, iterateErr.Error())) + allErrors.Add(iterateErr) } return fileInfo } diff --git a/core/block/import/markdown/blockconverter_test.go b/core/block/import/markdown/blockconverter_test.go index f5e8c1df6..6c506050d 100644 --- a/core/block/import/markdown/blockconverter_test.go +++ b/core/block/import/markdown/blockconverter_test.go @@ -24,15 +24,18 @@ func Test_processFiles(t *testing.T) { t.Run("imported directory include mov and pdf files - md file has file blocks", func(t *testing.T) { // given converter := newMDConverter(&MockTempDir{}) - _, err := os.Create("./testdata/test.pdf") + pdfFile := filepath.Join("testdata", "test.pdf") + _, err := os.Create(pdfFile) assert.Nil(t, err) - defer os.Remove("./testdata/test.pdf") - _, err = os.Create("./testdata/test.mov") + defer os.Remove(pdfFile) + + movFile := filepath.Join("testdata", "test.mov") + _, err = os.Create(movFile) assert.Nil(t, err) - defer os.Remove("./testdata/test.mov") + defer os.Remove(movFile) workingDir, err := os.Getwd() - absolutePath := filepath.Join(workingDir, "./testdata") + absolutePath := filepath.Join(workingDir, "testdata") source := source.GetSource(absolutePath) // when @@ -62,10 +65,10 @@ func Test_processFiles(t *testing.T) { t.Run("imported directory include without mov and pdf files - no file blocks", func(t *testing.T) { // given converter := newMDConverter(&MockTempDir{}) - source := source.GetSource("./testdata") + source := source.GetSource("testdata") workingDir, err := os.Getwd() assert.Nil(t, err) - absolutePath := filepath.Join(workingDir, "./testdata") + absolutePath := filepath.Join(workingDir, "testdata") // when files := converter.processFiles(absolutePath, common.NewError(pb.RpcObjectImportRequest_IGNORE_ERRORS), source) diff --git a/core/block/import/markdown/import_test.go b/core/block/import/markdown/import_test.go index dc8c40e34..b38d9a617 100644 --- a/core/block/import/markdown/import_test.go +++ b/core/block/import/markdown/import_test.go @@ -2,12 +2,15 @@ package markdown import ( "context" + "errors" "os" "path/filepath" "testing" "github.com/stretchr/testify/assert" + "github.com/anyproto/anytype-heart/core/block/import/common" + "github.com/anyproto/anytype-heart/core/block/import/common/test" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/pb/model" @@ -39,7 +42,7 @@ func TestMarkdown_GetSnapshots(t *testing.T) { subPageId string ) for _, snapshot := range sn.Snapshots { - if snapshot.FileName == filepath.Join(testDirectory, "test_database/test.md") { + if snapshot.FileName == filepath.Join(testDirectory, "test_database", "test.md") { subPageId = snapshot.Id break } @@ -55,7 +58,6 @@ func TestMarkdown_GetSnapshots(t *testing.T) { } assert.True(t, found) }) - t.Run("no object error", func(t *testing.T) { // given testDirectory := t.TempDir() @@ -113,6 +115,30 @@ func TestMarkdown_GetSnapshots(t *testing.T) { } assert.True(t, found) }) + t.Run("no object in archive", func(t *testing.T) { + // given + testDirectory := t.TempDir() + zipPath := filepath.Join(testDirectory, "empty.zip") + err := test.CreateEmptyZip(t, zipPath) + assert.Nil(t, err) + + h := &Markdown{} + p := process.NewProgress(pb.ModelProcess_Import) + + // when + sn, ce := h.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfMarkdownParams{ + MarkdownParams: &pb.RpcObjectImportRequestMarkdownParams{Path: []string{zipPath}}, + }, + Type: model.Import_Markdown, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, p) + + // then + assert.NotNil(t, ce) + assert.Nil(t, sn) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Markdown), common.ErrFileImportNoObjectsInZipArchive)) + }) } func buildExpectedTree(fileNameToObjectId map[string]string, provider *MockTempDir, rootId string) *blockbuilder.Block { diff --git a/core/block/import/notion/api/client/error.go b/core/block/import/notion/api/client/error.go index 5b81adee6..2a268fdef 100644 --- a/core/block/import/notion/api/client/error.go +++ b/core/block/import/notion/api/client/error.go @@ -22,7 +22,7 @@ func TransformHTTPCodeToError(response []byte) error { if notionErr.Status >= 500 { return fmt.Errorf("%w: %s", common.ErrNotionServerIsUnavailable, notionErr.Message) } - if notionErr.Status >= 429 { + if notionErr.Status == 429 { return fmt.Errorf("%w: %s", common.ErrNotionServerExceedRateLimit, notionErr.Message) } return fmt.Errorf("status: %d, code: %s, message: %s", notionErr.Status, notionErr.Code, notionErr.Message) diff --git a/core/block/import/notion/converter_test.go b/core/block/import/notion/converter_test.go index 5e2eb960e..ff8d56dcc 100644 --- a/core/block/import/notion/converter_test.go +++ b/core/block/import/notion/converter_test.go @@ -1,15 +1,112 @@ package notion import ( + "context" + "errors" + "net/http" + "net/http/httptest" "testing" "github.com/stretchr/testify/assert" + "github.com/anyproto/anytype-heart/core/block/import/common" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/client" "github.com/anyproto/anytype-heart/core/block/import/notion/api/database" "github.com/anyproto/anytype-heart/core/block/import/notion/api/page" "github.com/anyproto/anytype-heart/core/block/import/notion/api/property" + "github.com/anyproto/anytype-heart/core/block/import/notion/api/search" + "github.com/anyproto/anytype-heart/core/block/process" + "github.com/anyproto/anytype-heart/pb" + "github.com/anyproto/anytype-heart/pkg/lib/pb/model" ) +func TestNotion_GetSnapshots(t *testing.T) { + t.Run("internal error from Notion", func(t *testing.T) { + // given + converter := &Notion{} + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte(`{"object":"error","status":500,"code":"internal_error","message":"internal server error"}`)) + })) + defer s.Close() + c := client.NewClient() + c.BasePath = s.URL + converter.search = search.New(c) + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := converter.GetSnapshots( + context.Background(), + &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfNotionParams{NotionParams: &pb.RpcObjectImportRequestNotionParams{ApiKey: "key"}}, + Type: model.Import_Markdown, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, + p, + ) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Notion), common.ErrNotionServerIsUnavailable)) + }) + t.Run("rate limit error from Notion", func(t *testing.T) { + // given + converter := &Notion{} + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusTooManyRequests) + w.Write([]byte(`{"object":"error","status":429,"code":"rate_limit_error","message":"rate limit error"}`)) + })) + defer s.Close() + c := client.NewClient() + c.BasePath = s.URL + converter.search = search.New(c) + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := converter.GetSnapshots( + context.Background(), + &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfNotionParams{NotionParams: &pb.RpcObjectImportRequestNotionParams{ApiKey: "key"}}, + Type: model.Import_Markdown, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, + p, + ) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Notion), common.ErrNotionServerExceedRateLimit)) + }) + t.Run("no objects in integration", func(t *testing.T) { + // given + converter := &Notion{} + s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + w.Write([]byte(`{"object":"list","results":[]}`)) + })) + defer s.Close() + c := client.NewClient() + c.BasePath = s.URL + converter.search = search.New(c) + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := converter.GetSnapshots( + context.Background(), + &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfNotionParams{NotionParams: &pb.RpcObjectImportRequestNotionParams{ApiKey: "key"}}, + Type: model.Import_Markdown, + Mode: pb.RpcObjectImportRequest_IGNORE_ERRORS, + }, + p, + ) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Notion), common.ErrNoObjectInIntegration)) + }) +} + func TestNotion_getUniqueProperties(t *testing.T) { t.Run("Page and Database have the same property - 1 unique item", func(t *testing.T) { // given diff --git a/core/block/import/pb/converter.go b/core/block/import/pb/converter.go index 65c45f21a..d09739129 100644 --- a/core/block/import/pb/converter.go +++ b/core/block/import/pb/converter.go @@ -39,7 +39,6 @@ const ( ) var ErrNotAnyBlockExtension = errors.New("not JSON or PB extension") -var ErrWrongFormat = errors.New("wrong PB or JSON format") type Pb struct { service *collection.Service @@ -190,7 +189,7 @@ func (p *Pb) getProfileFromFiles(importSource source.Source) (*pb.Profile, error return true }) if iterateError != nil { - return nil, fmt.Errorf("%w: %s", common.ErrFileImportSourceFileOpenError, iterateError.Error()) + return nil, iterateError } return profile, err } @@ -249,7 +248,7 @@ func (p *Pb) getSnapshotsFromProvidedFiles( } return true }); iterateErr != nil { - allErrors.Add(fmt.Errorf("%w: %s", common.ErrFileImportSourceFileOpenError, iterateErr.Error())) + allErrors.Add(iterateErr) } return allSnapshots, widgetSnapshot, workspaceSnapshot } diff --git a/core/block/import/pb/converter_test.go b/core/block/import/pb/converter_test.go index da0528e8c..cd87b9eda 100644 --- a/core/block/import/pb/converter_test.go +++ b/core/block/import/pb/converter_test.go @@ -17,6 +17,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/anyproto/anytype-heart/core/block/import/common" + "github.com/anyproto/anytype-heart/core/block/import/common/test" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -29,7 +30,7 @@ func Test_GetSnapshotsSuccess(t *testing.T) { defer os.RemoveAll(path) wr, err := newZipWriter(path) assert.NoError(t, err) - f, err := os.Open("testdata/bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb") + f, err := os.Open(filepath.Join("testdata", "bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb")) reader := bufio.NewReader(f) assert.NoError(t, err) @@ -77,7 +78,7 @@ func Test_GetSnapshotsFailedToGetSnapshot(t *testing.T) { defer os.RemoveAll(path) wr, err := newZipWriter(path) assert.NoError(t, err) - f, err := os.Open("testdata/test.pb") + f, err := os.Open(filepath.Join("testdata", "test.pb")) reader := bufio.NewReader(f) assert.NoError(t, err) @@ -106,7 +107,7 @@ func Test_GetSnapshotsEmptySnapshot(t *testing.T) { defer os.RemoveAll(path) wr, err := newZipWriter(path) assert.NoError(t, err) - f, err := os.Open("testdata/emptysnapshot.pb.json") + f, err := os.Open(filepath.Join("testdata", "emptysnapshot.pb.json")) reader := bufio.NewReader(f) assert.NoError(t, err) @@ -132,7 +133,7 @@ func Test_GetSnapshotsEmptySnapshot(t *testing.T) { func Test_GetSnapshotsFailedToGetSnapshotForTwoFiles(t *testing.T) { p := &Pb{} - paths := []string{"testdata/bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb", "testdata/test.pb"} + paths := []string{filepath.Join("testdata", "bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb"), filepath.Join("testdata", "test.pb")} // ALL_OR_NOTHING mode res, ce := p.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfPbParams{PbParams: &pb.RpcObjectImportRequestPbParams{ @@ -165,7 +166,7 @@ func Test_GetSnapshotsFailedToGetSnapshotForTwoFiles(t *testing.T) { func Test_GetSnapshotsWithoutRootCollection(t *testing.T) { p := &Pb{} - path := "testdata/bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb" + path := filepath.Join("testdata", "bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb") res, ce := p.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ Params: &pb.RpcObjectImportRequestParamsOfPbParams{PbParams: &pb.RpcObjectImportRequestPbParams{ Path: []string{path}, @@ -188,13 +189,13 @@ func Test_GetSnapshotsSkipFileWithoutExtension(t *testing.T) { wr, err := newZipWriter(path) assert.NoError(t, err) - f, err := os.Open("testdata/bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb") + f, err := os.Open(filepath.Join("testdata", "bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb")) assert.NoError(t, err) reader := bufio.NewReader(f) assert.NoError(t, wr.WriteFile("bafyreig5sd7mlmhindapjuvzc4gnetdbszztb755sa7nflojkljmu56mmi.pb", reader)) - f, err = os.Open("testdata/test") + f, err = os.Open(filepath.Join("testdata", "test")) assert.NoError(t, err) reader = bufio.NewReader(f) @@ -220,6 +221,44 @@ func Test_GetSnapshotsSkipFileWithoutExtension(t *testing.T) { assert.Contains(t, res.Snapshots[1].FileName, rootCollectionName) } +func TestPb_GetSnapshots(t *testing.T) { + t.Run("no objects in dir", func(t *testing.T) { + // given + dir := t.TempDir() + p := &Pb{} + + // when + _, ce := p.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfPbParams{PbParams: &pb.RpcObjectImportRequestPbParams{ + Path: []string{dir}, + }}, + }, process.NewProgress(pb.ModelProcess_Import)) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Pb), common.ErrFileImportNoObjectsInDirectory)) + }) + t.Run("no objects in archive", func(t *testing.T) { + // given + dir := t.TempDir() + p := &Pb{} + zipPath := filepath.Join(dir, "empty.zip") + err := test.CreateEmptyZip(t, zipPath) + assert.Nil(t, err) + + // when + _, ce := p.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfPbParams{PbParams: &pb.RpcObjectImportRequestPbParams{ + Path: []string{zipPath}, + }}, + }, process.NewProgress(pb.ModelProcess_Import)) + + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Pb), common.ErrFileImportNoObjectsInZipArchive)) + }) +} + func newZipWriter(path string) (*zipWriter, error) { filename := filepath.Join(path, "Anytype"+strconv.FormatInt(rand.Int63(), 10)+".zip") f, err := os.Create(filename) diff --git a/core/block/import/txt/converter.go b/core/block/import/txt/converter.go index 099d7174c..5f4063cf5 100644 --- a/core/block/import/txt/converter.go +++ b/core/block/import/txt/converter.go @@ -2,7 +2,6 @@ package txt import ( "context" - "fmt" "io" "path/filepath" @@ -137,7 +136,7 @@ func (t *TXT) handleImportPath(p string, pathsCount int, allErrors *common.Conve return true }) if iterateErr != nil { - allErrors.Add(fmt.Errorf("%w: %s", common.ErrFileImportSourceFileOpenError, iterateErr.Error())) + allErrors.Add(iterateErr) } return snapshots, targetObjects } diff --git a/core/block/import/txt/converter_test.go b/core/block/import/txt/converter_test.go index 0f447a7dc..927c315ed 100644 --- a/core/block/import/txt/converter_test.go +++ b/core/block/import/txt/converter_test.go @@ -3,11 +3,13 @@ package txt import ( "context" "errors" + "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/anyproto/anytype-heart/core/block/import/common" + "github.com/anyproto/anytype-heart/core/block/import/common/test" "github.com/anyproto/anytype-heart/core/block/process" "github.com/anyproto/anytype-heart/pb" "github.com/anyproto/anytype-heart/pkg/lib/bundle" @@ -16,40 +18,82 @@ import ( ) func TestTXT_GetSnapshots(t *testing.T) { - h := &TXT{} - p := process.NewProgress(pb.ModelProcess_Import) - sn, err := h.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ - Params: &pb.RpcObjectImportRequestParamsOfTxtParams{ - TxtParams: &pb.RpcObjectImportRequestTxtParams{Path: []string{"testdata/test.txt", "testdata/test"}}, - }, - Type: 4, - Mode: 1, - }, p) + t.Run("success", func(t *testing.T) { + h := &TXT{} + p := process.NewProgress(pb.ModelProcess_Import) + sn, err := h.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfTxtParams{ + TxtParams: &pb.RpcObjectImportRequestTxtParams{Path: []string{filepath.Join("testdata", "test.txt"), filepath.Join("testdata", "test")}}, + }, + Type: 4, + Mode: 1, + }, p) - assert.NotNil(t, err) - assert.True(t, errors.Is(err.GetResultError(model.Import_Txt), common.ErrFileImportNoObjectsInDirectory)) - assert.NotNil(t, sn) - assert.Len(t, sn.Snapshots, 2) - assert.Contains(t, sn.Snapshots[0].FileName, "test.txt") - assert.NotEmpty(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"]) - assert.Equal(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"], pbtypes.String("test")) + assert.NotNil(t, err) + assert.True(t, errors.Is(err.GetResultError(model.Import_Txt), common.ErrFileImportNoObjectsInDirectory)) + assert.NotNil(t, sn) + assert.Len(t, sn.Snapshots, 2) + assert.Contains(t, sn.Snapshots[0].FileName, "test.txt") + assert.NotEmpty(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"]) + assert.Equal(t, sn.Snapshots[0].Snapshot.Data.Details.Fields["name"], pbtypes.String("test")) - assert.Contains(t, sn.Snapshots[1].FileName, rootCollectionName) - assert.NotEmpty(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes) - assert.Equal(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes[0], bundle.TypeKeyCollection.String()) + assert.Contains(t, sn.Snapshots[1].FileName, rootCollectionName) + assert.NotEmpty(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes) + assert.Equal(t, sn.Snapshots[1].Snapshot.Data.ObjectTypes[0], bundle.TypeKeyCollection.String()) - var ( - found bool - text string - ) + var ( + found bool + text string + ) - for _, block := range sn.Snapshots[0].Snapshot.Data.GetBlocks() { - if t, ok := block.Content.(*model.BlockContentOfText); ok { - found = ok - text = t.Text.GetText() + for _, block := range sn.Snapshots[0].Snapshot.Data.GetBlocks() { + if t, ok := block.Content.(*model.BlockContentOfText); ok { + found = ok + text = t.Text.GetText() + } } - } - assert.Equal(t, text, "test") - assert.True(t, found) + assert.Equal(t, text, "test") + assert.True(t, found) + }) + t.Run("no objects in dir", func(t *testing.T) { + // given + dir := t.TempDir() + h := &TXT{} + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, err := h.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfTxtParams{ + TxtParams: &pb.RpcObjectImportRequestTxtParams{Path: []string{dir}}, + }, + Type: 4, + Mode: 1, + }, p) + // then + assert.NotNil(t, err) + assert.True(t, errors.Is(err.GetResultError(model.Import_Pb), common.ErrFileImportNoObjectsInDirectory)) + }) + t.Run("no objects in archive", func(t *testing.T) { + // given + dir := t.TempDir() + zipPath := filepath.Join(dir, "empty.zip") + err := test.CreateEmptyZip(t, zipPath) + assert.Nil(t, err) + + h := &TXT{} + p := process.NewProgress(pb.ModelProcess_Import) + + // when + _, ce := h.GetSnapshots(context.Background(), &pb.RpcObjectImportRequest{ + Params: &pb.RpcObjectImportRequestParamsOfTxtParams{ + TxtParams: &pb.RpcObjectImportRequestTxtParams{Path: []string{zipPath}}, + }, + Type: 4, + Mode: 1, + }, p) + // then + assert.NotNil(t, ce) + assert.True(t, errors.Is(ce.GetResultError(model.Import_Pb), common.ErrFileImportNoObjectsInZipArchive)) + }) } diff --git a/docs/ImportErrorCodes.md b/docs/ImportErrorCodes.md index e7b2f91d8..6d0cc2821 100644 --- a/docs/ImportErrorCodes.md +++ b/docs/ImportErrorCodes.md @@ -24,4 +24,3 @@ ### CSV import specific codes 1. CSV_LIMIT_OF_ROWS_OR_RELATIONS_EXCEEDED - user tried to import CSV file, where amount of rows or columns exceeded 1000 -2. CSV_WRONG_CSV_STRUCTURE - there was error with parsing CSV file \ No newline at end of file diff --git a/docs/proto.md b/docs/proto.md index ba033ec22..6450110d9 100644 --- a/docs/proto.md +++ b/docs/proto.md @@ -29277,7 +29277,6 @@ stored | | HTML_WRONG_HTML_STRUCTURE | 10 | | | PB_NOT_ANYBLOCK_FORMAT | 11 | | | CSV_LIMIT_OF_ROWS_OR_RELATIONS_EXCEEDED | 7 | | -| CSV_WRONG_CSV_STRUCTURE | 16 | | | INSUFFICIENT_PERMISSIONS | 9 | | diff --git a/pkg/lib/pb/model/models.pb.go b/pkg/lib/pb/model/models.pb.go index 0dc49ecb2..520422467 100644 --- a/pkg/lib/pb/model/models.pb.go +++ b/pkg/lib/pb/model/models.pb.go @@ -2024,7 +2024,6 @@ const ( Import_HTML_WRONG_HTML_STRUCTURE ImportErrorCode = 10 Import_PB_NOT_ANYBLOCK_FORMAT ImportErrorCode = 11 Import_CSV_LIMIT_OF_ROWS_OR_RELATIONS_EXCEEDED ImportErrorCode = 7 - Import_CSV_WRONG_CSV_STRUCTURE ImportErrorCode = 16 Import_INSUFFICIENT_PERMISSIONS ImportErrorCode = 9 ) @@ -2043,7 +2042,6 @@ var ImportErrorCode_name = map[int32]string{ 10: "HTML_WRONG_HTML_STRUCTURE", 11: "PB_NOT_ANYBLOCK_FORMAT", 7: "CSV_LIMIT_OF_ROWS_OR_RELATIONS_EXCEEDED", - 16: "CSV_WRONG_CSV_STRUCTURE", 9: "INSUFFICIENT_PERMISSIONS", } @@ -2062,7 +2060,6 @@ var ImportErrorCode_value = map[string]int32{ "HTML_WRONG_HTML_STRUCTURE": 10, "PB_NOT_ANYBLOCK_FORMAT": 11, "CSV_LIMIT_OF_ROWS_OR_RELATIONS_EXCEEDED": 7, - "CSV_WRONG_CSV_STRUCTURE": 16, "INSUFFICIENT_PERMISSIONS": 9, } @@ -9418,556 +9415,556 @@ func init() { } var fileDescriptor_98a910b73321e591 = []byte{ - // 8784 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5d, 0x70, 0x23, 0xd9, - 0x75, 0x18, 0x4c, 0xfc, 0x03, 0x07, 0x04, 0x79, 0x79, 0xe7, 0x0f, 0xc2, 0x8e, 0xc6, 0x23, 0x68, - 0xb5, 0x3b, 0x1a, 0xad, 0x38, 0xbb, 0xb3, 0xbb, 0xda, 0xd5, 0x5a, 0xbb, 0x12, 0x08, 0x82, 0x43, - 0xec, 0x90, 0x04, 0xd5, 0xc0, 0xcc, 0x68, 0xb7, 0xec, 0x8f, 0x5f, 0x13, 0x7d, 0x09, 0xb4, 0xd8, - 0xe8, 0x86, 0xba, 0x2f, 0x38, 0xa4, 0x2a, 0x49, 0x39, 0x89, 0x63, 0xc7, 0x6f, 0x8a, 0x2b, 0xce, - 0xcf, 0x43, 0xca, 0xf2, 0x5b, 0x2a, 0x56, 0x25, 0x95, 0x07, 0x25, 0x4e, 0x2a, 0xae, 0x4a, 0xfc, - 0x12, 0x57, 0xe5, 0x45, 0x49, 0x1e, 0x9c, 0x97, 0x54, 0x52, 0xda, 0xc7, 0x94, 0xe3, 0x4a, 0x9e, - 0x5c, 0xa9, 0x3c, 0xa4, 0xce, 0xb9, 0xb7, 0x7f, 0xf0, 0x43, 0x0e, 0x66, 0x6d, 0xa7, 0xf2, 0xc4, - 0xbe, 0xa7, 0xcf, 0x39, 0x7d, 0x7f, 0xce, 0x3d, 0xf7, 0xfc, 0x5d, 0x10, 0x5e, 0x1d, 0x9f, 0x0e, - 0x1e, 0x38, 0xf6, 0xf1, 0x83, 0xf1, 0xf1, 0x83, 0x91, 0x67, 0x09, 0xe7, 0xc1, 0xd8, 0xf7, 0xa4, - 0x17, 0xa8, 0x46, 0xb0, 0x49, 0x2d, 0x5e, 0x31, 0xdd, 0x0b, 0x79, 0x31, 0x16, 0x9b, 0x04, 0xad, - 0xdd, 0x1e, 0x78, 0xde, 0xc0, 0x11, 0x0a, 0xf5, 0x78, 0x72, 0xf2, 0x20, 0x90, 0xfe, 0xa4, 0x2f, - 0x15, 0x72, 0xfd, 0x67, 0x59, 0xb8, 0xd9, 0x1d, 0x99, 0xbe, 0xdc, 0x72, 0xbc, 0xfe, 0x69, 0xd7, - 0x35, 0xc7, 0xc1, 0xd0, 0x93, 0x5b, 0x66, 0x20, 0xf8, 0x1b, 0x90, 0x3f, 0x46, 0x60, 0x50, 0x4d, - 0xdd, 0xcd, 0xdc, 0x2b, 0x3f, 0xbc, 0xbe, 0x39, 0xc5, 0x78, 0x93, 0x28, 0x0c, 0x8d, 0xc3, 0xdf, - 0x82, 0x82, 0x25, 0xa4, 0x69, 0x3b, 0x41, 0x35, 0x7d, 0x37, 0x75, 0xaf, 0xfc, 0xf0, 0xd6, 0xa6, - 0xfa, 0xf0, 0x66, 0xf8, 0xe1, 0xcd, 0x2e, 0x7d, 0xd8, 0x08, 0xf1, 0xf8, 0x7b, 0x50, 0x3c, 0xb1, - 0x1d, 0xf1, 0x58, 0x5c, 0x04, 0xd5, 0xcc, 0x95, 0x34, 0x5b, 0xe9, 0x6a, 0xca, 0x88, 0x90, 0x79, - 0x13, 0xd6, 0xc4, 0xb9, 0xf4, 0x4d, 0x43, 0x38, 0xa6, 0xb4, 0x3d, 0x37, 0xa8, 0x66, 0xa9, 0x87, - 0xb7, 0x66, 0x7a, 0x18, 0xbe, 0x27, 0xf2, 0x19, 0x12, 0x7e, 0x17, 0xca, 0xde, 0xf1, 0xf7, 0x45, - 0x5f, 0xf6, 0x2e, 0xc6, 0x22, 0xa8, 0xe6, 0xee, 0x66, 0xee, 0x95, 0x8c, 0x24, 0x88, 0x7f, 0x13, - 0xca, 0x7d, 0xcf, 0x71, 0x44, 0x5f, 0x7d, 0x23, 0x7f, 0xf5, 0xb0, 0x92, 0xb8, 0xfc, 0x1d, 0xb8, - 0xe1, 0x8b, 0x91, 0x77, 0x26, 0xac, 0x66, 0x04, 0xa5, 0x71, 0x16, 0xe9, 0x33, 0x8b, 0x5f, 0xf2, - 0x06, 0x54, 0x7c, 0xdd, 0xbf, 0x3d, 0xdb, 0x3d, 0x0d, 0xaa, 0x05, 0x1a, 0xd6, 0x2b, 0x97, 0x0c, - 0x0b, 0x71, 0x8c, 0x69, 0x0a, 0xce, 0x20, 0x73, 0x2a, 0x2e, 0xaa, 0xa5, 0xbb, 0xa9, 0x7b, 0x25, - 0x03, 0x1f, 0xf9, 0x07, 0x50, 0xf5, 0x7c, 0x7b, 0x60, 0xbb, 0xa6, 0xd3, 0xf4, 0x85, 0x29, 0x85, - 0xd5, 0xb3, 0x47, 0x22, 0x90, 0xe6, 0x68, 0x5c, 0x85, 0xbb, 0xa9, 0x7b, 0x19, 0xe3, 0xd2, 0xf7, - 0xfc, 0x6d, 0xb5, 0x42, 0x6d, 0xf7, 0xc4, 0xab, 0x96, 0xf5, 0xf0, 0xa7, 0xfb, 0xb2, 0xa3, 0x5f, - 0x1b, 0x11, 0x62, 0xfd, 0x4f, 0xd3, 0x90, 0xef, 0x0a, 0xd3, 0xef, 0x0f, 0x6b, 0xbf, 0x9e, 0x82, - 0xbc, 0x21, 0x82, 0x89, 0x23, 0x79, 0x0d, 0x8a, 0x6a, 0x6e, 0xdb, 0x56, 0x35, 0x45, 0xbd, 0x8b, - 0xda, 0x9f, 0x47, 0x76, 0x36, 0x21, 0x3b, 0x12, 0xd2, 0xac, 0x66, 0x68, 0x86, 0x6a, 0x33, 0xbd, - 0x52, 0x9f, 0xdf, 0xdc, 0x17, 0xd2, 0x34, 0x08, 0xaf, 0xf6, 0x59, 0x0a, 0xb2, 0xd8, 0xe4, 0xb7, - 0xa1, 0x34, 0xb4, 0x07, 0x43, 0xc7, 0x1e, 0x0c, 0xa5, 0xee, 0x48, 0x0c, 0xe0, 0x1f, 0xc1, 0x7a, - 0xd4, 0x30, 0x4c, 0x77, 0x20, 0xb0, 0x47, 0x8b, 0x84, 0x9f, 0x5e, 0x1a, 0xb3, 0xc8, 0xbc, 0x0a, - 0x05, 0xda, 0x0f, 0x6d, 0x8b, 0x24, 0xba, 0x64, 0x84, 0x4d, 0x14, 0xb7, 0x70, 0xa5, 0x1e, 0x8b, - 0x8b, 0x6a, 0x96, 0xde, 0x26, 0x41, 0xbc, 0x01, 0xeb, 0x61, 0x73, 0x5b, 0xcf, 0x46, 0xee, 0xea, - 0xd9, 0x98, 0xc5, 0xaf, 0xff, 0x51, 0x1b, 0x72, 0xb4, 0x2d, 0xf9, 0x1a, 0xa4, 0xed, 0x70, 0xa2, - 0xd3, 0xb6, 0xc5, 0x1f, 0x40, 0xfe, 0xc4, 0x16, 0x8e, 0xf5, 0xc2, 0x19, 0xd6, 0x68, 0xbc, 0x05, - 0xab, 0xbe, 0x08, 0xa4, 0x6f, 0x6b, 0xe9, 0x57, 0x1b, 0xf4, 0x4b, 0x8b, 0x74, 0xc0, 0xa6, 0x91, - 0x40, 0x34, 0xa6, 0xc8, 0x70, 0xd8, 0xfd, 0xa1, 0xed, 0x58, 0xbe, 0x70, 0xdb, 0x96, 0xda, 0xa7, - 0x25, 0x23, 0x09, 0xe2, 0xf7, 0x60, 0xfd, 0xd8, 0xec, 0x9f, 0x0e, 0x7c, 0x6f, 0xe2, 0xe2, 0x86, - 0xf0, 0x7c, 0x1a, 0x76, 0xc9, 0x98, 0x05, 0xf3, 0x37, 0x21, 0x67, 0x3a, 0xf6, 0xc0, 0xa5, 0x9d, - 0xb8, 0x36, 0xb7, 0xe8, 0xaa, 0x2f, 0x0d, 0xc4, 0x30, 0x14, 0x22, 0xdf, 0x85, 0xca, 0x99, 0xf0, - 0xa5, 0xdd, 0x37, 0x1d, 0x82, 0x57, 0x0b, 0x44, 0x59, 0x5f, 0x48, 0xf9, 0x34, 0x89, 0x69, 0x4c, - 0x13, 0xf2, 0x36, 0x40, 0x80, 0x6a, 0x92, 0x96, 0x53, 0xef, 0x85, 0xd7, 0x17, 0xb2, 0x69, 0x7a, - 0xae, 0x14, 0xae, 0xdc, 0xec, 0x46, 0xe8, 0xbb, 0x2b, 0x46, 0x82, 0x98, 0xbf, 0x07, 0x59, 0x29, - 0xce, 0x65, 0x75, 0xed, 0x8a, 0x19, 0x0d, 0x99, 0xf4, 0xc4, 0xb9, 0xdc, 0x5d, 0x31, 0x88, 0x00, - 0x09, 0x71, 0x93, 0x55, 0xd7, 0x97, 0x20, 0xc4, 0x7d, 0x89, 0x84, 0x48, 0xc0, 0x3f, 0x84, 0xbc, - 0x63, 0x5e, 0x78, 0x13, 0x59, 0x65, 0x44, 0xfa, 0xe5, 0x2b, 0x49, 0xf7, 0x08, 0x75, 0x77, 0xc5, - 0xd0, 0x44, 0xfc, 0x1d, 0xc8, 0x58, 0xf6, 0x59, 0x75, 0x83, 0x68, 0xef, 0x5e, 0x49, 0xbb, 0x6d, - 0x9f, 0xed, 0xae, 0x18, 0x88, 0xce, 0x9b, 0x50, 0x3c, 0xf6, 0xbc, 0xd3, 0x91, 0xe9, 0x9f, 0x56, - 0x39, 0x91, 0x7e, 0xe5, 0x4a, 0xd2, 0x2d, 0x8d, 0xbc, 0xbb, 0x62, 0x44, 0x84, 0x38, 0x64, 0xbb, - 0xef, 0xb9, 0xd5, 0x6b, 0x4b, 0x0c, 0xb9, 0xdd, 0xf7, 0x5c, 0x1c, 0x32, 0x12, 0x20, 0xa1, 0x63, - 0xbb, 0xa7, 0xd5, 0xeb, 0x4b, 0x10, 0xa2, 0xe6, 0x44, 0x42, 0x24, 0xc0, 0x6e, 0x5b, 0xa6, 0x34, - 0xcf, 0x6c, 0xf1, 0xbc, 0x7a, 0x63, 0x89, 0x6e, 0x6f, 0x6b, 0x64, 0xec, 0x76, 0x48, 0x88, 0x4c, - 0xc2, 0xad, 0x59, 0xbd, 0xb9, 0x04, 0x93, 0x50, 0xa3, 0x23, 0x93, 0x90, 0x90, 0xff, 0x7f, 0xb0, - 0x71, 0x22, 0x4c, 0x39, 0xf1, 0x85, 0x15, 0x1f, 0x74, 0xb7, 0x88, 0xdb, 0xe6, 0xd5, 0x6b, 0x3f, - 0x4b, 0xb5, 0xbb, 0x62, 0xcc, 0xb3, 0xe2, 0x1f, 0x40, 0xce, 0x31, 0xa5, 0x38, 0xaf, 0x56, 0x89, - 0x67, 0xfd, 0x05, 0x42, 0x21, 0xc5, 0xf9, 0xee, 0x8a, 0xa1, 0x48, 0xf8, 0xf7, 0x60, 0x5d, 0x9a, - 0xc7, 0x8e, 0xe8, 0x9c, 0x68, 0x84, 0xa0, 0xfa, 0x05, 0xe2, 0xf2, 0xc6, 0xd5, 0xe2, 0x3c, 0x4d, - 0xb3, 0xbb, 0x62, 0xcc, 0xb2, 0xc1, 0x5e, 0x11, 0xa8, 0x5a, 0x5b, 0xa2, 0x57, 0xc4, 0x0f, 0x7b, - 0x45, 0x24, 0x7c, 0x0f, 0xca, 0xf4, 0xd0, 0xf4, 0x9c, 0xc9, 0xc8, 0xad, 0xbe, 0x42, 0x1c, 0xee, - 0xbd, 0x98, 0x83, 0xc2, 0xdf, 0x5d, 0x31, 0x92, 0xe4, 0xb8, 0x88, 0xd4, 0x34, 0xbc, 0xe7, 0xd5, - 0xdb, 0x4b, 0x2c, 0x62, 0x4f, 0x23, 0xe3, 0x22, 0x86, 0x84, 0xb8, 0xf5, 0x9e, 0xdb, 0xd6, 0x40, - 0xc8, 0xea, 0x17, 0x97, 0xd8, 0x7a, 0xcf, 0x08, 0x15, 0xb7, 0x9e, 0x22, 0x42, 0x31, 0xee, 0x0f, - 0x4d, 0x59, 0xbd, 0xb3, 0x84, 0x18, 0x37, 0x87, 0x26, 0xe9, 0x0a, 0x24, 0xa8, 0xfd, 0x10, 0x56, - 0x93, 0x5a, 0x99, 0x73, 0xc8, 0xfa, 0xc2, 0x54, 0x27, 0x42, 0xd1, 0xa0, 0x67, 0x84, 0x09, 0xcb, - 0x96, 0x74, 0x22, 0x14, 0x0d, 0x7a, 0xe6, 0x37, 0x21, 0xaf, 0x6c, 0x13, 0x52, 0xf8, 0x45, 0x43, - 0xb7, 0x10, 0xd7, 0xf2, 0xcd, 0x01, 0x9d, 0x5b, 0x45, 0x83, 0x9e, 0x11, 0xd7, 0xf2, 0xbd, 0x71, - 0xc7, 0x25, 0x85, 0x5d, 0x34, 0x74, 0xab, 0xf6, 0x2f, 0x3f, 0x80, 0x82, 0xee, 0x54, 0xed, 0x1f, - 0xa4, 0x20, 0xaf, 0x14, 0x0a, 0xff, 0x36, 0xe4, 0x02, 0x79, 0xe1, 0x08, 0xea, 0xc3, 0xda, 0xc3, - 0xaf, 0x2e, 0xa1, 0x84, 0x36, 0xbb, 0x48, 0x60, 0x28, 0xba, 0xba, 0x01, 0x39, 0x6a, 0xf3, 0x02, - 0x64, 0x0c, 0xef, 0x39, 0x5b, 0xe1, 0x00, 0x79, 0xb5, 0x58, 0x2c, 0x85, 0xc0, 0x6d, 0xfb, 0x8c, - 0xa5, 0x11, 0xb8, 0x2b, 0x4c, 0x4b, 0xf8, 0x2c, 0xc3, 0x2b, 0x50, 0x0a, 0x97, 0x25, 0x60, 0x59, - 0xce, 0x60, 0x35, 0xb1, 0xe0, 0x01, 0xcb, 0xd5, 0xfe, 0x67, 0x16, 0xb2, 0xb8, 0xff, 0xf9, 0xab, - 0x50, 0x91, 0xa6, 0x3f, 0x10, 0xca, 0x10, 0x8e, 0x8c, 0x94, 0x69, 0x20, 0xff, 0x30, 0x1c, 0x43, - 0x9a, 0xc6, 0xf0, 0xfa, 0x0b, 0xf5, 0xca, 0xd4, 0x08, 0x12, 0xa7, 0x70, 0x66, 0xb9, 0x53, 0x78, - 0x07, 0x8a, 0xa8, 0xce, 0xba, 0xf6, 0x0f, 0x05, 0x4d, 0xfd, 0xda, 0xc3, 0xfb, 0x2f, 0xfe, 0x64, - 0x5b, 0x53, 0x18, 0x11, 0x2d, 0x6f, 0x43, 0xa9, 0x6f, 0xfa, 0x16, 0x75, 0x86, 0x56, 0x6b, 0xed, - 0xe1, 0xd7, 0x5e, 0xcc, 0xa8, 0x19, 0x92, 0x18, 0x31, 0x35, 0xef, 0x40, 0xd9, 0x12, 0x41, 0xdf, - 0xb7, 0xc7, 0xa4, 0xde, 0xd4, 0x59, 0xfc, 0xf5, 0x17, 0x33, 0xdb, 0x8e, 0x89, 0x8c, 0x24, 0x07, - 0xb4, 0xc8, 0xfc, 0x48, 0xbf, 0x15, 0xc8, 0x40, 0x88, 0x01, 0xf5, 0xf7, 0xa0, 0x18, 0x8e, 0x87, - 0xaf, 0x42, 0x11, 0xff, 0x1e, 0x78, 0xae, 0x60, 0x2b, 0xb8, 0xb6, 0xd8, 0xea, 0x8e, 0x4c, 0xc7, - 0x61, 0x29, 0xbe, 0x06, 0x80, 0xcd, 0x7d, 0x61, 0xd9, 0x93, 0x11, 0x4b, 0xd7, 0x7f, 0x31, 0x94, - 0x96, 0x22, 0x64, 0x0f, 0xcd, 0x01, 0x52, 0xac, 0x42, 0x31, 0x54, 0xd7, 0x2c, 0x85, 0xf4, 0xdb, - 0x66, 0x30, 0x3c, 0xf6, 0x4c, 0xdf, 0x62, 0x69, 0x5e, 0x86, 0x42, 0xc3, 0xef, 0x0f, 0xed, 0x33, - 0xc1, 0x32, 0xf5, 0x07, 0x50, 0x4e, 0xf4, 0x17, 0x59, 0xe8, 0x8f, 0x96, 0x20, 0xd7, 0xb0, 0x2c, - 0x61, 0xb1, 0x14, 0x12, 0xe8, 0x01, 0xb2, 0x74, 0xfd, 0x6b, 0x50, 0x8a, 0x66, 0x0b, 0xd1, 0xf1, - 0xe0, 0x66, 0x2b, 0xf8, 0x84, 0x60, 0x96, 0x42, 0xa9, 0x6c, 0xbb, 0x8e, 0xed, 0x0a, 0x96, 0xae, - 0xfd, 0xff, 0x24, 0xaa, 0xfc, 0x5b, 0xd3, 0x1b, 0xe2, 0xb5, 0x17, 0x9d, 0xac, 0xd3, 0xbb, 0xe1, - 0x95, 0xc4, 0xf8, 0xf6, 0x6c, 0xea, 0x5c, 0x11, 0xb2, 0xdb, 0x9e, 0x0c, 0x58, 0xaa, 0xf6, 0xdf, - 0xd2, 0x50, 0x0c, 0x0f, 0x54, 0xf4, 0x09, 0x26, 0xbe, 0xa3, 0x05, 0x1a, 0x1f, 0xf9, 0x75, 0xc8, - 0x49, 0x5b, 0x6a, 0x31, 0x2e, 0x19, 0xaa, 0x81, 0xb6, 0x5a, 0x72, 0x65, 0x95, 0x01, 0x3b, 0xbb, - 0x54, 0xf6, 0xc8, 0x1c, 0x88, 0x5d, 0x33, 0x18, 0x6a, 0x13, 0x36, 0x06, 0x20, 0xfd, 0x89, 0x79, - 0x86, 0x32, 0x47, 0xef, 0x95, 0x15, 0x97, 0x04, 0xf1, 0xb7, 0x21, 0x8b, 0x03, 0xd4, 0x42, 0xf3, - 0x0b, 0x33, 0x03, 0x46, 0x31, 0x39, 0xf4, 0x05, 0x2e, 0xcf, 0x26, 0x7a, 0x60, 0x06, 0x21, 0xf3, - 0xd7, 0x60, 0x4d, 0x6d, 0xc2, 0x4e, 0xe8, 0x3f, 0x14, 0x88, 0xf3, 0x0c, 0x94, 0x37, 0x70, 0x3a, - 0x4d, 0x29, 0xaa, 0xc5, 0x25, 0xe4, 0x3b, 0x9c, 0x9c, 0xcd, 0x2e, 0x92, 0x18, 0x8a, 0xb2, 0xfe, - 0x2e, 0xce, 0xa9, 0x29, 0x05, 0x2e, 0x73, 0x6b, 0x34, 0x96, 0x17, 0x4a, 0x68, 0x76, 0x84, 0xec, - 0x0f, 0x6d, 0x77, 0xc0, 0x52, 0x6a, 0x8a, 0x71, 0x11, 0x09, 0xc5, 0xf7, 0x3d, 0x9f, 0x65, 0x6a, - 0x35, 0xc8, 0xa2, 0x8c, 0xa2, 0x92, 0x74, 0xcd, 0x91, 0xd0, 0x33, 0x4d, 0xcf, 0xb5, 0x6b, 0xb0, - 0x31, 0x77, 0x1e, 0xd7, 0xfe, 0x45, 0x5e, 0x49, 0x08, 0x52, 0x90, 0x2d, 0xa8, 0x29, 0xc8, 0xcc, - 0x7b, 0x29, 0x1d, 0x83, 0x5c, 0xa6, 0x75, 0xcc, 0x87, 0x90, 0xc3, 0x81, 0x85, 0x2a, 0x66, 0x09, - 0xf2, 0x7d, 0x44, 0x37, 0x14, 0x15, 0x7a, 0x30, 0xfd, 0xa1, 0xe8, 0x9f, 0x0a, 0x4b, 0xeb, 0xfa, - 0xb0, 0x89, 0x42, 0xd3, 0x4f, 0x98, 0xe7, 0xaa, 0x41, 0x22, 0xd1, 0xf7, 0xdc, 0xd6, 0xc8, 0xfb, - 0xbe, 0x4d, 0xeb, 0x8a, 0x22, 0x11, 0x02, 0xc2, 0xb7, 0x6d, 0x94, 0x11, 0xbd, 0x6c, 0x31, 0xa0, - 0xd6, 0x82, 0x1c, 0x7d, 0x1b, 0x77, 0x82, 0xea, 0xb3, 0x8a, 0x34, 0xbc, 0xb6, 0x5c, 0x9f, 0x75, - 0x97, 0x6b, 0x3f, 0x49, 0x43, 0x16, 0xdb, 0xfc, 0x3e, 0xe4, 0x7c, 0xf4, 0xc3, 0x68, 0x3a, 0x2f, - 0xf3, 0xd9, 0x14, 0x0a, 0xff, 0xb6, 0x16, 0xc5, 0xf4, 0x12, 0xc2, 0x12, 0x7d, 0x31, 0x29, 0x96, - 0xd7, 0x21, 0x37, 0x36, 0x7d, 0x73, 0xa4, 0xf7, 0x89, 0x6a, 0xd4, 0x7f, 0x9c, 0x82, 0x2c, 0x22, - 0xf1, 0x0d, 0xa8, 0x74, 0xa5, 0x6f, 0x9f, 0x0a, 0x39, 0xf4, 0xbd, 0xc9, 0x60, 0xa8, 0x24, 0xe9, - 0xb1, 0xb8, 0x50, 0xfa, 0x46, 0x29, 0x04, 0x69, 0x3a, 0x76, 0x9f, 0xa5, 0x51, 0xaa, 0xb6, 0x3c, - 0xc7, 0x62, 0x19, 0xbe, 0x0e, 0xe5, 0x27, 0xae, 0x25, 0xfc, 0xa0, 0xef, 0xf9, 0xc2, 0x62, 0x59, - 0xbd, 0xbb, 0x4f, 0x59, 0x8e, 0xce, 0x32, 0x71, 0x2e, 0xc9, 0x17, 0x62, 0x79, 0x7e, 0x0d, 0xd6, - 0xb7, 0xa6, 0x1d, 0x24, 0x56, 0x40, 0x9d, 0xb4, 0x2f, 0x5c, 0x14, 0x32, 0x56, 0x54, 0x42, 0xec, - 0x7d, 0xdf, 0x66, 0x25, 0xfc, 0x98, 0xda, 0x27, 0x0c, 0xea, 0xff, 0x2a, 0x15, 0x6a, 0x8e, 0x0a, - 0x94, 0x0e, 0x4d, 0xdf, 0x1c, 0xf8, 0xe6, 0x18, 0xfb, 0x57, 0x86, 0x82, 0x3a, 0x38, 0xdf, 0x52, - 0xda, 0x4d, 0x35, 0x1e, 0x2a, 0xdd, 0xa8, 0x1a, 0x6f, 0xb3, 0x4c, 0xdc, 0x78, 0x87, 0x65, 0xf1, - 0x1b, 0xdf, 0x9d, 0x78, 0x52, 0xb0, 0x1c, 0xe9, 0x3a, 0xcf, 0x12, 0x2c, 0x8f, 0xc0, 0x1e, 0x6a, - 0x14, 0x56, 0xc0, 0x31, 0x37, 0x51, 0x7e, 0x8e, 0xbd, 0x73, 0x56, 0xc4, 0x6e, 0xe0, 0x34, 0x0a, - 0x8b, 0x95, 0xf0, 0xcd, 0xc1, 0x64, 0x74, 0x2c, 0x70, 0x98, 0x80, 0x6f, 0x7a, 0xde, 0x60, 0xe0, - 0x08, 0x56, 0xc6, 0x39, 0x48, 0x28, 0x5f, 0xb6, 0x4a, 0x9a, 0xd6, 0x74, 0x1c, 0x6f, 0x22, 0x59, - 0xa5, 0xf6, 0xa7, 0x19, 0xc8, 0xa2, 0x77, 0x83, 0x7b, 0x67, 0x88, 0x7a, 0x46, 0xef, 0x1d, 0x7c, - 0x8e, 0x76, 0x60, 0x3a, 0xde, 0x81, 0xfc, 0x03, 0xbd, 0xd2, 0x99, 0x25, 0xb4, 0x2c, 0x32, 0x4e, - 0x2e, 0x32, 0x87, 0xec, 0xc8, 0x1e, 0x09, 0xad, 0xeb, 0xe8, 0x19, 0x61, 0x01, 0x9e, 0xc7, 0x39, - 0x0a, 0x9e, 0xd0, 0x33, 0xee, 0x1a, 0x13, 0x8f, 0x85, 0x86, 0xa4, 0x3d, 0x90, 0x31, 0xc2, 0xe6, - 0x02, 0xed, 0x55, 0x5a, 0xa8, 0xbd, 0x3e, 0x0c, 0xb5, 0x57, 0x61, 0x89, 0x5d, 0x4f, 0xdd, 0x4c, - 0x6a, 0xae, 0x58, 0x69, 0x14, 0x97, 0x27, 0x4f, 0x1c, 0x26, 0xdb, 0x5a, 0x6a, 0xe3, 0x83, 0xae, - 0xa8, 0x66, 0x99, 0xa5, 0x70, 0x35, 0x69, 0xbb, 0x2a, 0x9d, 0xf7, 0xd4, 0xb6, 0x84, 0xc7, 0x32, - 0x74, 0x10, 0x4e, 0x2c, 0xdb, 0x63, 0x59, 0xb4, 0xbc, 0x0e, 0xb7, 0x77, 0x58, 0xae, 0xfe, 0x5a, - 0xe2, 0x48, 0x6a, 0x4c, 0xa4, 0xa7, 0xd8, 0x90, 0xf8, 0xa6, 0x94, 0x34, 0x1e, 0x0b, 0x8b, 0xa5, - 0xeb, 0xdf, 0x58, 0xa0, 0x66, 0x2b, 0x50, 0x7a, 0x32, 0x76, 0x3c, 0xd3, 0xba, 0x42, 0xcf, 0xae, - 0x02, 0xc4, 0x5e, 0x75, 0xed, 0x8f, 0x7f, 0x21, 0x3e, 0xce, 0xd1, 0x16, 0x0d, 0xbc, 0x89, 0xdf, - 0x17, 0xa4, 0x42, 0x4a, 0x86, 0x6e, 0xf1, 0xef, 0x40, 0x0e, 0xdf, 0x87, 0x61, 0x9c, 0xfb, 0x4b, - 0xf9, 0x72, 0x9b, 0x4f, 0x6d, 0xf1, 0xdc, 0x50, 0x84, 0xfc, 0x0e, 0x80, 0xd9, 0x97, 0xf6, 0x99, - 0x40, 0xa0, 0xde, 0xec, 0x09, 0x08, 0x7f, 0x37, 0x69, 0xbe, 0x5c, 0x1d, 0x87, 0x4c, 0xd8, 0x35, - 0xdc, 0x80, 0x32, 0x6e, 0xdd, 0x71, 0xc7, 0xc7, 0xdd, 0x5e, 0x5d, 0x25, 0xc2, 0x37, 0x97, 0xeb, - 0xde, 0xa3, 0x88, 0xd0, 0x48, 0x32, 0xe1, 0x4f, 0x60, 0x55, 0xc5, 0xd4, 0x34, 0xd3, 0x0a, 0x31, - 0x7d, 0x6b, 0x39, 0xa6, 0x9d, 0x98, 0xd2, 0x98, 0x62, 0x33, 0x1f, 0x96, 0xcc, 0xbd, 0x74, 0x58, - 0xf2, 0x35, 0x58, 0xeb, 0x4d, 0xef, 0x02, 0x75, 0x54, 0xcc, 0x40, 0x79, 0x1d, 0x56, 0xed, 0x20, - 0x8e, 0x8a, 0x52, 0x8c, 0xa4, 0x68, 0x4c, 0xc1, 0x6a, 0xff, 0x3e, 0x0f, 0x59, 0x9a, 0xf9, 0xd9, - 0x18, 0x57, 0x73, 0x4a, 0xa5, 0x3f, 0x58, 0x7e, 0xa9, 0x67, 0x76, 0x3c, 0x69, 0x90, 0x4c, 0x42, - 0x83, 0x7c, 0x07, 0x72, 0x81, 0xe7, 0xcb, 0x70, 0x79, 0x97, 0x14, 0xa2, 0xae, 0xe7, 0x4b, 0x43, - 0x11, 0xf2, 0x1d, 0x28, 0x9c, 0xd8, 0x8e, 0xc4, 0x45, 0x51, 0x93, 0xf7, 0xc6, 0x72, 0x3c, 0x76, - 0x88, 0xc8, 0x08, 0x89, 0xf9, 0x5e, 0x52, 0xd8, 0xf2, 0xc4, 0x69, 0x73, 0x39, 0x4e, 0x8b, 0x64, - 0xf0, 0x3e, 0xb0, 0xbe, 0x77, 0x26, 0x7c, 0x23, 0x11, 0x98, 0x54, 0x87, 0xf4, 0x1c, 0x9c, 0xd7, - 0xa0, 0x38, 0xb4, 0x2d, 0x81, 0x76, 0x0e, 0xe9, 0x98, 0xa2, 0x11, 0xb5, 0xf9, 0x63, 0x28, 0x92, - 0x7f, 0x80, 0x5a, 0xb1, 0xf4, 0xd2, 0x93, 0xaf, 0x5c, 0x95, 0x90, 0x01, 0x7e, 0x88, 0x3e, 0xbe, - 0x63, 0x4b, 0x8a, 0x4f, 0x17, 0x8d, 0xa8, 0x8d, 0x1d, 0x26, 0x79, 0x4f, 0x76, 0xb8, 0xac, 0x3a, - 0x3c, 0x0b, 0xe7, 0xef, 0xc0, 0x0d, 0x82, 0xcd, 0x1c, 0x92, 0xb8, 0xd5, 0x90, 0xe9, 0xe2, 0x97, - 0x68, 0xb0, 0x8c, 0xcd, 0x81, 0xd8, 0xb3, 0x47, 0xb6, 0xac, 0x56, 0xee, 0xa6, 0xee, 0xe5, 0x8c, - 0x18, 0xc0, 0xdf, 0x80, 0x0d, 0x4b, 0x9c, 0x98, 0x13, 0x47, 0xf6, 0xc4, 0x68, 0xec, 0x98, 0x52, - 0xb4, 0x2d, 0x92, 0xd1, 0x92, 0x31, 0xff, 0x82, 0xbf, 0x09, 0xd7, 0x34, 0xb0, 0x13, 0x65, 0x15, - 0xda, 0x16, 0x85, 0xef, 0x4a, 0xc6, 0xa2, 0x57, 0xf5, 0x7d, 0xad, 0x86, 0xf1, 0x00, 0x45, 0x3f, - 0x35, 0x54, 0xa0, 0x81, 0x54, 0x27, 0xf2, 0x23, 0xd3, 0x71, 0x84, 0x7f, 0xa1, 0x9c, 0xdc, 0xc7, - 0xa6, 0x7b, 0x6c, 0xba, 0x2c, 0x43, 0x67, 0xac, 0xe9, 0x08, 0xd7, 0x32, 0x7d, 0x75, 0x22, 0x3f, - 0xa2, 0x03, 0x3d, 0x57, 0xbf, 0x07, 0x59, 0x9a, 0xd2, 0x12, 0xe4, 0x94, 0x97, 0x44, 0x1e, 0xb3, - 0xf6, 0x90, 0x48, 0x23, 0xef, 0xe1, 0xf6, 0x63, 0xe9, 0xda, 0xef, 0x65, 0xa0, 0x18, 0x4e, 0x5e, - 0x98, 0x43, 0x48, 0xc5, 0x39, 0x04, 0x34, 0xe3, 0x82, 0xa7, 0x76, 0x60, 0x1f, 0x6b, 0xb3, 0xb4, - 0x68, 0xc4, 0x00, 0xb4, 0x84, 0x9e, 0xdb, 0x96, 0x1c, 0xd2, 0x9e, 0xc9, 0x19, 0xaa, 0xc1, 0xef, - 0xc1, 0xba, 0x85, 0xf3, 0xe0, 0xf6, 0x9d, 0x89, 0x25, 0x7a, 0x78, 0x8a, 0xaa, 0x30, 0xc1, 0x2c, - 0x98, 0x7f, 0x02, 0x20, 0xed, 0x91, 0xd8, 0xf1, 0xfc, 0x91, 0x29, 0xb5, 0x6f, 0xf0, 0xcd, 0x97, - 0x93, 0xea, 0xcd, 0x5e, 0xc4, 0xc0, 0x48, 0x30, 0x43, 0xd6, 0xf8, 0x35, 0xcd, 0xba, 0xf0, 0xb9, - 0x58, 0x6f, 0x47, 0x0c, 0x8c, 0x04, 0xb3, 0xfa, 0x2f, 0x01, 0xc4, 0x6f, 0xf8, 0x4d, 0xe0, 0xfb, - 0x9e, 0x2b, 0x87, 0x8d, 0xe3, 0x63, 0x7f, 0x4b, 0x9c, 0x78, 0xbe, 0xd8, 0x36, 0xf1, 0x58, 0xbb, - 0x01, 0x1b, 0x11, 0xbc, 0x71, 0x22, 0x85, 0x8f, 0x60, 0x9a, 0xfa, 0xee, 0xd0, 0xf3, 0xa5, 0xb2, - 0xad, 0xe8, 0xf1, 0x49, 0x97, 0x65, 0xf0, 0x28, 0x6d, 0x77, 0x3b, 0x2c, 0x5b, 0xbf, 0x07, 0x10, - 0x0f, 0x89, 0x7c, 0x10, 0x7a, 0x7a, 0xeb, 0xa1, 0xf6, 0x48, 0xa8, 0xf5, 0xf0, 0x1d, 0x96, 0xaa, - 0xfd, 0x61, 0x06, 0xb2, 0xa8, 0x6a, 0xd0, 0xfd, 0x4a, 0xee, 0x0b, 0xb5, 0x7c, 0x49, 0xd0, 0xe7, - 0x53, 0x90, 0xc8, 0x3b, 0xa9, 0x20, 0xdf, 0x87, 0x72, 0x7f, 0x12, 0x48, 0x6f, 0x44, 0xa7, 0x83, - 0x4e, 0xc0, 0xdc, 0x9c, 0x0b, 0x64, 0x3c, 0x35, 0x9d, 0x89, 0x30, 0x92, 0xa8, 0xfc, 0x5d, 0xc8, - 0x9f, 0xa8, 0x85, 0x50, 0xa1, 0x8c, 0x2f, 0x5e, 0x72, 0x80, 0xe8, 0xc9, 0xd6, 0xc8, 0x38, 0x2e, - 0x7b, 0x4e, 0x88, 0x92, 0x20, 0x7d, 0x10, 0xe4, 0xa3, 0x83, 0xe0, 0x97, 0x60, 0x4d, 0xa0, 0x59, - 0x71, 0xe8, 0x98, 0x7d, 0x31, 0x12, 0x6e, 0xb8, 0xf2, 0xef, 0xbc, 0xc4, 0x88, 0xc9, 0x2e, 0xa1, - 0x61, 0xcf, 0xf0, 0xaa, 0x7f, 0x45, 0x6f, 0xd2, 0x02, 0x64, 0x1a, 0x41, 0x5f, 0xbb, 0xdd, 0x22, - 0xe8, 0x2b, 0x9b, 0xbe, 0x49, 0x03, 0x66, 0xe9, 0xfa, 0x5b, 0x50, 0x8a, 0x78, 0x70, 0x06, 0xab, - 0x07, 0x9e, 0xec, 0x8e, 0x45, 0xdf, 0x3e, 0xb1, 0x85, 0xa5, 0x02, 0x09, 0x5d, 0x69, 0xfa, 0x52, - 0x45, 0xae, 0x5a, 0xae, 0xc5, 0xd2, 0xb5, 0xdf, 0x2d, 0x42, 0x5e, 0x69, 0x7c, 0x3d, 0xa4, 0x52, - 0x34, 0xa4, 0xef, 0x42, 0xd1, 0x1b, 0x0b, 0xdf, 0x94, 0x9e, 0xaf, 0xc3, 0x05, 0xef, 0xbe, 0xcc, - 0x09, 0xb2, 0xd9, 0xd1, 0xc4, 0x46, 0xc4, 0x66, 0x56, 0x5e, 0xd2, 0xf3, 0xf2, 0x72, 0x1f, 0x58, - 0x78, 0x58, 0x1c, 0xfa, 0x48, 0x27, 0x2f, 0xb4, 0xf3, 0x37, 0x07, 0xe7, 0x3d, 0x28, 0xf5, 0x3d, - 0xd7, 0xb2, 0xa3, 0xd0, 0xc1, 0xda, 0xc3, 0x6f, 0xbc, 0x54, 0x0f, 0x9b, 0x21, 0xb5, 0x11, 0x33, - 0xe2, 0x6f, 0x40, 0xee, 0x0c, 0x05, 0x89, 0x24, 0xe6, 0x72, 0x31, 0x53, 0x48, 0xfc, 0x53, 0x28, - 0xff, 0x60, 0x62, 0xf7, 0x4f, 0x3b, 0xc9, 0xd0, 0xd4, 0xfb, 0x2f, 0xd5, 0x8b, 0xef, 0xc6, 0xf4, - 0x46, 0x92, 0x59, 0x42, 0x78, 0x0b, 0x7f, 0x06, 0xe1, 0x2d, 0xce, 0x0b, 0xaf, 0x01, 0x15, 0x57, - 0x04, 0x52, 0x58, 0x3b, 0xda, 0x40, 0x80, 0xcf, 0x61, 0x20, 0x4c, 0xb3, 0xa8, 0x7f, 0x19, 0x8a, - 0xe1, 0x82, 0xf3, 0x3c, 0xa4, 0x0f, 0xd0, 0x12, 0xcf, 0x43, 0xba, 0xe3, 0x2b, 0x69, 0x6b, 0xa0, - 0xb4, 0xd5, 0xff, 0x24, 0x05, 0xa5, 0x68, 0xd2, 0xa7, 0x43, 0x5c, 0xad, 0x1f, 0x4c, 0x4c, 0x87, - 0xa5, 0xc8, 0x47, 0xf3, 0xa4, 0x6a, 0x91, 0xa6, 0x7a, 0x44, 0x19, 0x62, 0x9f, 0x65, 0xe8, 0x5c, - 0x12, 0x41, 0xc0, 0xb2, 0x9c, 0xc3, 0x9a, 0x06, 0x77, 0x7c, 0x85, 0x9a, 0x43, 0x17, 0x0e, 0xdf, - 0x86, 0x80, 0xbc, 0x3a, 0xc6, 0x4e, 0x85, 0x72, 0x51, 0x0f, 0x3c, 0x49, 0x8d, 0x22, 0x76, 0xaa, - 0xed, 0xb2, 0x12, 0x7e, 0xf3, 0xc0, 0x93, 0x6d, 0x97, 0x41, 0xec, 0x13, 0x94, 0xc3, 0xcf, 0x53, - 0x6b, 0x95, 0x3c, 0x0e, 0xc7, 0x69, 0xbb, 0xac, 0xa2, 0x5f, 0xa8, 0xd6, 0x1a, 0x72, 0x6c, 0x9d, - 0x9b, 0x7d, 0x24, 0x5f, 0xe7, 0x6b, 0x00, 0x48, 0xa3, 0xdb, 0x0c, 0xb7, 0x64, 0xeb, 0xdc, 0x0e, - 0x64, 0xc0, 0x36, 0xea, 0xff, 0x2e, 0x05, 0xe5, 0xc4, 0x02, 0xa3, 0xcf, 0x41, 0x88, 0xa8, 0xc7, - 0x95, 0x0b, 0xf2, 0x09, 0x4e, 0xa3, 0x6f, 0x85, 0x3a, 0xba, 0xe7, 0xe1, 0x63, 0x1a, 0xbf, 0xd7, - 0xf3, 0x46, 0x9e, 0xef, 0x7b, 0xcf, 0xd5, 0x79, 0xbb, 0x67, 0x06, 0xf2, 0x99, 0x10, 0xa7, 0x2c, - 0x8b, 0x43, 0x6d, 0x4e, 0x7c, 0x5f, 0xb8, 0x0a, 0x90, 0xa3, 0xce, 0x89, 0x73, 0xd5, 0xca, 0x23, - 0x53, 0x44, 0xa6, 0x43, 0x80, 0x15, 0x50, 0x11, 0x68, 0x6c, 0x05, 0x29, 0x22, 0x02, 0xa2, 0xab, - 0x66, 0x09, 0xdd, 0x7a, 0xe5, 0x16, 0x77, 0x4e, 0xb6, 0xcd, 0x8b, 0xa0, 0x31, 0xf0, 0x18, 0xcc, - 0x02, 0x0f, 0xbc, 0xe7, 0xac, 0x5c, 0x9b, 0x00, 0xc4, 0x8e, 0x00, 0x3a, 0x40, 0x28, 0x10, 0x51, - 0xe0, 0x5a, 0xb7, 0x78, 0x07, 0x00, 0x9f, 0x08, 0x33, 0xf4, 0x82, 0x5e, 0xc2, 0x3a, 0x23, 0x3a, - 0x23, 0xc1, 0xa2, 0xf6, 0x97, 0xa1, 0x14, 0xbd, 0x40, 0xbf, 0x97, 0xec, 0xa8, 0xe8, 0xb3, 0x61, - 0x13, 0x8d, 0x02, 0xdb, 0xb5, 0xc4, 0x39, 0xe9, 0x95, 0x9c, 0xa1, 0x1a, 0xd8, 0xcb, 0xa1, 0x6d, - 0x59, 0xc2, 0x0d, 0xd3, 0x0b, 0xaa, 0xb5, 0x28, 0x09, 0x9c, 0x5d, 0x98, 0x04, 0xae, 0xfd, 0x32, - 0x94, 0x13, 0x9e, 0xca, 0xa5, 0xc3, 0x4e, 0x74, 0x2c, 0x3d, 0xdd, 0xb1, 0xdb, 0x50, 0x0a, 0x0b, - 0x0f, 0x02, 0x3a, 0xbd, 0x4a, 0x46, 0x0c, 0xa8, 0xfd, 0xf3, 0x34, 0x9a, 0x4f, 0x38, 0xb4, 0x59, - 0xef, 0x62, 0x07, 0xf2, 0xe8, 0x6a, 0x4f, 0xc2, 0x0c, 0xfa, 0x92, 0x1b, 0xb4, 0x4b, 0x34, 0xbb, - 0x2b, 0x86, 0xa6, 0xe6, 0x1f, 0x42, 0x46, 0x9a, 0x03, 0x1d, 0x9d, 0xfb, 0xea, 0x72, 0x4c, 0x7a, - 0xe6, 0x60, 0x77, 0xc5, 0x40, 0x3a, 0xbe, 0x07, 0xc5, 0xbe, 0x0e, 0xa8, 0x68, 0xa5, 0xb8, 0xa4, - 0x03, 0x10, 0x86, 0x61, 0x76, 0x57, 0x8c, 0x88, 0x03, 0xff, 0x0e, 0x64, 0xd1, 0xa4, 0xd1, 0x85, - 0x06, 0x4b, 0x3a, 0x36, 0xb8, 0x5d, 0x76, 0x57, 0x0c, 0xa2, 0xdc, 0x2a, 0x40, 0x8e, 0x74, 0x70, - 0xad, 0x0a, 0x79, 0x35, 0xd6, 0xd9, 0x99, 0xab, 0xdd, 0x82, 0x4c, 0xcf, 0x1c, 0xa0, 0x59, 0x69, - 0x5b, 0x81, 0xf6, 0xcf, 0xf1, 0xb1, 0xf6, 0x6a, 0x1c, 0x1c, 0x4a, 0xc6, 0x1d, 0x53, 0x53, 0x71, - 0xc7, 0x5a, 0x1e, 0xb2, 0xf8, 0xc5, 0xda, 0xed, 0xab, 0x4c, 0xd4, 0xda, 0x3f, 0xca, 0xa0, 0x35, - 0x2b, 0xc5, 0xf9, 0xc2, 0x98, 0xea, 0xc7, 0x50, 0x1a, 0xfb, 0x5e, 0x5f, 0x04, 0x81, 0xe7, 0x6b, - 0xf3, 0xe7, 0x8d, 0x17, 0xe7, 0x3b, 0x37, 0x0f, 0x43, 0x1a, 0x23, 0x26, 0xaf, 0xff, 0xeb, 0x34, - 0x94, 0xa2, 0x17, 0xca, 0x88, 0x96, 0xe2, 0x5c, 0xc5, 0xcf, 0xf6, 0x85, 0x3f, 0x32, 0x6d, 0x4b, - 0x69, 0x8f, 0xe6, 0xd0, 0x0c, 0x2d, 0xbc, 0x4f, 0xbc, 0x89, 0x9c, 0x1c, 0x0b, 0x15, 0x37, 0x79, - 0x6a, 0x8f, 0x84, 0xc7, 0xb2, 0x94, 0xb1, 0x40, 0xc1, 0xee, 0x3b, 0xde, 0xc4, 0x62, 0x39, 0x6c, - 0x3f, 0xa2, 0xe3, 0x6d, 0xdf, 0x1c, 0x07, 0x4a, 0x67, 0xee, 0xdb, 0xbe, 0xc7, 0x0a, 0x48, 0xb4, - 0x63, 0x0f, 0x46, 0x26, 0x2b, 0x22, 0xb3, 0xde, 0x73, 0x5b, 0xa2, 0x12, 0x2e, 0xf1, 0x0d, 0xa8, - 0x74, 0xc6, 0xc2, 0xed, 0x4a, 0x5f, 0x08, 0xb9, 0x6f, 0x8e, 0x55, 0x20, 0xcd, 0x10, 0x96, 0x65, - 0x4b, 0xa5, 0x3f, 0x77, 0xcc, 0xbe, 0x38, 0xf6, 0xbc, 0x53, 0xb6, 0x8a, 0x8a, 0xa6, 0xed, 0x06, - 0xd2, 0x1c, 0xf8, 0xe6, 0x48, 0xe9, 0xd0, 0x9e, 0x70, 0x04, 0xb5, 0xd6, 0xe8, 0xdb, 0xb6, 0x1c, - 0x4e, 0x8e, 0x1f, 0xa1, 0xb3, 0xb1, 0xae, 0x92, 0x1b, 0x96, 0x18, 0x0b, 0xd4, 0xa1, 0xab, 0x50, - 0xdc, 0xb2, 0x1d, 0xfb, 0xd8, 0x76, 0x6c, 0xb6, 0x81, 0xa8, 0xad, 0xf3, 0xbe, 0xe9, 0xd8, 0x96, - 0x6f, 0x3e, 0x67, 0x1c, 0x3b, 0xf7, 0xd8, 0xf7, 0x4e, 0x6d, 0x76, 0x0d, 0x11, 0xc9, 0xf7, 0x38, - 0xb3, 0x7f, 0xc8, 0xae, 0x53, 0x82, 0xe6, 0x54, 0xc8, 0xfe, 0xf0, 0xc4, 0x3c, 0x66, 0x37, 0xe2, - 0x38, 0xd2, 0xcd, 0xda, 0x06, 0xac, 0xcf, 0xa4, 0x82, 0x6b, 0x05, 0xed, 0xf2, 0xd4, 0x2a, 0x50, - 0x4e, 0xe4, 0xe8, 0x6a, 0xaf, 0x41, 0x31, 0xcc, 0xe0, 0xa1, 0x6b, 0x68, 0x07, 0x2a, 0xf6, 0xa8, - 0x85, 0x24, 0x6a, 0xd7, 0x7e, 0x3f, 0x05, 0x79, 0x95, 0x3e, 0xe5, 0x5b, 0x51, 0xb9, 0x43, 0x6a, - 0x89, 0x94, 0x99, 0x22, 0xd2, 0x09, 0xc7, 0xa8, 0xe6, 0xe1, 0x3a, 0xe4, 0x1c, 0xf2, 0x01, 0xb5, - 0xfa, 0xa2, 0x46, 0x42, 0xdb, 0x64, 0x92, 0xda, 0xa6, 0xde, 0x88, 0x92, 0x9c, 0x61, 0xbc, 0x8b, - 0xac, 0xc2, 0x9e, 0x2f, 0x84, 0x8a, 0x65, 0x91, 0x0b, 0x97, 0xa6, 0xb3, 0xc2, 0x1b, 0x8d, 0xcd, - 0xbe, 0x24, 0x00, 0x9d, 0xa2, 0xa8, 0x4c, 0x59, 0x16, 0xa5, 0xbc, 0x39, 0x34, 0x65, 0xfd, 0x04, - 0x8a, 0x87, 0x5e, 0x30, 0x7b, 0x26, 0x17, 0x20, 0xd3, 0xf3, 0xc6, 0xca, 0xc2, 0xdc, 0xf2, 0x24, - 0x59, 0x98, 0xea, 0x08, 0x3e, 0x91, 0x4a, 0xa8, 0x0c, 0x7b, 0x30, 0x94, 0xca, 0xfd, 0x6b, 0xbb, - 0xae, 0xf0, 0x59, 0x0e, 0xd7, 0xd0, 0x10, 0x63, 0xb4, 0x5b, 0x59, 0x1e, 0x57, 0x8d, 0xe0, 0x3b, - 0xb6, 0x1f, 0x48, 0x56, 0xa8, 0xb7, 0xf1, 0x34, 0xb5, 0x07, 0x74, 0x08, 0xd2, 0x03, 0xb1, 0x5a, - 0xc1, 0x2e, 0x52, 0xb3, 0x29, 0x5c, 0x94, 0x31, 0xca, 0xab, 0xa9, 0x8a, 0x18, 0xfa, 0x40, 0x1a, - 0x4f, 0x30, 0x6a, 0x7f, 0x3c, 0x09, 0xa4, 0x7d, 0x72, 0xc1, 0x32, 0xf5, 0x67, 0x50, 0x99, 0xaa, - 0x9d, 0xe1, 0xd7, 0x81, 0x4d, 0x01, 0xb0, 0xeb, 0x2b, 0xfc, 0x16, 0x5c, 0x9b, 0x82, 0xee, 0xdb, - 0x96, 0x45, 0x01, 0xc6, 0xd9, 0x17, 0xe1, 0x00, 0xb7, 0x4a, 0x50, 0xe8, 0xab, 0x55, 0xaa, 0x1f, - 0x42, 0x85, 0x96, 0x6d, 0x5f, 0x48, 0xb3, 0xe3, 0x3a, 0x17, 0x7f, 0xe6, 0x02, 0xa7, 0xfa, 0xd7, - 0x20, 0x47, 0x09, 0x01, 0xd4, 0x17, 0x27, 0xbe, 0x37, 0x22, 0x5e, 0x39, 0x83, 0x9e, 0x91, 0xbb, - 0xf4, 0xf4, 0xda, 0xa7, 0xa5, 0x57, 0xff, 0xac, 0x08, 0x85, 0x46, 0xbf, 0xef, 0x4d, 0x5c, 0x39, - 0xf7, 0xe5, 0x77, 0x21, 0xdf, 0xf7, 0xdc, 0x13, 0x7b, 0xa0, 0xf5, 0xf1, 0xac, 0x65, 0xa8, 0xe9, - 0x50, 0xe0, 0x4e, 0xec, 0x81, 0xa1, 0x91, 0x91, 0x4c, 0x9f, 0x27, 0xb9, 0x2b, 0xc9, 0x94, 0x52, - 0x8d, 0x8e, 0x8f, 0x07, 0x90, 0xb5, 0xdd, 0x13, 0x4f, 0x57, 0x23, 0xbe, 0x72, 0x09, 0x11, 0x95, - 0xe4, 0x11, 0x62, 0xed, 0xbf, 0xa4, 0x20, 0xaf, 0x3e, 0xcd, 0x5f, 0x83, 0x35, 0xe1, 0xe2, 0x66, - 0x0a, 0x55, 0xb9, 0xde, 0x45, 0x33, 0x50, 0x34, 0x5a, 0x35, 0x44, 0x1c, 0x4f, 0x06, 0xda, 0xe1, - 0x4f, 0x82, 0xf8, 0xfb, 0x70, 0x4b, 0x35, 0x0f, 0x7d, 0xe1, 0x0b, 0x47, 0x98, 0x81, 0x68, 0x0e, - 0x4d, 0xd7, 0x15, 0x8e, 0x3e, 0xd8, 0x2f, 0x7b, 0xcd, 0xeb, 0xb0, 0xaa, 0x5e, 0x75, 0xc7, 0x66, - 0x5f, 0x04, 0x3a, 0xc9, 0x34, 0x05, 0xe3, 0x5f, 0x87, 0x1c, 0x15, 0x6b, 0x56, 0xad, 0xab, 0x97, - 0x52, 0x61, 0xd5, 0xbc, 0xe8, 0xe4, 0x69, 0x00, 0xa8, 0x69, 0x42, 0xa7, 0x4b, 0xef, 0xfe, 0x2f, - 0x5d, 0x39, 0xaf, 0xe4, 0xe1, 0x25, 0x88, 0xb0, 0x7f, 0x96, 0x70, 0x04, 0x55, 0xd5, 0xe1, 0xc9, - 0x98, 0xa6, 0x70, 0xfe, 0x14, 0xac, 0xf6, 0xab, 0x59, 0xc8, 0xe2, 0x0c, 0x23, 0xf2, 0xd0, 0x1b, - 0x89, 0x28, 0xa8, 0xa9, 0x4c, 0x8d, 0x29, 0x18, 0x9a, 0x36, 0xa6, 0xca, 0x2b, 0x47, 0x68, 0x4a, - 0x79, 0xcc, 0x82, 0x11, 0x73, 0xec, 0x7b, 0x27, 0xb6, 0x13, 0x63, 0x6a, 0x23, 0x68, 0x06, 0xcc, - 0xbf, 0x01, 0x37, 0x47, 0xa6, 0x7f, 0x2a, 0x24, 0xed, 0xee, 0x67, 0x9e, 0x7f, 0x1a, 0xe0, 0xcc, - 0xb5, 0x2d, 0x1d, 0x0d, 0xbb, 0xe4, 0x2d, 0x2a, 0x50, 0x4b, 0x9c, 0xd9, 0x84, 0x59, 0x54, 0x45, - 0x98, 0x61, 0x1b, 0x85, 0xc3, 0x54, 0x53, 0xd3, 0xd5, 0xbc, 0x74, 0xa2, 0x62, 0x1a, 0x8a, 0xf6, - 0x93, 0x2a, 0x4e, 0x09, 0xda, 0x16, 0x05, 0xe8, 0x4a, 0x46, 0x0c, 0x40, 0xd1, 0xa1, 0x8f, 0x3d, - 0x55, 0x6a, 0xb2, 0xa2, 0x9c, 0xca, 0x04, 0x08, 0x31, 0xa4, 0xe8, 0x0f, 0xc3, 0x8f, 0xa8, 0xe8, - 0x59, 0x12, 0xc4, 0xef, 0x00, 0x0c, 0x4c, 0x29, 0x9e, 0x9b, 0x17, 0x4f, 0x7c, 0xa7, 0x2a, 0x54, - 0xc4, 0x3d, 0x86, 0xa0, 0x5b, 0xea, 0x78, 0x7d, 0xd3, 0xe9, 0x4a, 0xcf, 0x37, 0x07, 0xe2, 0xd0, - 0x94, 0xc3, 0xea, 0x40, 0xb9, 0xa5, 0xb3, 0x70, 0x1c, 0xb1, 0xb4, 0x47, 0xe2, 0x53, 0xcf, 0x15, - 0xd5, 0xa1, 0x1a, 0x71, 0xd8, 0xc6, 0x9e, 0x98, 0xae, 0xe9, 0x5c, 0x48, 0xbb, 0x8f, 0x63, 0xb1, - 0x55, 0x4f, 0x12, 0x20, 0x1c, 0xab, 0x2b, 0xe4, 0x73, 0xcf, 0x3f, 0x6d, 0x5b, 0xd5, 0xef, 0xab, - 0xb1, 0x46, 0x80, 0x7a, 0x07, 0x20, 0x16, 0x22, 0xd4, 0xcc, 0x0d, 0xca, 0x0a, 0xb0, 0x15, 0xb4, - 0xd7, 0x0f, 0x85, 0x6b, 0xd9, 0xee, 0x60, 0x5b, 0xcb, 0x0d, 0x4b, 0x21, 0x90, 0x3c, 0x7e, 0x61, - 0x45, 0x40, 0xb2, 0x0d, 0xa8, 0x25, 0x2c, 0x96, 0xa9, 0xff, 0xef, 0x14, 0x94, 0x13, 0x49, 0xf0, - 0x3f, 0xc7, 0xc4, 0x3d, 0x9e, 0x9c, 0x78, 0xf6, 0xe2, 0x84, 0x2a, 0x99, 0x8a, 0xda, 0x38, 0xdd, - 0x3a, 0x47, 0x8f, 0x6f, 0x95, 0x7f, 0x9f, 0x80, 0x7c, 0xae, 0xa4, 0x7d, 0xfd, 0xa1, 0x0e, 0x92, - 0x94, 0xa1, 0xf0, 0xc4, 0x3d, 0x75, 0xbd, 0xe7, 0xae, 0x3a, 0x12, 0xa9, 0x12, 0x63, 0x2a, 0xa7, - 0x14, 0x16, 0x4b, 0x64, 0xea, 0xff, 0x38, 0x3b, 0x53, 0xb4, 0xd4, 0x82, 0xbc, 0xb2, 0xcc, 0xc9, - 0x68, 0x9c, 0xaf, 0x32, 0x49, 0x22, 0xeb, 0xfc, 0x45, 0x02, 0x64, 0x68, 0x62, 0x34, 0x99, 0xa3, - 0x92, 0xbe, 0xf4, 0xc2, 0x3c, 0xcb, 0x14, 0xa3, 0x50, 0x0d, 0x4e, 0x55, 0xb5, 0x46, 0x1c, 0x6a, - 0x7f, 0x23, 0x05, 0xd7, 0x17, 0xa1, 0x24, 0x6b, 0x7f, 0x53, 0xd3, 0xb5, 0xbf, 0xdd, 0x99, 0x5a, - 0xda, 0x34, 0x8d, 0xe6, 0xc1, 0x4b, 0x76, 0x62, 0xba, 0xb2, 0xb6, 0xfe, 0x93, 0x14, 0x6c, 0xcc, - 0x8d, 0x39, 0x61, 0x32, 0x00, 0xe4, 0x95, 0x64, 0xa9, 0x52, 0x97, 0xa8, 0xf8, 0x40, 0x05, 0x8f, - 0xe9, 0x30, 0x0d, 0x54, 0x36, 0x57, 0x57, 0x0f, 0x2b, 0x8b, 0x14, 0x57, 0x0d, 0x75, 0xf5, 0x40, - 0xb0, 0x1c, 0x9e, 0xf5, 0xca, 0xae, 0xd1, 0x90, 0xbc, 0xb2, 0x1a, 0x55, 0x84, 0x9b, 0x15, 0xa8, - 0x84, 0x66, 0x32, 0x76, 0xec, 0x3e, 0x36, 0x8b, 0xbc, 0x06, 0x37, 0x55, 0x09, 0xb9, 0xf6, 0xd0, - 0x4e, 0x7a, 0x43, 0x9b, 0x36, 0x07, 0x2b, 0xd5, 0x0d, 0xb8, 0xb6, 0x60, 0x4c, 0xd4, 0xcb, 0xa7, - 0xba, 0xc7, 0x6b, 0x00, 0xdb, 0x4f, 0xc3, 0x7e, 0xb2, 0x14, 0xe7, 0xb0, 0xb6, 0xfd, 0x34, 0xc9, - 0x50, 0xef, 0x97, 0xa7, 0xa8, 0x49, 0x02, 0x96, 0xa9, 0xff, 0x5a, 0x2a, 0x4c, 0x6b, 0xd7, 0xfe, - 0x12, 0x54, 0x54, 0x1f, 0x0f, 0xcd, 0x0b, 0xc7, 0x33, 0x2d, 0xde, 0x82, 0xb5, 0x20, 0xba, 0xd7, - 0x90, 0x38, 0x0e, 0x66, 0x8f, 0xd9, 0xee, 0x14, 0x92, 0x31, 0x43, 0x14, 0x3a, 0x1a, 0xe9, 0x38, - 0x16, 0xce, 0xc9, 0x65, 0x32, 0x69, 0x97, 0xad, 0x92, 0x13, 0x64, 0xd6, 0xbf, 0x0e, 0x1b, 0xa4, - 0xbc, 0x54, 0x67, 0x94, 0x45, 0x8a, 0xf2, 0xa0, 0xf4, 0xee, 0x76, 0x28, 0x0f, 0xba, 0x59, 0xff, - 0x8f, 0x79, 0x80, 0x38, 0xee, 0xbf, 0x60, 0x9b, 0x2f, 0x4a, 0x63, 0xcf, 0x65, 0xe1, 0x32, 0x2f, - 0x9d, 0x85, 0x7b, 0x3f, 0x32, 0x8c, 0x55, 0x00, 0x76, 0xb6, 0x96, 0x37, 0xee, 0xd3, 0xac, 0x39, - 0x3c, 0x55, 0xe5, 0x91, 0x9b, 0xad, 0xf2, 0xb8, 0x3b, 0x5f, 0x12, 0x36, 0xa3, 0x7f, 0x62, 0xbf, - 0xbf, 0x30, 0xe5, 0xf7, 0xd7, 0xa0, 0xe8, 0x0b, 0xd3, 0xf2, 0x5c, 0xe7, 0x22, 0x4c, 0xf6, 0x84, - 0x6d, 0xfe, 0x36, 0xe4, 0x24, 0x5d, 0xcd, 0x28, 0xd2, 0x76, 0x79, 0xc1, 0xc2, 0x29, 0x5c, 0x54, - 0x66, 0x76, 0xa0, 0xeb, 0xb8, 0xd4, 0x09, 0x56, 0x34, 0x12, 0x10, 0xbe, 0x09, 0xdc, 0x46, 0x27, - 0xc8, 0x71, 0x84, 0xb5, 0x75, 0xb1, 0xad, 0x72, 0x30, 0x74, 0x6a, 0x16, 0x8d, 0x05, 0x6f, 0xc2, - 0xf5, 0x5f, 0x8d, 0xd7, 0x9f, 0xba, 0x7c, 0x66, 0x07, 0x38, 0xd2, 0x0a, 0x19, 0x07, 0x51, 0x1b, - 0xcf, 0xe5, 0x70, 0x8f, 0xaa, 0xb9, 0x24, 0xe9, 0x8d, 0x13, 0x99, 0x97, 0xbc, 0xad, 0xff, 0x41, - 0x3a, 0x72, 0x20, 0x4a, 0x90, 0x3b, 0x36, 0x03, 0xbb, 0xaf, 0xfc, 0x49, 0x7d, 0xf0, 0x2b, 0x27, - 0x42, 0x7a, 0x96, 0xc7, 0xd2, 0xe8, 0x0b, 0x04, 0x02, 0xad, 0xfe, 0x35, 0x80, 0xf8, 0xba, 0x0a, - 0xcb, 0xe2, 0xde, 0x0c, 0xd7, 0x5b, 0x95, 0x63, 0x10, 0x29, 0x85, 0xa0, 0xac, 0xa8, 0xd0, 0x8d, - 0x9c, 0x49, 0xd2, 0xfd, 0xac, 0x88, 0x38, 0xae, 0x27, 0x85, 0x0a, 0xc0, 0x91, 0x74, 0x32, 0x40, - 0x36, 0x61, 0xfd, 0x35, 0x2b, 0xa3, 0x71, 0x1e, 0x32, 0x55, 0x51, 0xb3, 0x80, 0x5c, 0x97, 0x55, - 0xdc, 0x9d, 0xd3, 0x2f, 0x58, 0x05, 0x7b, 0x14, 0xdf, 0x82, 0x61, 0x6b, 0xc8, 0xd5, 0xa4, 0x22, - 0x81, 0x75, 0x7c, 0x3c, 0xa3, 0xd2, 0x01, 0x86, 0x5f, 0xb5, 0x50, 0x61, 0x6c, 0x60, 0xcf, 0x22, - 0xd3, 0x80, 0x71, 0xf4, 0x3d, 0xc6, 0x26, 0x3a, 0x02, 0xf6, 0xd8, 0x74, 0x25, 0xbb, 0x86, 0x43, - 0x1d, 0x5b, 0x27, 0xec, 0x3a, 0x92, 0xf4, 0x87, 0xa6, 0x64, 0x37, 0x10, 0x07, 0x9f, 0xb6, 0x85, - 0x8f, 0xeb, 0xc9, 0x6e, 0x22, 0x8e, 0x34, 0x07, 0xec, 0x56, 0xfd, 0xb7, 0xe2, 0x52, 0xd3, 0x37, - 0x23, 0x13, 0x7d, 0x19, 0x21, 0x47, 0x23, 0x7e, 0xd1, 0x8e, 0x6b, 0xc1, 0x86, 0x2f, 0x7e, 0x30, - 0xb1, 0xa7, 0x0a, 0xb0, 0x33, 0x57, 0x67, 0xf8, 0xe7, 0x29, 0xea, 0x67, 0xb0, 0x11, 0x36, 0x9e, - 0xd9, 0x72, 0x48, 0xd1, 0x12, 0xfe, 0x76, 0xa2, 0x42, 0x3c, 0xb5, 0xf0, 0x66, 0x4d, 0xc4, 0x32, - 0xae, 0x08, 0x8f, 0xa2, 0xe1, 0xe9, 0x25, 0xa2, 0xe1, 0xf5, 0xff, 0x95, 0x4f, 0x04, 0x4c, 0x94, - 0xd3, 0x62, 0x45, 0x4e, 0xcb, 0x7c, 0x8e, 0x2f, 0x0e, 0x70, 0xa7, 0x5f, 0x26, 0xc0, 0xbd, 0x28, - 0x5f, 0xfe, 0x01, 0xda, 0xd0, 0xb4, 0x7f, 0x9e, 0x2e, 0x11, 0xbc, 0x9f, 0xc2, 0xe5, 0x5b, 0x94, - 0xb1, 0x33, 0xbb, 0xaa, 0x98, 0x23, 0xb7, 0xf0, 0xbe, 0x46, 0x32, 0x35, 0xa7, 0x31, 0x8d, 0x04, - 0x55, 0x42, 0xdb, 0xe4, 0x17, 0x69, 0x1b, 0xf4, 0x1f, 0xb5, 0x1e, 0x8a, 0xda, 0x2a, 0xd7, 0xa1, - 0x9e, 0x43, 0xf6, 0x94, 0xa9, 0x2d, 0x1a, 0x73, 0x70, 0xb4, 0xc2, 0x46, 0x13, 0x47, 0xda, 0x3a, - 0x9c, 0xaf, 0x1a, 0xb3, 0x17, 0xca, 0x4a, 0xf3, 0x17, 0xca, 0x3e, 0x02, 0x08, 0x04, 0xee, 0x8e, - 0x6d, 0xbb, 0x2f, 0x75, 0xc9, 0xc7, 0x9d, 0xcb, 0xc6, 0xa6, 0x93, 0x10, 0x09, 0x0a, 0xec, 0xff, - 0xc8, 0x3c, 0x6f, 0xa2, 0x35, 0xae, 0x73, 0xd3, 0x51, 0x7b, 0x56, 0x07, 0xaf, 0xcd, 0xeb, 0xe0, - 0xb7, 0x21, 0x17, 0xf4, 0xbd, 0xb1, 0xa0, 0x3b, 0x11, 0x97, 0xaf, 0xef, 0x66, 0x17, 0x91, 0x0c, - 0x85, 0x4b, 0x61, 0x39, 0xd4, 0x52, 0x9e, 0x4f, 0xb7, 0x21, 0x4a, 0x46, 0xd8, 0x9c, 0xd2, 0x83, - 0x37, 0xa7, 0xf5, 0x60, 0xcd, 0x82, 0xbc, 0x0e, 0xb1, 0xcf, 0x3a, 0xcb, 0x61, 0x70, 0x2e, 0x9d, - 0x08, 0xce, 0x45, 0x85, 0x85, 0x99, 0x64, 0x61, 0xe1, 0xcc, 0x85, 0xa9, 0xdc, 0xdc, 0x85, 0xa9, - 0xfa, 0xa7, 0x90, 0xa3, 0xbe, 0xa2, 0x11, 0xa1, 0xa6, 0x59, 0xd9, 0x98, 0x38, 0x28, 0x96, 0xe2, - 0xd7, 0x81, 0x05, 0x82, 0x8c, 0x10, 0xd1, 0x35, 0x47, 0x82, 0x94, 0x64, 0x9a, 0x57, 0xe1, 0xba, - 0xc2, 0x0d, 0xa6, 0xdf, 0x90, 0x25, 0xe4, 0xd8, 0xc7, 0xbe, 0xe9, 0x5f, 0xb0, 0x6c, 0xfd, 0x23, - 0xca, 0xee, 0x86, 0x02, 0x55, 0x8e, 0x2e, 0xa8, 0x29, 0xb5, 0x6c, 0x69, 0xed, 0x43, 0x49, 0x79, - 0xed, 0x1f, 0xa9, 0x52, 0x25, 0x72, 0x40, 0x28, 0x26, 0xb2, 0x9a, 0x3c, 0x89, 0xff, 0xdc, 0xf6, - 0x5b, 0x7d, 0x2b, 0x61, 0xca, 0x4d, 0xd7, 0x1e, 0xa5, 0x96, 0xad, 0x3d, 0xaa, 0x3f, 0x86, 0x75, - 0x63, 0x5a, 0xa7, 0xf3, 0xf7, 0xa1, 0xe0, 0x8d, 0x93, 0x7c, 0x5e, 0x24, 0x97, 0x21, 0x7a, 0xfd, - 0xa7, 0x29, 0x58, 0x6d, 0xbb, 0x52, 0xf8, 0xae, 0xe9, 0xec, 0x38, 0xe6, 0x80, 0xbf, 0x17, 0x6a, - 0xa9, 0xc5, 0xfe, 0x77, 0x12, 0x77, 0x5a, 0x61, 0x39, 0x3a, 0x94, 0xcc, 0x6f, 0xc0, 0x86, 0xb0, - 0x6c, 0xe9, 0xf9, 0xca, 0x80, 0x0d, 0x4b, 0xc4, 0xae, 0x03, 0x53, 0xe0, 0x2e, 0x6d, 0x89, 0x9e, - 0x5a, 0xe6, 0x2a, 0x5c, 0x9f, 0x82, 0x86, 0xd6, 0x69, 0x9a, 0xdf, 0x86, 0x6a, 0x7c, 0x1a, 0x6d, - 0x7b, 0xae, 0x6c, 0xbb, 0x96, 0x38, 0x27, 0x53, 0x88, 0x65, 0xea, 0xbf, 0x51, 0x08, 0x8d, 0xb0, - 0xa7, 0xba, 0x80, 0xcc, 0xf7, 0xbc, 0xf8, 0x76, 0xa2, 0x6e, 0x25, 0x6e, 0xc1, 0xa6, 0x97, 0xb8, - 0x05, 0xfb, 0x51, 0x7c, 0x93, 0x51, 0x1d, 0x14, 0xaf, 0x2e, 0x3c, 0x7d, 0xa8, 0xee, 0x45, 0x9b, - 0xdd, 0x5d, 0x91, 0xb8, 0xd6, 0xf8, 0x96, 0xf6, 0xb5, 0xb2, 0xcb, 0xd8, 0xaa, 0x2a, 0x1f, 0xff, - 0xee, 0x6c, 0xf9, 0xfc, 0x72, 0xf5, 0x67, 0x73, 0xe6, 0x24, 0xbc, 0xb4, 0x39, 0xf9, 0xed, 0x19, - 0xb7, 0xa6, 0xb8, 0x30, 0x24, 0x75, 0xc5, 0xe5, 0xc0, 0x6f, 0x43, 0x61, 0x68, 0x07, 0xd2, 0xf3, - 0xd5, 0x85, 0xd5, 0xf9, 0x0b, 0x36, 0x89, 0xd9, 0xda, 0x55, 0x88, 0x54, 0x2c, 0x14, 0x52, 0xf1, - 0xef, 0xc1, 0x06, 0x4d, 0xfc, 0x61, 0x6c, 0x35, 0x04, 0xd5, 0xf2, 0xc2, 0x22, 0xad, 0x04, 0xab, - 0xad, 0x19, 0x12, 0x63, 0x9e, 0x49, 0x6d, 0x00, 0x10, 0xaf, 0xcf, 0x9c, 0x16, 0xfb, 0x1c, 0x17, - 0x56, 0x6f, 0x42, 0x3e, 0x98, 0x1c, 0xc7, 0x39, 0x27, 0xdd, 0xaa, 0x9d, 0x43, 0x6d, 0xce, 0x3a, - 0x38, 0x14, 0xbe, 0xea, 0xee, 0x95, 0xb7, 0x66, 0x3f, 0x4a, 0x2e, 0xbc, 0x12, 0xce, 0xbb, 0x97, - 0xac, 0x5e, 0xc4, 0x39, 0x21, 0x01, 0xb5, 0x77, 0xa1, 0x9c, 0x98, 0x54, 0xd4, 0xcc, 0x13, 0xd7, - 0xf2, 0xc2, 0x30, 0x28, 0x3e, 0xab, 0x5b, 0x43, 0x56, 0x18, 0x08, 0xa5, 0xe7, 0x9a, 0x01, 0x6c, - 0x76, 0x02, 0xaf, 0x70, 0x7d, 0x5f, 0x85, 0x4a, 0xc2, 0xa4, 0x8b, 0x42, 0x64, 0xd3, 0xc0, 0xfa, - 0x19, 0xbc, 0x92, 0x60, 0x77, 0x28, 0xfc, 0x91, 0x1d, 0xe0, 0x41, 0xa2, 0x5c, 0x3a, 0x8a, 0x5e, - 0x58, 0xc2, 0x95, 0xb6, 0x0c, 0x35, 0x68, 0xd4, 0xe6, 0xbf, 0x08, 0xb9, 0xb1, 0xf0, 0x47, 0x81, - 0xd6, 0xa2, 0xb3, 0x12, 0xb4, 0x90, 0x6d, 0x60, 0x28, 0x9a, 0xfa, 0x3f, 0x4c, 0x41, 0x71, 0x5f, - 0x48, 0x13, 0x6d, 0x07, 0xbe, 0x3f, 0xf3, 0x95, 0xf9, 0x3c, 0x69, 0x88, 0xba, 0xa9, 0x9d, 0xcc, - 0xcd, 0xb6, 0xc6, 0xd7, 0xed, 0xdd, 0x95, 0xb8, 0x63, 0xb5, 0x2d, 0x28, 0x68, 0x70, 0xed, 0x3d, - 0x58, 0x9f, 0xc1, 0xa4, 0x79, 0x51, 0xb6, 0x7d, 0xf7, 0x62, 0x14, 0x96, 0xeb, 0xac, 0x1a, 0xd3, - 0xc0, 0xad, 0x12, 0x14, 0xc6, 0x8a, 0xa0, 0xfe, 0x07, 0x37, 0xa8, 0x84, 0xc4, 0x3e, 0x41, 0x67, - 0x7b, 0xd1, 0xc9, 0x7a, 0x07, 0x80, 0x8e, 0x66, 0x55, 0x68, 0xa0, 0xc2, 0x96, 0x09, 0x08, 0xff, - 0x20, 0x8a, 0x37, 0x67, 0x17, 0x1a, 0x55, 0x49, 0xe6, 0xb3, 0x41, 0xe7, 0x2a, 0x14, 0xec, 0x60, - 0x0f, 0x8f, 0x36, 0x5d, 0x7e, 0x13, 0x36, 0xf9, 0xb7, 0x20, 0x6f, 0x8f, 0xc6, 0x9e, 0x2f, 0x75, - 0x40, 0xfa, 0x4a, 0xae, 0x6d, 0xc2, 0xdc, 0x5d, 0x31, 0x34, 0x0d, 0x52, 0x8b, 0x73, 0xa2, 0x2e, - 0xbe, 0x98, 0xba, 0x75, 0x1e, 0x52, 0x2b, 0x1a, 0xfe, 0x5d, 0xa8, 0x0c, 0x54, 0x41, 0x9c, 0x62, - 0xac, 0x95, 0xc8, 0x57, 0xaf, 0x62, 0xf2, 0x28, 0x49, 0xb0, 0xbb, 0x62, 0x4c, 0x73, 0x40, 0x96, - 0x68, 0xc0, 0x8b, 0x40, 0xf6, 0xbc, 0x8f, 0x3d, 0xdb, 0x25, 0xa7, 0xf4, 0x05, 0x2c, 0x8d, 0x24, - 0x01, 0xb2, 0x9c, 0xe2, 0xc0, 0xbf, 0x81, 0x16, 0x4f, 0x20, 0xf5, 0x9d, 0xe1, 0xbb, 0x57, 0x71, - 0xea, 0x89, 0x40, 0xdf, 0xf6, 0x0d, 0x24, 0x3f, 0x87, 0x5a, 0x62, 0x93, 0xe8, 0x8f, 0x34, 0xc6, - 0x63, 0xdf, 0x43, 0xcf, 0xb6, 0x42, 0xdc, 0xbe, 0x71, 0x15, 0xb7, 0xc3, 0x4b, 0xa9, 0x77, 0x57, - 0x8c, 0x2b, 0x78, 0xf3, 0x1e, 0x7a, 0x76, 0x7a, 0x08, 0x7b, 0xc2, 0x3c, 0x0b, 0x6f, 0x1c, 0xdf, - 0x5f, 0x6a, 0x16, 0x88, 0x62, 0x77, 0xc5, 0x98, 0xe1, 0xc1, 0x7f, 0x19, 0x36, 0xa6, 0xbe, 0x49, - 0x97, 0x0c, 0xd5, 0x7d, 0xe4, 0xaf, 0x2f, 0x3d, 0x0c, 0x24, 0xda, 0x5d, 0x31, 0xe6, 0x39, 0xf1, - 0x09, 0x7c, 0x61, 0x7e, 0x48, 0xdb, 0xa2, 0xef, 0xd8, 0xae, 0xd0, 0x57, 0x97, 0xdf, 0x7d, 0xb9, - 0xd9, 0xd2, 0xc4, 0xbb, 0x2b, 0xc6, 0xe5, 0x9c, 0xf9, 0x5f, 0x81, 0xdb, 0xe3, 0x85, 0x2a, 0x46, - 0xa9, 0x2e, 0x7d, 0xf3, 0xf9, 0xfd, 0x25, 0xbf, 0x3c, 0x47, 0xbf, 0xbb, 0x62, 0x5c, 0xc9, 0x1f, - 0x6d, 0x67, 0xf2, 0xa0, 0x75, 0xdd, 0xae, 0x6a, 0xf0, 0xdb, 0x50, 0x32, 0xfb, 0xce, 0xae, 0x30, - 0xad, 0x28, 0xc2, 0x1e, 0x03, 0x6a, 0x7f, 0x9c, 0x82, 0xbc, 0x96, 0xf7, 0xdb, 0x51, 0x5e, 0x3c, - 0x52, 0xdd, 0x31, 0x80, 0x7f, 0x08, 0x25, 0xe1, 0xfb, 0x9e, 0xdf, 0xf4, 0xac, 0xb0, 0x68, 0x70, - 0x36, 0xfc, 0xab, 0xf8, 0x6c, 0xb6, 0x42, 0x34, 0x23, 0xa6, 0xe0, 0x1f, 0x00, 0xa8, 0x7d, 0xde, - 0x8b, 0xaf, 0x5f, 0xd4, 0x16, 0xd3, 0xab, 0x34, 0x4c, 0x8c, 0x1d, 0x07, 0xcf, 0xc2, 0x1c, 0x48, - 0xd8, 0x8c, 0x1c, 0xce, 0x5c, 0xc2, 0xe1, 0xbc, 0xad, 0xe3, 0x08, 0x07, 0xf8, 0x42, 0x5f, 0x42, - 0x8a, 0x00, 0xb5, 0x7f, 0x93, 0x82, 0xbc, 0x52, 0x1e, 0xbc, 0x35, 0x3f, 0xa2, 0xd7, 0x5f, 0xac, - 0x73, 0x36, 0x67, 0x47, 0xf6, 0x2d, 0x00, 0xa5, 0x83, 0x12, 0x23, 0xbb, 0x3d, 0xc3, 0x47, 0x93, - 0x86, 0x95, 0xa3, 0x31, 0x7e, 0xfd, 0xa1, 0xba, 0x28, 0x43, 0xb1, 0xda, 0x27, 0x7b, 0x7b, 0x6c, - 0x85, 0x6f, 0x40, 0xe5, 0xc9, 0xc1, 0xe3, 0x83, 0xce, 0xb3, 0x83, 0xa3, 0x96, 0x61, 0x74, 0x0c, - 0x15, 0xb2, 0xdd, 0x6a, 0x6c, 0x1f, 0xb5, 0x0f, 0x0e, 0x9f, 0xf4, 0x58, 0xba, 0xf6, 0x7b, 0x29, - 0xa8, 0x4c, 0xe9, 0xae, 0xbf, 0xd8, 0xa5, 0x4b, 0x4c, 0x7f, 0x66, 0xf1, 0xf4, 0x67, 0x2f, 0x9b, - 0xfe, 0xdc, 0xec, 0xf4, 0xff, 0x6e, 0x0a, 0x2a, 0x53, 0x3a, 0x32, 0xc9, 0x3d, 0x35, 0xcd, 0x3d, - 0x79, 0xd2, 0xa7, 0x67, 0x4e, 0xfa, 0x3a, 0xac, 0x86, 0xcf, 0x07, 0x71, 0xc4, 0x61, 0x0a, 0x96, - 0xc4, 0xa1, 0x4a, 0xf5, 0xec, 0x34, 0x0e, 0x55, 0xab, 0x5f, 0xdd, 0x5b, 0xba, 0x99, 0x17, 0xd0, - 0xc5, 0xe5, 0xda, 0xe5, 0x1a, 0xf4, 0x8a, 0x21, 0x3c, 0x82, 0xf2, 0x38, 0xde, 0xa6, 0x2f, 0x67, - 0x96, 0x24, 0x29, 0x5f, 0xd0, 0xcf, 0x9f, 0xa4, 0x60, 0x6d, 0x5a, 0xe7, 0xfe, 0x3f, 0x3d, 0xad, - 0xff, 0x24, 0x05, 0x1b, 0x73, 0x9a, 0xfc, 0x4a, 0xc3, 0x6e, 0xb6, 0x5f, 0xe9, 0x25, 0xfa, 0x95, - 0x59, 0xd0, 0xaf, 0xcb, 0x35, 0xc9, 0xd5, 0x3d, 0xee, 0xc2, 0x17, 0x2e, 0x3d, 0x13, 0xae, 0x98, - 0xea, 0x29, 0xa6, 0x99, 0x59, 0xa6, 0xbf, 0x9d, 0x82, 0xdb, 0x57, 0xe9, 0xfb, 0xff, 0xeb, 0x72, - 0x35, 0xdb, 0xc3, 0xfa, 0x7b, 0x51, 0x32, 0xbd, 0x0c, 0x05, 0xfd, 0x83, 0x40, 0xba, 0x5c, 0x79, - 0xe8, 0x3d, 0x77, 0x55, 0x24, 0xda, 0x10, 0xa6, 0xbe, 0x32, 0x6d, 0x88, 0xb1, 0x63, 0x53, 0xf2, - 0xf2, 0x16, 0x40, 0x83, 0xfc, 0xba, 0xf0, 0x06, 0x43, 0x73, 0xaf, 0xd3, 0x6d, 0xb1, 0x95, 0xa4, - 0x11, 0xfb, 0x69, 0xa8, 0x88, 0xeb, 0x87, 0x90, 0x8f, 0x6b, 0xdb, 0xf7, 0x4d, 0xff, 0xd4, 0x52, - 0x29, 0xc2, 0x55, 0x28, 0x1e, 0x6a, 0x17, 0x4a, 0x7d, 0xea, 0xe3, 0x6e, 0xe7, 0x40, 0x05, 0xbd, - 0xb7, 0x3b, 0x3d, 0x55, 0x21, 0xdf, 0x7d, 0xfa, 0x48, 0xe5, 0xaa, 0x1e, 0x19, 0x8d, 0xc3, 0xdd, - 0x23, 0xc2, 0xc8, 0xd5, 0xff, 0x59, 0x36, 0x3c, 0xd5, 0xea, 0x86, 0x4e, 0x3e, 0x02, 0xe4, 0x51, - 0x9b, 0x7b, 0x9a, 0x71, 0xf4, 0x19, 0x2a, 0x6c, 0x6d, 0x9d, 0xab, 0x38, 0x04, 0x4b, 0xf3, 0x3c, - 0xa4, 0x0f, 0x8f, 0x55, 0x35, 0xce, 0xae, 0x1c, 0x39, 0xea, 0x4a, 0x5b, 0xef, 0x5c, 0xb2, 0x1c, - 0x3e, 0x34, 0x83, 0x33, 0x96, 0xaf, 0xff, 0x51, 0x06, 0x4a, 0x91, 0xaa, 0x7c, 0x19, 0xd5, 0xcd, - 0x39, 0xac, 0xb5, 0x0f, 0x7a, 0x2d, 0xe3, 0xa0, 0xb1, 0xa7, 0x51, 0x32, 0xfc, 0x1a, 0xac, 0xef, - 0xb4, 0xf7, 0x5a, 0x47, 0x7b, 0x9d, 0xc6, 0xb6, 0x06, 0x16, 0xf9, 0x4d, 0xe0, 0xed, 0xfd, 0xc3, - 0x8e, 0xd1, 0x3b, 0x6a, 0x77, 0x8f, 0x9a, 0x8d, 0x83, 0x66, 0x6b, 0xaf, 0xb5, 0xcd, 0xf2, 0xfc, - 0x55, 0xb8, 0x7b, 0xd0, 0xe9, 0xb5, 0x3b, 0x07, 0x47, 0x07, 0x9d, 0xa3, 0xce, 0xd6, 0xc7, 0xad, - 0x66, 0xaf, 0x7b, 0xd4, 0x3e, 0x38, 0x42, 0xae, 0x8f, 0x8c, 0x06, 0xbe, 0x61, 0x39, 0x7e, 0x17, - 0x6e, 0x6b, 0xac, 0x6e, 0xcb, 0x78, 0xda, 0x32, 0x90, 0xc9, 0x93, 0x83, 0xc6, 0xd3, 0x46, 0x7b, - 0xaf, 0xb1, 0xb5, 0xd7, 0x62, 0xab, 0xfc, 0x0e, 0xd4, 0x34, 0x86, 0xd1, 0xe8, 0xb5, 0x8e, 0xf6, - 0xda, 0xfb, 0xed, 0xde, 0x51, 0xeb, 0x7b, 0xcd, 0x56, 0x6b, 0xbb, 0xb5, 0xcd, 0x2a, 0xfc, 0xab, - 0xf0, 0x15, 0xea, 0x94, 0xee, 0xc4, 0xf4, 0xc7, 0x3e, 0x6d, 0x1f, 0x1e, 0x35, 0x8c, 0xe6, 0x6e, - 0xfb, 0x69, 0x8b, 0xad, 0xf1, 0xd7, 0xe1, 0xcb, 0x97, 0xa3, 0x6e, 0xb7, 0x8d, 0x56, 0xb3, 0xd7, - 0x31, 0x3e, 0x61, 0x1b, 0xfc, 0x8b, 0xf0, 0x85, 0xdd, 0xde, 0xfe, 0xde, 0xd1, 0x33, 0xa3, 0x73, - 0xf0, 0xe8, 0x88, 0x1e, 0xbb, 0x3d, 0xe3, 0x49, 0xb3, 0xf7, 0xc4, 0x68, 0x31, 0xe0, 0x35, 0xb8, - 0x79, 0xb8, 0x75, 0x74, 0xd0, 0xe9, 0x1d, 0x35, 0x0e, 0x3e, 0xd9, 0xda, 0xeb, 0x34, 0x1f, 0x1f, - 0xed, 0x74, 0x8c, 0xfd, 0x46, 0x8f, 0x95, 0xf9, 0xd7, 0xe0, 0xf5, 0x66, 0xf7, 0xa9, 0xee, 0x66, - 0x67, 0xe7, 0xc8, 0xe8, 0x3c, 0xeb, 0x1e, 0x75, 0x8c, 0x23, 0xa3, 0xb5, 0x47, 0x63, 0xee, 0xc6, - 0x7d, 0x2f, 0xf0, 0x57, 0xe0, 0x16, 0x22, 0xab, 0xcf, 0xe0, 0x53, 0xfc, 0x15, 0xc6, 0x6f, 0x43, - 0xb5, 0x7d, 0xd0, 0x7d, 0xb2, 0xb3, 0xd3, 0x6e, 0xb6, 0x5b, 0x07, 0xbd, 0xa3, 0xc3, 0x96, 0xb1, - 0xdf, 0xee, 0x76, 0x91, 0x07, 0x2b, 0xd5, 0xbf, 0x03, 0xf9, 0xb6, 0x7b, 0x66, 0x4b, 0xda, 0x7c, - 0x5a, 0x52, 0xb5, 0x3b, 0x16, 0x36, 0x69, 0xcf, 0xd8, 0x03, 0x97, 0xee, 0x71, 0xd3, 0xd6, 0x5b, - 0x35, 0x62, 0x40, 0xfd, 0x9f, 0xa6, 0xa1, 0xa2, 0x58, 0x84, 0xee, 0xdd, 0x3d, 0x58, 0xd7, 0x71, - 0xd2, 0xf6, 0xb4, 0x7e, 0x9b, 0x05, 0xd3, 0x0f, 0x24, 0x29, 0x50, 0x42, 0xcb, 0x25, 0x41, 0x94, - 0x7b, 0x23, 0xe6, 0xe8, 0x26, 0xaa, 0xac, 0x63, 0x0c, 0xf8, 0xbc, 0xea, 0x0d, 0x55, 0xa7, 0x42, - 0xec, 0x7b, 0x6e, 0x33, 0xba, 0x3d, 0x31, 0x05, 0xe3, 0x9f, 0xc2, 0xad, 0xa8, 0xdd, 0x72, 0xfb, - 0xfe, 0xc5, 0x38, 0xfa, 0x1d, 0xb3, 0xc2, 0xc2, 0x78, 0xc3, 0x8e, 0xed, 0x88, 0x29, 0x44, 0xe3, - 0x32, 0x06, 0xf5, 0x3f, 0x49, 0x25, 0x9c, 0x62, 0xe5, 0xf4, 0x5e, 0x79, 0x1c, 0x2c, 0x4a, 0xd0, - 0xa0, 0x5b, 0xaa, 0xbb, 0xaf, 0xad, 0x14, 0xdd, 0xe4, 0x87, 0xc0, 0xed, 0xf9, 0x4e, 0x67, 0x97, - 0xec, 0xf4, 0x02, 0xda, 0xd9, 0xf8, 0x7a, 0x6e, 0x3e, 0xbe, 0x7e, 0x07, 0x60, 0xe0, 0x78, 0xc7, - 0xa6, 0x93, 0xb0, 0x42, 0x13, 0x90, 0xba, 0x03, 0xc5, 0xf0, 0xd7, 0xd2, 0xf8, 0x4d, 0xc8, 0xd3, - 0xef, 0xa5, 0x45, 0xd1, 0x46, 0xd5, 0xe2, 0xbb, 0xb0, 0x26, 0xa6, 0xfb, 0x9c, 0x5e, 0xb2, 0xcf, - 0x33, 0x74, 0xf5, 0x6f, 0xc2, 0xc6, 0x1c, 0x12, 0x4e, 0xe2, 0xd8, 0x94, 0xd1, 0x95, 0x69, 0x7c, - 0x9e, 0xcf, 0x70, 0xd7, 0xff, 0x43, 0x1a, 0x56, 0xf7, 0x4d, 0xd7, 0x3e, 0x11, 0x81, 0x0c, 0x7b, - 0x1b, 0xf4, 0x87, 0x62, 0x64, 0x86, 0xbd, 0x55, 0x2d, 0x1d, 0x82, 0x48, 0x27, 0x83, 0xfb, 0x73, - 0xb9, 0xa0, 0x9b, 0x90, 0x37, 0x27, 0x72, 0x18, 0x15, 0x74, 0xeb, 0x16, 0xae, 0x9d, 0x63, 0xf7, - 0x85, 0x1b, 0x84, 0xb2, 0x19, 0x36, 0xe3, 0x1a, 0x97, 0xfc, 0x15, 0x35, 0x2e, 0x85, 0xf9, 0xf9, - 0xbf, 0x0b, 0xe5, 0xa0, 0xef, 0x0b, 0xe1, 0x06, 0x43, 0x4f, 0x86, 0xbf, 0xb4, 0x97, 0x04, 0x51, - 0x6d, 0x97, 0xf7, 0xdc, 0xc5, 0x1d, 0xba, 0x67, 0xbb, 0xa7, 0xba, 0xc0, 0x69, 0x0a, 0x86, 0x32, - 0x48, 0x01, 0x18, 0xfb, 0x87, 0x82, 0x9c, 0xff, 0x9c, 0x11, 0xb5, 0x29, 0xc4, 0x62, 0x4a, 0x31, - 0xf0, 0x7c, 0x5b, 0xa8, 0x38, 0x63, 0xc9, 0x48, 0x40, 0x90, 0xd6, 0x31, 0xdd, 0xc1, 0xc4, 0x1c, - 0x08, 0x9d, 0x31, 0x8e, 0xda, 0xf5, 0xff, 0x9e, 0x03, 0xd8, 0x17, 0xa3, 0x63, 0xe1, 0x07, 0x43, - 0x7b, 0x4c, 0x79, 0x10, 0x5b, 0x97, 0xb1, 0x56, 0x0c, 0x7a, 0xe6, 0xef, 0x4f, 0x55, 0x98, 0xcf, - 0x67, 0x2e, 0x63, 0xf2, 0xd9, 0xf8, 0x0c, 0x4e, 0x8e, 0x29, 0x85, 0x2e, 0x2f, 0xa2, 0xf9, 0xcf, - 0x1a, 0x49, 0x10, 0x55, 0x7e, 0x99, 0x52, 0xb4, 0x5c, 0x4b, 0xc5, 0x7f, 0xb2, 0x46, 0xd4, 0xa6, - 0x3b, 0x2a, 0x41, 0x63, 0x22, 0x3d, 0x43, 0xb8, 0xe2, 0x79, 0x74, 0xc1, 0x2a, 0x06, 0xf1, 0x7d, - 0xa8, 0x8c, 0xcd, 0x8b, 0x91, 0x70, 0xe5, 0xbe, 0x90, 0x43, 0xcf, 0xd2, 0xb5, 0x40, 0xaf, 0x5f, - 0xde, 0xc1, 0xc3, 0x24, 0xba, 0x31, 0x4d, 0x8d, 0x32, 0xe1, 0x06, 0xb4, 0x4b, 0xd4, 0x32, 0xea, - 0x16, 0xdf, 0x02, 0x50, 0x4f, 0xe4, 0x56, 0x15, 0x17, 0x87, 0xa9, 0xcc, 0x91, 0x08, 0x84, 0x7f, - 0x66, 0x2b, 0x3d, 0xa6, 0x1c, 0xc7, 0x98, 0x0a, 0xb5, 0xde, 0x24, 0x10, 0x7e, 0x6b, 0x64, 0xda, - 0x8e, 0x5e, 0xe0, 0x18, 0xc0, 0xdf, 0x81, 0x1b, 0xc1, 0xe4, 0x18, 0x65, 0xe6, 0x58, 0xf4, 0xbc, - 0x03, 0xf1, 0x3c, 0x70, 0x84, 0x94, 0xc2, 0xd7, 0xc5, 0x07, 0x8b, 0x5f, 0xd6, 0x07, 0x91, 0x4d, - 0x44, 0xbf, 0xea, 0x80, 0x4f, 0x71, 0x51, 0x53, 0x04, 0xd2, 0x15, 0x5f, 0x2c, 0xc5, 0x19, 0xac, - 0x2a, 0x90, 0x2e, 0x08, 0x4b, 0xf3, 0xaf, 0xc0, 0x97, 0xa6, 0x90, 0x0c, 0x95, 0x25, 0x0e, 0x76, - 0x6c, 0xd7, 0x74, 0xec, 0x1f, 0xaa, 0x9c, 0x7d, 0xa6, 0x3e, 0x86, 0xca, 0xd4, 0xc4, 0xa1, 0x91, - 0xa3, 0x9e, 0x74, 0x89, 0x0c, 0x83, 0x55, 0xd5, 0xee, 0x4a, 0xdf, 0xa6, 0xf4, 0x47, 0x04, 0x69, - 0xe2, 0x3e, 0xf7, 0x58, 0x9a, 0x5f, 0x07, 0xa6, 0x20, 0x6d, 0xd7, 0x1c, 0x8f, 0x1b, 0xe3, 0xb1, - 0x23, 0x58, 0x86, 0x2e, 0x22, 0xc6, 0x50, 0x55, 0x67, 0xce, 0xb2, 0xf5, 0xef, 0xc1, 0x2d, 0x9a, - 0x99, 0xa7, 0xc2, 0x8f, 0xbc, 0x5e, 0x3d, 0xd6, 0x1b, 0xb0, 0xa1, 0x9e, 0x0e, 0x3c, 0xa9, 0x5e, - 0x93, 0x25, 0xc8, 0x61, 0x4d, 0x81, 0xd1, 0x10, 0xea, 0x0a, 0x57, 0xaa, 0x4a, 0x1d, 0x05, 0x8b, - 0xf0, 0xd2, 0xf5, 0x9f, 0xe6, 0x81, 0xc7, 0x02, 0xd1, 0xb3, 0x85, 0xbf, 0x6d, 0x4a, 0x33, 0x11, - 0xb6, 0xac, 0x5c, 0x9a, 0x78, 0x7f, 0x71, 0x3d, 0xdb, 0x4d, 0xc8, 0xdb, 0x01, 0xfa, 0x69, 0xba, - 0x7e, 0x54, 0xb7, 0xf8, 0x1e, 0xc0, 0x58, 0xf8, 0xb6, 0x67, 0x91, 0x04, 0xe5, 0x16, 0x16, 0xfa, - 0xcf, 0x77, 0x6a, 0xf3, 0x30, 0xa2, 0x31, 0x12, 0xf4, 0xd8, 0x0f, 0xd5, 0x52, 0x69, 0xec, 0x3c, - 0x75, 0x3a, 0x09, 0xe2, 0x6f, 0xc2, 0xb5, 0xb1, 0x6f, 0xf7, 0x85, 0x5a, 0x8e, 0x27, 0x81, 0xd5, - 0xa4, 0xdf, 0x42, 0x2b, 0x10, 0xe6, 0xa2, 0x57, 0x28, 0x81, 0xa6, 0x4b, 0xde, 0x4b, 0x40, 0x89, - 0x5b, 0x7d, 0x11, 0x56, 0xd5, 0x63, 0x56, 0x8c, 0xc5, 0x2f, 0xf9, 0x7d, 0x60, 0xfa, 0xc5, 0xbe, - 0xed, 0xee, 0x09, 0x77, 0x20, 0x87, 0x24, 0xdc, 0x15, 0x63, 0x0e, 0x4e, 0x1a, 0x4c, 0xfd, 0xe2, - 0x8c, 0x4a, 0xea, 0x94, 0x8c, 0xa8, 0xad, 0x2e, 0x57, 0x3b, 0x9e, 0xdf, 0x95, 0xbe, 0x2e, 0x15, - 0x8d, 0xda, 0x68, 0xb3, 0x04, 0xd4, 0xd7, 0x43, 0xdf, 0xb3, 0x26, 0x94, 0x72, 0x50, 0x4a, 0x6c, - 0x16, 0x1c, 0x63, 0xee, 0x9b, 0xae, 0x2e, 0x2a, 0xac, 0x24, 0x31, 0x23, 0x30, 0x39, 0x68, 0x5e, - 0x10, 0x33, 0x5c, 0xd7, 0x0e, 0x5a, 0x02, 0xa6, 0x71, 0x62, 0x56, 0x2c, 0xc2, 0x89, 0xf9, 0xd0, - 0xf8, 0x2d, 0xdf, 0xb3, 0xad, 0x98, 0xd7, 0x86, 0x2a, 0xf9, 0x9c, 0x85, 0x27, 0x70, 0x63, 0x9e, - 0x7c, 0x0a, 0x37, 0x82, 0xd7, 0x7f, 0x94, 0x02, 0x88, 0x17, 0x1f, 0x45, 0x3e, 0x6e, 0xc5, 0x5b, - 0xfc, 0x16, 0x5c, 0x4b, 0x82, 0xe9, 0x2e, 0x00, 0x65, 0x7f, 0x39, 0xac, 0xc5, 0x2f, 0xb6, 0xcd, - 0x8b, 0x80, 0xa5, 0x55, 0xed, 0x67, 0x08, 0x7b, 0x26, 0x04, 0x55, 0xd9, 0x5d, 0x07, 0x16, 0x03, - 0xe9, 0xaa, 0x57, 0xc0, 0xb2, 0xd3, 0xa8, 0x9f, 0x08, 0xd3, 0x0f, 0x58, 0xae, 0xbe, 0x0b, 0x79, - 0x95, 0x79, 0x5a, 0x90, 0x33, 0x7e, 0xb9, 0x02, 0x90, 0xbf, 0x99, 0x02, 0xd8, 0x56, 0xe5, 0xbd, - 0x78, 0x8a, 0x2f, 0x48, 0xc5, 0x2f, 0xb2, 0xa8, 0x4c, 0xcb, 0xa2, 0xc2, 0xe7, 0x4c, 0xf4, 0x3b, - 0x26, 0xd8, 0x44, 0xc9, 0x31, 0xc3, 0xb2, 0x2a, 0xb5, 0xe7, 0xa2, 0xb6, 0x3a, 0x40, 0x9a, 0x9e, - 0xeb, 0x8a, 0x3e, 0x1e, 0x3f, 0xd1, 0x01, 0x12, 0x81, 0xea, 0xff, 0xb6, 0x00, 0xe5, 0xe6, 0xd0, - 0x94, 0xfb, 0x22, 0x08, 0xcc, 0x81, 0x98, 0xeb, 0x4b, 0x15, 0x0a, 0x9e, 0x6f, 0x09, 0x3f, 0xbe, - 0xae, 0xa5, 0x9b, 0xc9, 0x02, 0x84, 0xcc, 0x74, 0x01, 0xc2, 0x6d, 0x28, 0xa9, 0xf4, 0x86, 0xd5, - 0x50, 0x6a, 0x20, 0x63, 0xc4, 0x00, 0x3c, 0xab, 0x47, 0x9e, 0x45, 0xca, 0xa8, 0xa1, 0x32, 0x03, - 0x19, 0x23, 0x01, 0x51, 0xf5, 0x1e, 0x63, 0xe7, 0xa2, 0xe7, 0xe9, 0x3e, 0xb5, 0xad, 0xf8, 0x6e, - 0xeb, 0x34, 0x9c, 0x37, 0xa1, 0x30, 0x52, 0x0d, 0x9d, 0xe5, 0x98, 0xcd, 0x07, 0x24, 0x86, 0xb6, - 0xa9, 0xff, 0xea, 0xeb, 0x25, 0x46, 0x48, 0x89, 0xfe, 0xbb, 0x29, 0xa5, 0xd9, 0x1f, 0x8e, 0xb4, - 0x8a, 0xc8, 0x2c, 0x48, 0x78, 0x26, 0x19, 0x35, 0x22, 0x6c, 0x23, 0x49, 0xc9, 0xb7, 0xa0, 0xe4, - 0x0b, 0x73, 0x2a, 0xe7, 0xfa, 0xea, 0x15, 0x6c, 0x8c, 0x10, 0xd7, 0x88, 0xc9, 0x6a, 0xbf, 0x93, - 0x82, 0xb5, 0xe9, 0x8e, 0xfe, 0x45, 0xfc, 0x14, 0xd5, 0xb7, 0xe2, 0x9f, 0xa2, 0xfa, 0x1c, 0x3f, - 0xeb, 0xf4, 0xdb, 0x29, 0x80, 0x78, 0x0e, 0x50, 0xe5, 0xab, 0x9f, 0xcc, 0x09, 0x8d, 0x50, 0xd5, - 0xe2, 0xbb, 0x53, 0x97, 0xda, 0xdf, 0x59, 0x6a, 0x42, 0x13, 0x8f, 0x89, 0x9a, 0xe5, 0x07, 0xb0, - 0x36, 0x0d, 0xa7, 0x1f, 0xc1, 0x69, 0xef, 0xb5, 0x54, 0xfc, 0xa3, 0xbd, 0xdf, 0x78, 0xd4, 0xd2, - 0xd7, 0x79, 0xda, 0x07, 0x8f, 0x59, 0xba, 0xf6, 0x3f, 0x52, 0x50, 0x8a, 0xa6, 0x97, 0x7f, 0x37, - 0xb9, 0x2e, 0xaa, 0x88, 0xe2, 0xed, 0x65, 0xd6, 0x25, 0x7e, 0x6a, 0xb9, 0xd2, 0xbf, 0x48, 0x2e, - 0x93, 0x07, 0x6b, 0xd3, 0x2f, 0x17, 0xe8, 0x84, 0x47, 0xd3, 0x3a, 0xe1, 0xad, 0xa5, 0x3e, 0x19, - 0x7a, 0x5e, 0x7b, 0x76, 0x20, 0xb5, 0xba, 0xf8, 0x20, 0xfd, 0x7e, 0xaa, 0x76, 0x17, 0x56, 0x93, - 0xaf, 0xe6, 0xef, 0xec, 0xdd, 0xff, 0xcf, 0x19, 0x58, 0x9b, 0xae, 0x43, 0xa0, 0x1b, 0x42, 0xaa, - 0x06, 0xa6, 0xe3, 0x58, 0x89, 0x32, 0x6f, 0xc6, 0xd7, 0xa1, 0xac, 0x7d, 0x3b, 0x02, 0x6c, 0x50, - 0x84, 0xc5, 0x1b, 0x09, 0x76, 0x37, 0xf9, 0x73, 0x7b, 0x6f, 0x72, 0x08, 0xef, 0x6e, 0xb1, 0x31, - 0x2f, 0xe9, 0x1f, 0x1e, 0xfa, 0x95, 0x34, 0xaf, 0x24, 0x8a, 0x8d, 0x7f, 0x8c, 0x86, 0xcd, 0xfa, - 0xd6, 0xc4, 0xb5, 0x1c, 0x61, 0x45, 0xd0, 0xdf, 0x49, 0x42, 0xa3, 0xd2, 0xe1, 0x5f, 0xc9, 0xf2, - 0x35, 0x28, 0x75, 0x27, 0xc7, 0xba, 0x6c, 0xf8, 0xaf, 0x66, 0xf9, 0x4d, 0xd8, 0xd0, 0x58, 0x71, - 0xfd, 0x1f, 0xfb, 0x6b, 0xa8, 0x82, 0xd7, 0x1a, 0x6a, 0xbe, 0x74, 0x47, 0xd9, 0x5f, 0xcf, 0x62, - 0x17, 0xe8, 0x4a, 0xf0, 0xaf, 0x12, 0x9f, 0xe8, 0x02, 0x05, 0xfb, 0xb5, 0x2c, 0x5f, 0x07, 0xe8, - 0xf6, 0xa2, 0x0f, 0xfd, 0x46, 0x96, 0x97, 0x21, 0xdf, 0xed, 0x11, 0xb7, 0x1f, 0x65, 0xf9, 0x0d, - 0x60, 0xf1, 0x5b, 0x5d, 0x15, 0xf9, 0xb7, 0x54, 0x67, 0xa2, 0x32, 0xc7, 0xdf, 0xcc, 0xe2, 0xb8, - 0xc2, 0x59, 0x66, 0x7f, 0x3b, 0xcb, 0x19, 0x94, 0x13, 0x71, 0x3b, 0xf6, 0x77, 0xb2, 0x9c, 0x43, - 0x65, 0xdf, 0x0e, 0x02, 0xdb, 0x1d, 0xe8, 0x11, 0xfc, 0x3a, 0x7d, 0x79, 0x27, 0xba, 0x03, 0xc2, - 0x7e, 0x2b, 0xcb, 0x6f, 0x01, 0x4f, 0xe6, 0x2a, 0xf4, 0x8b, 0xbf, 0x4b, 0xd4, 0x4a, 0xed, 0x07, - 0x1a, 0xf6, 0xf7, 0x88, 0x1a, 0x25, 0x41, 0x03, 0xfe, 0x3e, 0x4d, 0x48, 0x33, 0xae, 0xa3, 0xd4, - 0xf0, 0x1f, 0x67, 0xef, 0xff, 0x94, 0xe2, 0xca, 0xc9, 0xd2, 0x23, 0xbe, 0x0a, 0x45, 0xc7, 0x73, - 0x07, 0x52, 0xfd, 0xa4, 0x61, 0x05, 0x4a, 0xc1, 0xd0, 0xf3, 0x25, 0x35, 0xe9, 0x42, 0x9a, 0x4b, - 0x57, 0x93, 0x55, 0x5d, 0xb9, 0x72, 0x48, 0x54, 0x9c, 0x4e, 0x9a, 0x03, 0x56, 0x8e, 0xaa, 0x3d, - 0xb3, 0x51, 0x45, 0x2a, 0x5d, 0x91, 0x0e, 0xaf, 0xa0, 0xb2, 0x3c, 0xa2, 0x4e, 0x7c, 0x47, 0x55, - 0xa6, 0x0a, 0x34, 0x46, 0xd5, 0x6f, 0x97, 0x8d, 0x87, 0x68, 0xf3, 0x96, 0x14, 0xd4, 0xfb, 0xbe, - 0xad, 0x2e, 0x37, 0xea, 0x42, 0x2f, 0x0b, 0xfb, 0x11, 0xd5, 0x32, 0x30, 0x71, 0xff, 0x37, 0x53, - 0xb0, 0x1a, 0x5e, 0x0c, 0xb6, 0x07, 0xb6, 0xab, 0x6a, 0x5b, 0xc3, 0x1f, 0x8a, 0xec, 0x3b, 0xf6, - 0x38, 0xfc, 0xe1, 0xb5, 0x75, 0x28, 0x5b, 0xbe, 0x39, 0x68, 0xb8, 0xd6, 0xb6, 0xef, 0x8d, 0x55, - 0xb7, 0x55, 0xe6, 0x49, 0xd5, 0xd4, 0x3e, 0x17, 0xc7, 0x88, 0x3e, 0x16, 0x3e, 0xcb, 0x52, 0x11, - 0xd9, 0xd0, 0xf4, 0x6d, 0x77, 0xd0, 0x3a, 0x97, 0xc2, 0x0d, 0x54, 0x6d, 0x6d, 0x19, 0x0a, 0x93, - 0x40, 0xf4, 0xcd, 0x40, 0xb0, 0x3c, 0x36, 0x8e, 0x27, 0xb6, 0x23, 0x6d, 0x57, 0xfd, 0xde, 0x59, - 0x54, 0x3c, 0x5b, 0xbc, 0xff, 0xfb, 0x29, 0x28, 0xd3, 0xca, 0xc7, 0x21, 0xd5, 0xd8, 0xaa, 0x28, - 0x43, 0x61, 0x2f, 0xfa, 0xbd, 0xab, 0x3c, 0xa4, 0x3b, 0xa7, 0x2a, 0xa4, 0xaa, 0x57, 0x5e, 0x5d, - 0xeb, 0x53, 0x3f, 0x7d, 0x95, 0xe5, 0x5f, 0x80, 0x1b, 0x86, 0x18, 0x79, 0x52, 0x3c, 0x33, 0x6d, - 0x99, 0xbc, 0x57, 0x92, 0x43, 0x07, 0x44, 0xbd, 0x0a, 0x2f, 0x92, 0xe4, 0xc9, 0x01, 0xc1, 0xcf, - 0x86, 0x90, 0x02, 0x0e, 0x9a, 0x20, 0xda, 0x23, 0x29, 0x46, 0x28, 0x1f, 0x7b, 0xb6, 0x8b, 0x5f, - 0xa3, 0xcb, 0xa4, 0x04, 0xa1, 0xd8, 0x3c, 0x82, 0xe0, 0xfe, 0x01, 0xdc, 0x5c, 0x1c, 0x51, 0x56, - 0xd7, 0x4c, 0xe9, 0x47, 0x56, 0xe9, 0xa6, 0xc1, 0x33, 0xdf, 0x56, 0xb7, 0x05, 0x4b, 0x90, 0xeb, - 0x3c, 0x77, 0x49, 0x1a, 0x36, 0xa0, 0x72, 0xe0, 0x25, 0x68, 0x58, 0xe6, 0x7e, 0x7f, 0x2a, 0x09, - 0x10, 0x4f, 0x4a, 0xd8, 0x89, 0x95, 0xc4, 0x2d, 0x9a, 0x94, 0x0a, 0x2f, 0xd3, 0xef, 0xe4, 0xab, - 0x2b, 0xf8, 0x3a, 0xf8, 0x6e, 0xa9, 0x2b, 0xf8, 0x51, 0x37, 0xb3, 0xea, 0x07, 0x70, 0xdc, 0xbe, - 0x70, 0x84, 0xc5, 0x72, 0xf7, 0xdf, 0x87, 0x75, 0x3d, 0xd4, 0xbe, 0x08, 0x82, 0xf0, 0x16, 0xca, - 0xa1, 0x6f, 0x9f, 0xa9, 0x6b, 0xfe, 0xab, 0x50, 0x3c, 0x14, 0x7e, 0xe0, 0xb9, 0xf4, 0x13, 0x07, - 0x00, 0xf9, 0xee, 0xd0, 0xf4, 0xf1, 0x1b, 0xf7, 0xbf, 0x06, 0x25, 0xba, 0x95, 0xf2, 0xd8, 0x76, - 0x2d, 0x1c, 0xc9, 0x96, 0x2e, 0xc4, 0x2e, 0x41, 0xae, 0xe9, 0x9d, 0xd1, 0xf8, 0x8a, 0xea, 0xa7, - 0x1e, 0x59, 0xfa, 0xfe, 0xb7, 0x81, 0xab, 0x70, 0x8e, 0x25, 0xce, 0x6d, 0x77, 0x10, 0xdd, 0x7d, - 0x06, 0xfa, 0x21, 0x03, 0x4b, 0x9c, 0x93, 0xb7, 0x54, 0x86, 0x42, 0xd8, 0x08, 0x7f, 0x4e, 0x61, - 0xc7, 0x9b, 0xb8, 0xf8, 0xb5, 0xa7, 0x70, 0x5d, 0xc9, 0x06, 0x7e, 0x9e, 0x6e, 0xbf, 0x5d, 0xea, - 0x63, 0xaa, 0xab, 0x43, 0x72, 0x12, 0x44, 0xb8, 0x2c, 0xc5, 0x6f, 0x02, 0x8f, 0xfc, 0xb3, 0x18, - 0x9e, 0xbe, 0x5f, 0x87, 0x6b, 0x0b, 0x9c, 0x64, 0x52, 0xb8, 0xca, 0x55, 0x60, 0x2b, 0xf7, 0x3f, - 0x82, 0x0d, 0xa5, 0x22, 0x0e, 0xd4, 0x6d, 0xa6, 0xf0, 0xb4, 0x7b, 0xd6, 0xde, 0x69, 0xab, 0x29, - 0x6a, 0xb6, 0xf6, 0xf6, 0x9e, 0xec, 0x35, 0x0c, 0x96, 0xa2, 0x85, 0xec, 0xf4, 0x8e, 0x9a, 0x9d, - 0x83, 0x83, 0x56, 0xb3, 0xd7, 0xda, 0x66, 0xe9, 0xad, 0xfb, 0x7f, 0xf8, 0xf3, 0x3b, 0xa9, 0x9f, - 0xfd, 0xfc, 0x4e, 0xea, 0xbf, 0xfe, 0xfc, 0x4e, 0xea, 0x47, 0x9f, 0xdd, 0x59, 0xf9, 0xd9, 0x67, - 0x77, 0x56, 0xfe, 0xd3, 0x67, 0x77, 0x56, 0x3e, 0x65, 0xb3, 0xff, 0xa3, 0xe2, 0x38, 0x4f, 0xd6, - 0xe9, 0xdb, 0xff, 0x27, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x6c, 0x34, 0x93, 0xbe, 0x62, 0x00, 0x00, + // 8775 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5d, 0x70, 0x24, 0xc9, + 0x71, 0x18, 0x8c, 0xf9, 0x9f, 0xc9, 0xc1, 0x00, 0x85, 0xda, 0xbf, 0xe1, 0x70, 0xb9, 0x5a, 0x0e, + 0x8f, 0x77, 0xcb, 0xe5, 0x11, 0x7b, 0xb7, 0x77, 0xc7, 0x3b, 0x9e, 0x78, 0x47, 0x0e, 0x06, 0x83, + 0xc5, 0xdc, 0x02, 0x18, 0xb0, 0x67, 0x76, 0x97, 0x77, 0x21, 0x7d, 0xf8, 0x1a, 0xd3, 0x85, 0x99, + 0x26, 0x7a, 0xba, 0x87, 0xdd, 0x35, 0x58, 0xe0, 0xc2, 0x76, 0xc8, 0xb6, 0x2c, 0x59, 0x6f, 0xb4, + 0xc2, 0xb2, 0xad, 0x07, 0x87, 0xa8, 0x37, 0x87, 0xc5, 0xb0, 0xc3, 0x0f, 0x0c, 0xcb, 0x0a, 0x2b, + 0xc2, 0xd6, 0x8b, 0x15, 0xe1, 0x17, 0xda, 0x7e, 0xb0, 0x5f, 0x1c, 0x76, 0xf0, 0x1e, 0x1d, 0xb2, + 0xc2, 0x7e, 0x52, 0x38, 0xfc, 0xe0, 0xc8, 0xac, 0xea, 0x9f, 0xf9, 0x01, 0x76, 0xf6, 0x24, 0x39, + 0xfc, 0x84, 0xae, 0xec, 0xcc, 0xec, 0xac, 0xaa, 0xac, 0xac, 0xcc, 0xac, 0xac, 0x01, 0xbc, 0x32, + 0x3e, 0x1d, 0x3c, 0x70, 0xec, 0xe3, 0x07, 0xe3, 0xe3, 0x07, 0x23, 0xcf, 0x12, 0xce, 0x83, 0xb1, + 0xef, 0x49, 0x2f, 0x50, 0x8d, 0x60, 0x93, 0x5a, 0xbc, 0x62, 0xba, 0x17, 0xf2, 0x62, 0x2c, 0x36, + 0x09, 0x5a, 0xbb, 0x3d, 0xf0, 0xbc, 0x81, 0x23, 0x14, 0xea, 0xf1, 0xe4, 0xe4, 0x41, 0x20, 0xfd, + 0x49, 0x5f, 0x2a, 0xe4, 0xfa, 0xcf, 0xb2, 0x70, 0xb3, 0x3b, 0x32, 0x7d, 0xb9, 0xe5, 0x78, 0xfd, + 0xd3, 0xae, 0x6b, 0x8e, 0x83, 0xa1, 0x27, 0xb7, 0xcc, 0x40, 0xf0, 0xd7, 0x21, 0x7f, 0x8c, 0xc0, + 0xa0, 0x9a, 0xba, 0x9b, 0xb9, 0x57, 0x7e, 0x78, 0x7d, 0x73, 0x8a, 0xf1, 0x26, 0x51, 0x18, 0x1a, + 0x87, 0xbf, 0x09, 0x05, 0x4b, 0x48, 0xd3, 0x76, 0x82, 0x6a, 0xfa, 0x6e, 0xea, 0x5e, 0xf9, 0xe1, + 0xad, 0x4d, 0xf5, 0xe1, 0xcd, 0xf0, 0xc3, 0x9b, 0x5d, 0xfa, 0xb0, 0x11, 0xe2, 0xf1, 0x77, 0xa1, + 0x78, 0x62, 0x3b, 0xe2, 0xb1, 0xb8, 0x08, 0xaa, 0x99, 0x2b, 0x69, 0xb6, 0xd2, 0xd5, 0x94, 0x11, + 0x21, 0xf3, 0x26, 0xac, 0x89, 0x73, 0xe9, 0x9b, 0x86, 0x70, 0x4c, 0x69, 0x7b, 0x6e, 0x50, 0xcd, + 0x92, 0x84, 0xb7, 0x66, 0x24, 0x0c, 0xdf, 0x13, 0xf9, 0x0c, 0x09, 0xbf, 0x0b, 0x65, 0xef, 0xf8, + 0x07, 0xa2, 0x2f, 0x7b, 0x17, 0x63, 0x11, 0x54, 0x73, 0x77, 0x33, 0xf7, 0x4a, 0x46, 0x12, 0xc4, + 0xbf, 0x05, 0xe5, 0xbe, 0xe7, 0x38, 0xa2, 0xaf, 0xbe, 0x91, 0xbf, 0xba, 0x5b, 0x49, 0x5c, 0xfe, + 0x36, 0xdc, 0xf0, 0xc5, 0xc8, 0x3b, 0x13, 0x56, 0x33, 0x82, 0x52, 0x3f, 0x8b, 0xf4, 0x99, 0xc5, + 0x2f, 0x79, 0x03, 0x2a, 0xbe, 0x96, 0x6f, 0xcf, 0x76, 0x4f, 0x83, 0x6a, 0x81, 0xba, 0xf5, 0xc5, + 0x4b, 0xba, 0x85, 0x38, 0xc6, 0x34, 0x05, 0x67, 0x90, 0x39, 0x15, 0x17, 0xd5, 0xd2, 0xdd, 0xd4, + 0xbd, 0x92, 0x81, 0x8f, 0xfc, 0x7d, 0xa8, 0x7a, 0xbe, 0x3d, 0xb0, 0x5d, 0xd3, 0x69, 0xfa, 0xc2, + 0x94, 0xc2, 0xea, 0xd9, 0x23, 0x11, 0x48, 0x73, 0x34, 0xae, 0xc2, 0xdd, 0xd4, 0xbd, 0x8c, 0x71, + 0xe9, 0x7b, 0xfe, 0x96, 0x9a, 0xa1, 0xb6, 0x7b, 0xe2, 0x55, 0xcb, 0xba, 0xfb, 0xd3, 0xb2, 0xec, + 0xe8, 0xd7, 0x46, 0x84, 0x58, 0xff, 0xb3, 0x34, 0xe4, 0xbb, 0xc2, 0xf4, 0xfb, 0xc3, 0xda, 0xaf, + 0xa7, 0x20, 0x6f, 0x88, 0x60, 0xe2, 0x48, 0x5e, 0x83, 0xa2, 0x1a, 0xdb, 0xb6, 0x55, 0x4d, 0x91, + 0x74, 0x51, 0xfb, 0xf3, 0xe8, 0xce, 0x26, 0x64, 0x47, 0x42, 0x9a, 0xd5, 0x0c, 0x8d, 0x50, 0x6d, + 0x46, 0x2a, 0xf5, 0xf9, 0xcd, 0x7d, 0x21, 0x4d, 0x83, 0xf0, 0x6a, 0x9f, 0xa5, 0x20, 0x8b, 0x4d, + 0x7e, 0x1b, 0x4a, 0x43, 0x7b, 0x30, 0x74, 0xec, 0xc1, 0x50, 0x6a, 0x41, 0x62, 0x00, 0xff, 0x10, + 0xd6, 0xa3, 0x86, 0x61, 0xba, 0x03, 0x81, 0x12, 0x2d, 0x52, 0x7e, 0x7a, 0x69, 0xcc, 0x22, 0xf3, + 0x2a, 0x14, 0x68, 0x3d, 0xb4, 0x2d, 0xd2, 0xe8, 0x92, 0x11, 0x36, 0x51, 0xdd, 0xc2, 0x99, 0x7a, + 0x2c, 0x2e, 0xaa, 0x59, 0x7a, 0x9b, 0x04, 0xf1, 0x06, 0xac, 0x87, 0xcd, 0x6d, 0x3d, 0x1a, 0xb9, + 0xab, 0x47, 0x63, 0x16, 0xbf, 0xfe, 0x1f, 0xdb, 0x90, 0xa3, 0x65, 0xc9, 0xd7, 0x20, 0x6d, 0x87, + 0x03, 0x9d, 0xb6, 0x2d, 0xfe, 0x00, 0xf2, 0x27, 0xb6, 0x70, 0xac, 0x17, 0x8e, 0xb0, 0x46, 0xe3, + 0x2d, 0x58, 0xf5, 0x45, 0x20, 0x7d, 0x5b, 0x6b, 0xbf, 0x5a, 0xa0, 0x5f, 0x5e, 0x64, 0x03, 0x36, + 0x8d, 0x04, 0xa2, 0x31, 0x45, 0x86, 0xdd, 0xee, 0x0f, 0x6d, 0xc7, 0xf2, 0x85, 0xdb, 0xb6, 0xd4, + 0x3a, 0x2d, 0x19, 0x49, 0x10, 0xbf, 0x07, 0xeb, 0xc7, 0x66, 0xff, 0x74, 0xe0, 0x7b, 0x13, 0x17, + 0x17, 0x84, 0xe7, 0x53, 0xb7, 0x4b, 0xc6, 0x2c, 0x98, 0xbf, 0x01, 0x39, 0xd3, 0xb1, 0x07, 0x2e, + 0xad, 0xc4, 0xb5, 0xb9, 0x49, 0x57, 0xb2, 0x34, 0x10, 0xc3, 0x50, 0x88, 0x7c, 0x17, 0x2a, 0x67, + 0xc2, 0x97, 0x76, 0xdf, 0x74, 0x08, 0x5e, 0x2d, 0x10, 0x65, 0x7d, 0x21, 0xe5, 0xd3, 0x24, 0xa6, + 0x31, 0x4d, 0xc8, 0xdb, 0x00, 0x01, 0x9a, 0x49, 0x9a, 0x4e, 0xbd, 0x16, 0x5e, 0x5b, 0xc8, 0xa6, + 0xe9, 0xb9, 0x52, 0xb8, 0x72, 0xb3, 0x1b, 0xa1, 0xef, 0xae, 0x18, 0x09, 0x62, 0xfe, 0x2e, 0x64, + 0xa5, 0x38, 0x97, 0xd5, 0xb5, 0x2b, 0x46, 0x34, 0x64, 0xd2, 0x13, 0xe7, 0x72, 0x77, 0xc5, 0x20, + 0x02, 0x24, 0xc4, 0x45, 0x56, 0x5d, 0x5f, 0x82, 0x10, 0xd7, 0x25, 0x12, 0x22, 0x01, 0xff, 0x00, + 0xf2, 0x8e, 0x79, 0xe1, 0x4d, 0x64, 0x95, 0x11, 0xe9, 0x57, 0xae, 0x24, 0xdd, 0x23, 0xd4, 0xdd, + 0x15, 0x43, 0x13, 0xf1, 0xb7, 0x21, 0x63, 0xd9, 0x67, 0xd5, 0x0d, 0xa2, 0xbd, 0x7b, 0x25, 0xed, + 0xb6, 0x7d, 0xb6, 0xbb, 0x62, 0x20, 0x3a, 0x6f, 0x42, 0xf1, 0xd8, 0xf3, 0x4e, 0x47, 0xa6, 0x7f, + 0x5a, 0xe5, 0x44, 0xfa, 0xd5, 0x2b, 0x49, 0xb7, 0x34, 0xf2, 0xee, 0x8a, 0x11, 0x11, 0x62, 0x97, + 0xed, 0xbe, 0xe7, 0x56, 0xaf, 0x2d, 0xd1, 0xe5, 0x76, 0xdf, 0x73, 0xb1, 0xcb, 0x48, 0x80, 0x84, + 0x8e, 0xed, 0x9e, 0x56, 0xaf, 0x2f, 0x41, 0x88, 0x96, 0x13, 0x09, 0x91, 0x00, 0xc5, 0xb6, 0x4c, + 0x69, 0x9e, 0xd9, 0xe2, 0x79, 0xf5, 0xc6, 0x12, 0x62, 0x6f, 0x6b, 0x64, 0x14, 0x3b, 0x24, 0x44, + 0x26, 0xe1, 0xd2, 0xac, 0xde, 0x5c, 0x82, 0x49, 0x68, 0xd1, 0x91, 0x49, 0x48, 0xc8, 0xff, 0x3f, + 0xd8, 0x38, 0x11, 0xa6, 0x9c, 0xf8, 0xc2, 0x8a, 0x37, 0xba, 0x5b, 0xc4, 0x6d, 0xf3, 0xea, 0xb9, + 0x9f, 0xa5, 0xda, 0x5d, 0x31, 0xe6, 0x59, 0xf1, 0xf7, 0x21, 0xe7, 0x98, 0x52, 0x9c, 0x57, 0xab, + 0xc4, 0xb3, 0xfe, 0x02, 0xa5, 0x90, 0xe2, 0x7c, 0x77, 0xc5, 0x50, 0x24, 0xfc, 0xfb, 0xb0, 0x2e, + 0xcd, 0x63, 0x47, 0x74, 0x4e, 0x34, 0x42, 0x50, 0xfd, 0x02, 0x71, 0x79, 0xfd, 0x6a, 0x75, 0x9e, + 0xa6, 0xd9, 0x5d, 0x31, 0x66, 0xd9, 0xa0, 0x54, 0x04, 0xaa, 0xd6, 0x96, 0x90, 0x8a, 0xf8, 0xa1, + 0x54, 0x44, 0xc2, 0xf7, 0xa0, 0x4c, 0x0f, 0x4d, 0xcf, 0x99, 0x8c, 0xdc, 0xea, 0x17, 0x89, 0xc3, + 0xbd, 0x17, 0x73, 0x50, 0xf8, 0xbb, 0x2b, 0x46, 0x92, 0x1c, 0x27, 0x91, 0x9a, 0x86, 0xf7, 0xbc, + 0x7a, 0x7b, 0x89, 0x49, 0xec, 0x69, 0x64, 0x9c, 0xc4, 0x90, 0x10, 0x97, 0xde, 0x73, 0xdb, 0x1a, + 0x08, 0x59, 0xfd, 0xd2, 0x12, 0x4b, 0xef, 0x19, 0xa1, 0xe2, 0xd2, 0x53, 0x44, 0xa8, 0xc6, 0xfd, + 0xa1, 0x29, 0xab, 0x77, 0x96, 0x50, 0xe3, 0xe6, 0xd0, 0x24, 0x5b, 0x81, 0x04, 0xb5, 0x4f, 0x61, + 0x35, 0x69, 0x95, 0x39, 0x87, 0xac, 0x2f, 0x4c, 0xb5, 0x23, 0x14, 0x0d, 0x7a, 0x46, 0x98, 0xb0, + 0x6c, 0x49, 0x3b, 0x42, 0xd1, 0xa0, 0x67, 0x7e, 0x13, 0xf2, 0xca, 0x37, 0x21, 0x83, 0x5f, 0x34, + 0x74, 0x0b, 0x71, 0x2d, 0xdf, 0x1c, 0xd0, 0xbe, 0x55, 0x34, 0xe8, 0x19, 0x71, 0x2d, 0xdf, 0x1b, + 0x77, 0x5c, 0x32, 0xd8, 0x45, 0x43, 0xb7, 0x6a, 0x7f, 0xf0, 0x3e, 0x14, 0xb4, 0x50, 0xb5, 0x7f, + 0x98, 0x82, 0xbc, 0x32, 0x28, 0xfc, 0x3b, 0x90, 0x0b, 0xe4, 0x85, 0x23, 0x48, 0x86, 0xb5, 0x87, + 0x5f, 0x5b, 0xc2, 0x08, 0x6d, 0x76, 0x91, 0xc0, 0x50, 0x74, 0x75, 0x03, 0x72, 0xd4, 0xe6, 0x05, + 0xc8, 0x18, 0xde, 0x73, 0xb6, 0xc2, 0x01, 0xf2, 0x6a, 0xb2, 0x58, 0x0a, 0x81, 0xdb, 0xf6, 0x19, + 0x4b, 0x23, 0x70, 0x57, 0x98, 0x96, 0xf0, 0x59, 0x86, 0x57, 0xa0, 0x14, 0x4e, 0x4b, 0xc0, 0xb2, + 0x9c, 0xc1, 0x6a, 0x62, 0xc2, 0x03, 0x96, 0xab, 0xfd, 0xcf, 0x2c, 0x64, 0x71, 0xfd, 0xf3, 0x57, + 0xa0, 0x22, 0x4d, 0x7f, 0x20, 0x94, 0x23, 0x1c, 0x39, 0x29, 0xd3, 0x40, 0xfe, 0x41, 0xd8, 0x87, + 0x34, 0xf5, 0xe1, 0xb5, 0x17, 0xda, 0x95, 0xa9, 0x1e, 0x24, 0x76, 0xe1, 0xcc, 0x72, 0xbb, 0xf0, + 0x0e, 0x14, 0xd1, 0x9c, 0x75, 0xed, 0x4f, 0x05, 0x0d, 0xfd, 0xda, 0xc3, 0xfb, 0x2f, 0xfe, 0x64, + 0x5b, 0x53, 0x18, 0x11, 0x2d, 0x6f, 0x43, 0xa9, 0x6f, 0xfa, 0x16, 0x09, 0x43, 0xb3, 0xb5, 0xf6, + 0xf0, 0xeb, 0x2f, 0x66, 0xd4, 0x0c, 0x49, 0x8c, 0x98, 0x9a, 0x77, 0xa0, 0x6c, 0x89, 0xa0, 0xef, + 0xdb, 0x63, 0x32, 0x6f, 0x6a, 0x2f, 0xfe, 0xc6, 0x8b, 0x99, 0x6d, 0xc7, 0x44, 0x46, 0x92, 0x03, + 0x7a, 0x64, 0x7e, 0x64, 0xdf, 0x0a, 0xe4, 0x20, 0xc4, 0x80, 0xfa, 0xbb, 0x50, 0x0c, 0xfb, 0xc3, + 0x57, 0xa1, 0x88, 0x7f, 0x0f, 0x3c, 0x57, 0xb0, 0x15, 0x9c, 0x5b, 0x6c, 0x75, 0x47, 0xa6, 0xe3, + 0xb0, 0x14, 0x5f, 0x03, 0xc0, 0xe6, 0xbe, 0xb0, 0xec, 0xc9, 0x88, 0xa5, 0xeb, 0xbf, 0x18, 0x6a, + 0x4b, 0x11, 0xb2, 0x87, 0xe6, 0x00, 0x29, 0x56, 0xa1, 0x18, 0x9a, 0x6b, 0x96, 0x42, 0xfa, 0x6d, + 0x33, 0x18, 0x1e, 0x7b, 0xa6, 0x6f, 0xb1, 0x34, 0x2f, 0x43, 0xa1, 0xe1, 0xf7, 0x87, 0xf6, 0x99, + 0x60, 0x99, 0xfa, 0x03, 0x28, 0x27, 0xe4, 0x45, 0x16, 0xfa, 0xa3, 0x25, 0xc8, 0x35, 0x2c, 0x4b, + 0x58, 0x2c, 0x85, 0x04, 0xba, 0x83, 0x2c, 0x5d, 0xff, 0x3a, 0x94, 0xa2, 0xd1, 0x42, 0x74, 0xdc, + 0xb8, 0xd9, 0x0a, 0x3e, 0x21, 0x98, 0xa5, 0x50, 0x2b, 0xdb, 0xae, 0x63, 0xbb, 0x82, 0xa5, 0x6b, + 0xff, 0x3f, 0xa9, 0x2a, 0xff, 0xf6, 0xf4, 0x82, 0x78, 0xf5, 0x45, 0x3b, 0xeb, 0xf4, 0x6a, 0xf8, + 0x62, 0xa2, 0x7f, 0x7b, 0x36, 0x09, 0x57, 0x84, 0xec, 0xb6, 0x27, 0x03, 0x96, 0xaa, 0xfd, 0xb7, + 0x34, 0x14, 0xc3, 0x0d, 0x15, 0x63, 0x82, 0x89, 0xef, 0x68, 0x85, 0xc6, 0x47, 0x7e, 0x1d, 0x72, + 0xd2, 0x96, 0x5a, 0x8d, 0x4b, 0x86, 0x6a, 0xa0, 0xaf, 0x96, 0x9c, 0x59, 0xe5, 0xc0, 0xce, 0x4e, + 0x95, 0x3d, 0x32, 0x07, 0x62, 0xd7, 0x0c, 0x86, 0xda, 0x85, 0x8d, 0x01, 0x48, 0x7f, 0x62, 0x9e, + 0xa1, 0xce, 0xd1, 0x7b, 0xe5, 0xc5, 0x25, 0x41, 0xfc, 0x2d, 0xc8, 0x62, 0x07, 0xb5, 0xd2, 0xfc, + 0xc2, 0x4c, 0x87, 0x51, 0x4d, 0x0e, 0x7d, 0x81, 0xd3, 0xb3, 0x89, 0x11, 0x98, 0x41, 0xc8, 0xfc, + 0x55, 0x58, 0x53, 0x8b, 0xb0, 0x13, 0xc6, 0x0f, 0x05, 0xe2, 0x3c, 0x03, 0xe5, 0x0d, 0x1c, 0x4e, + 0x53, 0x8a, 0x6a, 0x71, 0x09, 0xfd, 0x0e, 0x07, 0x67, 0xb3, 0x8b, 0x24, 0x86, 0xa2, 0xac, 0xbf, + 0x83, 0x63, 0x6a, 0x4a, 0x81, 0xd3, 0xdc, 0x1a, 0x8d, 0xe5, 0x85, 0x52, 0x9a, 0x1d, 0x21, 0xfb, + 0x43, 0xdb, 0x1d, 0xb0, 0x94, 0x1a, 0x62, 0x9c, 0x44, 0x42, 0xf1, 0x7d, 0xcf, 0x67, 0x99, 0x5a, + 0x0d, 0xb2, 0xa8, 0xa3, 0x68, 0x24, 0x5d, 0x73, 0x24, 0xf4, 0x48, 0xd3, 0x73, 0xed, 0x1a, 0x6c, + 0xcc, 0xed, 0xc7, 0xb5, 0x7f, 0x91, 0x57, 0x1a, 0x82, 0x14, 0xe4, 0x0b, 0x6a, 0x0a, 0x72, 0xf3, + 0x5e, 0xca, 0xc6, 0x20, 0x97, 0x69, 0x1b, 0xf3, 0x01, 0xe4, 0xb0, 0x63, 0xa1, 0x89, 0x59, 0x82, + 0x7c, 0x1f, 0xd1, 0x0d, 0x45, 0x85, 0x11, 0x4c, 0x7f, 0x28, 0xfa, 0xa7, 0xc2, 0xd2, 0xb6, 0x3e, + 0x6c, 0xa2, 0xd2, 0xf4, 0x13, 0xee, 0xb9, 0x6a, 0x90, 0x4a, 0xf4, 0x3d, 0xb7, 0x35, 0xf2, 0x7e, + 0x60, 0xd3, 0xbc, 0xa2, 0x4a, 0x84, 0x80, 0xf0, 0x6d, 0x1b, 0x75, 0x44, 0x4f, 0x5b, 0x0c, 0xa8, + 0xb5, 0x20, 0x47, 0xdf, 0xc6, 0x95, 0xa0, 0x64, 0x56, 0x99, 0x86, 0x57, 0x97, 0x93, 0x59, 0x8b, + 0x5c, 0xfb, 0x49, 0x1a, 0xb2, 0xd8, 0xe6, 0xf7, 0x21, 0xe7, 0x63, 0x1c, 0x46, 0xc3, 0x79, 0x59, + 0xcc, 0xa6, 0x50, 0xf8, 0x77, 0xb4, 0x2a, 0xa6, 0x97, 0x50, 0x96, 0xe8, 0x8b, 0x49, 0xb5, 0xbc, + 0x0e, 0xb9, 0xb1, 0xe9, 0x9b, 0x23, 0xbd, 0x4e, 0x54, 0xa3, 0xfe, 0xe3, 0x14, 0x64, 0x11, 0x89, + 0x6f, 0x40, 0xa5, 0x2b, 0x7d, 0xfb, 0x54, 0xc8, 0xa1, 0xef, 0x4d, 0x06, 0x43, 0xa5, 0x49, 0x8f, + 0xc5, 0x85, 0xb2, 0x37, 0xca, 0x20, 0x48, 0xd3, 0xb1, 0xfb, 0x2c, 0x8d, 0x5a, 0xb5, 0xe5, 0x39, + 0x16, 0xcb, 0xf0, 0x75, 0x28, 0x3f, 0x71, 0x2d, 0xe1, 0x07, 0x7d, 0xcf, 0x17, 0x16, 0xcb, 0xea, + 0xd5, 0x7d, 0xca, 0x72, 0xb4, 0x97, 0x89, 0x73, 0x49, 0xb1, 0x10, 0xcb, 0xf3, 0x6b, 0xb0, 0xbe, + 0x35, 0x1d, 0x20, 0xb1, 0x02, 0xda, 0xa4, 0x7d, 0xe1, 0xa2, 0x92, 0xb1, 0xa2, 0x52, 0x62, 0xef, + 0x07, 0x36, 0x2b, 0xe1, 0xc7, 0xd4, 0x3a, 0x61, 0x50, 0xff, 0x97, 0xa9, 0xd0, 0x72, 0x54, 0xa0, + 0x74, 0x68, 0xfa, 0xe6, 0xc0, 0x37, 0xc7, 0x28, 0x5f, 0x19, 0x0a, 0x6a, 0xe3, 0x7c, 0x53, 0x59, + 0x37, 0xd5, 0x78, 0xa8, 0x6c, 0xa3, 0x6a, 0xbc, 0xc5, 0x32, 0x71, 0xe3, 0x6d, 0x96, 0xc5, 0x6f, + 0x7c, 0x6f, 0xe2, 0x49, 0xc1, 0x72, 0x64, 0xeb, 0x3c, 0x4b, 0xb0, 0x3c, 0x02, 0x7b, 0x68, 0x51, + 0x58, 0x01, 0xfb, 0xdc, 0x44, 0xfd, 0x39, 0xf6, 0xce, 0x59, 0x11, 0xc5, 0xc0, 0x61, 0x14, 0x16, + 0x2b, 0xe1, 0x9b, 0x83, 0xc9, 0xe8, 0x58, 0x60, 0x37, 0x01, 0xdf, 0xf4, 0xbc, 0xc1, 0xc0, 0x11, + 0xac, 0x8c, 0x63, 0x90, 0x30, 0xbe, 0x6c, 0x95, 0x2c, 0xad, 0xe9, 0x38, 0xde, 0x44, 0xb2, 0x4a, + 0xed, 0xcf, 0x32, 0x90, 0xc5, 0xe8, 0x06, 0xd7, 0xce, 0x10, 0xed, 0x8c, 0x5e, 0x3b, 0xf8, 0x1c, + 0xad, 0xc0, 0x74, 0xbc, 0x02, 0xf9, 0xfb, 0x7a, 0xa6, 0x33, 0x4b, 0x58, 0x59, 0x64, 0x9c, 0x9c, + 0x64, 0x0e, 0xd9, 0x91, 0x3d, 0x12, 0xda, 0xd6, 0xd1, 0x33, 0xc2, 0x02, 0xdc, 0x8f, 0x73, 0x94, + 0x3c, 0xa1, 0x67, 0x5c, 0x35, 0x26, 0x6e, 0x0b, 0x0d, 0x49, 0x6b, 0x20, 0x63, 0x84, 0xcd, 0x05, + 0xd6, 0xab, 0xb4, 0xd0, 0x7a, 0x7d, 0x10, 0x5a, 0xaf, 0xc2, 0x12, 0xab, 0x9e, 0xc4, 0x4c, 0x5a, + 0xae, 0xd8, 0x68, 0x14, 0x97, 0x27, 0x4f, 0x6c, 0x26, 0xdb, 0x5a, 0x6b, 0xe3, 0x8d, 0xae, 0xa8, + 0x46, 0x99, 0xa5, 0x70, 0x36, 0x69, 0xb9, 0x2a, 0x9b, 0xf7, 0xd4, 0xb6, 0x84, 0xc7, 0x32, 0xb4, + 0x11, 0x4e, 0x2c, 0xdb, 0x63, 0x59, 0xf4, 0xbc, 0x0e, 0xb7, 0x77, 0x58, 0xae, 0xfe, 0x6a, 0x62, + 0x4b, 0x6a, 0x4c, 0xa4, 0xa7, 0xd8, 0x90, 0xfa, 0xa6, 0x94, 0x36, 0x1e, 0x0b, 0x8b, 0xa5, 0xeb, + 0xdf, 0x5c, 0x60, 0x66, 0x2b, 0x50, 0x7a, 0x32, 0x76, 0x3c, 0xd3, 0xba, 0xc2, 0xce, 0xae, 0x02, + 0xc4, 0x51, 0x75, 0xed, 0x4f, 0x7e, 0x21, 0xde, 0xce, 0xd1, 0x17, 0x0d, 0xbc, 0x89, 0xdf, 0x17, + 0x64, 0x42, 0x4a, 0x86, 0x6e, 0xf1, 0xef, 0x42, 0x0e, 0xdf, 0x87, 0x69, 0x9c, 0xfb, 0x4b, 0xc5, + 0x72, 0x9b, 0x4f, 0x6d, 0xf1, 0xdc, 0x50, 0x84, 0xfc, 0x0e, 0x80, 0xd9, 0x97, 0xf6, 0x99, 0x40, + 0xa0, 0x5e, 0xec, 0x09, 0x08, 0x7f, 0x27, 0xe9, 0xbe, 0x5c, 0x9d, 0x87, 0x4c, 0xf8, 0x35, 0xdc, + 0x80, 0x32, 0x2e, 0xdd, 0x71, 0xc7, 0xc7, 0xd5, 0x5e, 0x5d, 0x25, 0xc2, 0x37, 0x96, 0x13, 0xef, + 0x51, 0x44, 0x68, 0x24, 0x99, 0xf0, 0x27, 0xb0, 0xaa, 0x72, 0x6a, 0x9a, 0x69, 0x85, 0x98, 0xbe, + 0xb9, 0x1c, 0xd3, 0x4e, 0x4c, 0x69, 0x4c, 0xb1, 0x99, 0x4f, 0x4b, 0xe6, 0x5e, 0x3a, 0x2d, 0xf9, + 0x2a, 0xac, 0xf5, 0xa6, 0x57, 0x81, 0xda, 0x2a, 0x66, 0xa0, 0xbc, 0x0e, 0xab, 0x76, 0x10, 0x67, + 0x45, 0x29, 0x47, 0x52, 0x34, 0xa6, 0x60, 0xb5, 0x7f, 0x97, 0x87, 0x2c, 0x8d, 0xfc, 0x6c, 0x8e, + 0xab, 0x39, 0x65, 0xd2, 0x1f, 0x2c, 0x3f, 0xd5, 0x33, 0x2b, 0x9e, 0x2c, 0x48, 0x26, 0x61, 0x41, + 0xbe, 0x0b, 0xb9, 0xc0, 0xf3, 0x65, 0x38, 0xbd, 0x4b, 0x2a, 0x51, 0xd7, 0xf3, 0xa5, 0xa1, 0x08, + 0xf9, 0x0e, 0x14, 0x4e, 0x6c, 0x47, 0xe2, 0xa4, 0xa8, 0xc1, 0x7b, 0x7d, 0x39, 0x1e, 0x3b, 0x44, + 0x64, 0x84, 0xc4, 0x7c, 0x2f, 0xa9, 0x6c, 0x79, 0xe2, 0xb4, 0xb9, 0x1c, 0xa7, 0x45, 0x3a, 0x78, + 0x1f, 0x58, 0xdf, 0x3b, 0x13, 0xbe, 0x91, 0x48, 0x4c, 0xaa, 0x4d, 0x7a, 0x0e, 0xce, 0x6b, 0x50, + 0x1c, 0xda, 0x96, 0x40, 0x3f, 0x87, 0x6c, 0x4c, 0xd1, 0x88, 0xda, 0xfc, 0x31, 0x14, 0x29, 0x3e, + 0x40, 0xab, 0x58, 0x7a, 0xe9, 0xc1, 0x57, 0xa1, 0x4a, 0xc8, 0x00, 0x3f, 0x44, 0x1f, 0xdf, 0xb1, + 0x25, 0xe5, 0xa7, 0x8b, 0x46, 0xd4, 0x46, 0x81, 0x49, 0xdf, 0x93, 0x02, 0x97, 0x95, 0xc0, 0xb3, + 0x70, 0xfe, 0x36, 0xdc, 0x20, 0xd8, 0xcc, 0x26, 0x89, 0x4b, 0x0d, 0x99, 0x2e, 0x7e, 0x89, 0x0e, + 0xcb, 0xd8, 0x1c, 0x88, 0x3d, 0x7b, 0x64, 0xcb, 0x6a, 0xe5, 0x6e, 0xea, 0x5e, 0xce, 0x88, 0x01, + 0xfc, 0x75, 0xd8, 0xb0, 0xc4, 0x89, 0x39, 0x71, 0x64, 0x4f, 0x8c, 0xc6, 0x8e, 0x29, 0x45, 0xdb, + 0x22, 0x1d, 0x2d, 0x19, 0xf3, 0x2f, 0xf8, 0x1b, 0x70, 0x4d, 0x03, 0x3b, 0xd1, 0xa9, 0x42, 0xdb, + 0xa2, 0xf4, 0x5d, 0xc9, 0x58, 0xf4, 0xaa, 0xbe, 0xaf, 0xcd, 0x30, 0x6e, 0xa0, 0x18, 0xa7, 0x86, + 0x06, 0x34, 0x90, 0x6a, 0x47, 0x7e, 0x64, 0x3a, 0x8e, 0xf0, 0x2f, 0x54, 0x90, 0xfb, 0xd8, 0x74, + 0x8f, 0x4d, 0x97, 0x65, 0x68, 0x8f, 0x35, 0x1d, 0xe1, 0x5a, 0xa6, 0xaf, 0x76, 0xe4, 0x47, 0xb4, + 0xa1, 0xe7, 0xea, 0xf7, 0x20, 0x4b, 0x43, 0x5a, 0x82, 0x9c, 0x8a, 0x92, 0x28, 0x62, 0xd6, 0x11, + 0x12, 0x59, 0xe4, 0x3d, 0x5c, 0x7e, 0x2c, 0x5d, 0xfb, 0xfd, 0x0c, 0x14, 0xc3, 0xc1, 0x0b, 0xcf, + 0x10, 0x52, 0xf1, 0x19, 0x02, 0xba, 0x71, 0xc1, 0x53, 0x3b, 0xb0, 0x8f, 0xb5, 0x5b, 0x5a, 0x34, + 0x62, 0x00, 0x7a, 0x42, 0xcf, 0x6d, 0x4b, 0x0e, 0x69, 0xcd, 0xe4, 0x0c, 0xd5, 0xe0, 0xf7, 0x60, + 0xdd, 0xc2, 0x71, 0x70, 0xfb, 0xce, 0xc4, 0x12, 0x3d, 0xdc, 0x45, 0x55, 0x9a, 0x60, 0x16, 0xcc, + 0x3f, 0x06, 0x90, 0xf6, 0x48, 0xec, 0x78, 0xfe, 0xc8, 0x94, 0x3a, 0x36, 0xf8, 0xd6, 0xcb, 0x69, + 0xf5, 0x66, 0x2f, 0x62, 0x60, 0x24, 0x98, 0x21, 0x6b, 0xfc, 0x9a, 0x66, 0x5d, 0xf8, 0x5c, 0xac, + 0xb7, 0x23, 0x06, 0x46, 0x82, 0x59, 0xfd, 0x97, 0x00, 0xe2, 0x37, 0xfc, 0x26, 0xf0, 0x7d, 0xcf, + 0x95, 0xc3, 0xc6, 0xf1, 0xb1, 0xbf, 0x25, 0x4e, 0x3c, 0x5f, 0x6c, 0x9b, 0xb8, 0xad, 0xdd, 0x80, + 0x8d, 0x08, 0xde, 0x38, 0x91, 0xc2, 0x47, 0x30, 0x0d, 0x7d, 0x77, 0xe8, 0xf9, 0x52, 0xf9, 0x56, + 0xf4, 0xf8, 0xa4, 0xcb, 0x32, 0xb8, 0x95, 0xb6, 0xbb, 0x1d, 0x96, 0xad, 0xdf, 0x03, 0x88, 0xbb, + 0x44, 0x31, 0x08, 0x3d, 0xbd, 0xf9, 0x50, 0x47, 0x24, 0xd4, 0x7a, 0xf8, 0x36, 0x4b, 0xd5, 0xfe, + 0x38, 0x03, 0x59, 0x34, 0x35, 0x18, 0x7e, 0x25, 0xd7, 0x85, 0x9a, 0xbe, 0x24, 0xe8, 0xf3, 0x19, + 0x48, 0xe4, 0x9d, 0x34, 0x90, 0xef, 0x41, 0xb9, 0x3f, 0x09, 0xa4, 0x37, 0xa2, 0xdd, 0x41, 0x1f, + 0xc0, 0xdc, 0x9c, 0x4b, 0x64, 0x3c, 0x35, 0x9d, 0x89, 0x30, 0x92, 0xa8, 0xfc, 0x1d, 0xc8, 0x9f, + 0xa8, 0x89, 0x50, 0xa9, 0x8c, 0x2f, 0x5d, 0xb2, 0x81, 0xe8, 0xc1, 0xd6, 0xc8, 0xd8, 0x2f, 0x7b, + 0x4e, 0x89, 0x92, 0x20, 0xbd, 0x11, 0xe4, 0xa3, 0x8d, 0xe0, 0x97, 0x60, 0x4d, 0xa0, 0x5b, 0x71, + 0xe8, 0x98, 0x7d, 0x31, 0x12, 0x6e, 0x38, 0xf3, 0x6f, 0xbf, 0x44, 0x8f, 0xc9, 0x2f, 0xa1, 0x6e, + 0xcf, 0xf0, 0xaa, 0x7f, 0x55, 0x2f, 0xd2, 0x02, 0x64, 0x1a, 0x41, 0x5f, 0x87, 0xdd, 0x22, 0xe8, + 0x2b, 0x9f, 0xbe, 0x49, 0x1d, 0x66, 0xe9, 0xfa, 0x9b, 0x50, 0x8a, 0x78, 0x70, 0x06, 0xab, 0x07, + 0x9e, 0xec, 0x8e, 0x45, 0xdf, 0x3e, 0xb1, 0x85, 0xa5, 0x12, 0x09, 0x5d, 0x69, 0xfa, 0x52, 0x65, + 0xae, 0x5a, 0xae, 0xc5, 0xd2, 0xb5, 0xdf, 0x2b, 0x42, 0x5e, 0x59, 0x7c, 0xdd, 0xa5, 0x52, 0xd4, + 0xa5, 0xef, 0x41, 0xd1, 0x1b, 0x0b, 0xdf, 0x94, 0x9e, 0xaf, 0xd3, 0x05, 0xef, 0xbc, 0xcc, 0x0e, + 0xb2, 0xd9, 0xd1, 0xc4, 0x46, 0xc4, 0x66, 0x56, 0x5f, 0xd2, 0xf3, 0xfa, 0x72, 0x1f, 0x58, 0xb8, + 0x59, 0x1c, 0xfa, 0x48, 0x27, 0x2f, 0x74, 0xf0, 0x37, 0x07, 0xe7, 0x3d, 0x28, 0xf5, 0x3d, 0xd7, + 0xb2, 0xa3, 0xd4, 0xc1, 0xda, 0xc3, 0x6f, 0xbe, 0x94, 0x84, 0xcd, 0x90, 0xda, 0x88, 0x19, 0xf1, + 0xd7, 0x21, 0x77, 0x86, 0x8a, 0x44, 0x1a, 0x73, 0xb9, 0x9a, 0x29, 0x24, 0xfe, 0x09, 0x94, 0x7f, + 0x38, 0xb1, 0xfb, 0xa7, 0x9d, 0x64, 0x6a, 0xea, 0xbd, 0x97, 0x92, 0xe2, 0x7b, 0x31, 0xbd, 0x91, + 0x64, 0x96, 0x50, 0xde, 0xc2, 0x9f, 0x43, 0x79, 0x8b, 0xf3, 0xca, 0x6b, 0x40, 0xc5, 0x15, 0x81, + 0x14, 0xd6, 0x8e, 0x76, 0x10, 0xe0, 0x73, 0x38, 0x08, 0xd3, 0x2c, 0xea, 0x5f, 0x81, 0x62, 0x38, + 0xe1, 0x3c, 0x0f, 0xe9, 0x03, 0xf4, 0xc4, 0xf3, 0x90, 0xee, 0xf8, 0x4a, 0xdb, 0x1a, 0xa8, 0x6d, + 0xf5, 0x3f, 0x4d, 0x41, 0x29, 0x1a, 0xf4, 0xe9, 0x14, 0x57, 0xeb, 0x87, 0x13, 0xd3, 0x61, 0x29, + 0x8a, 0xd1, 0x3c, 0xa9, 0x5a, 0x64, 0xa9, 0x1e, 0xd1, 0x09, 0xb1, 0xcf, 0x32, 0xb4, 0x2f, 0x89, + 0x20, 0x60, 0x59, 0xce, 0x61, 0x4d, 0x83, 0x3b, 0xbe, 0x42, 0xcd, 0x61, 0x08, 0x87, 0x6f, 0x43, + 0x40, 0x5e, 0x6d, 0x63, 0xa7, 0x42, 0x85, 0xa8, 0x07, 0x9e, 0xa4, 0x46, 0x11, 0x85, 0x6a, 0xbb, + 0xac, 0x84, 0xdf, 0x3c, 0xf0, 0x64, 0xdb, 0x65, 0x10, 0xc7, 0x04, 0xe5, 0xf0, 0xf3, 0xd4, 0x5a, + 0xa5, 0x88, 0xc3, 0x71, 0xda, 0x2e, 0xab, 0xe8, 0x17, 0xaa, 0xb5, 0x86, 0x1c, 0x5b, 0xe7, 0x66, + 0x1f, 0xc9, 0xd7, 0xf9, 0x1a, 0x00, 0xd2, 0xe8, 0x36, 0xc3, 0x25, 0xd9, 0x3a, 0xb7, 0x03, 0x19, + 0xb0, 0x8d, 0xfa, 0xbf, 0x4d, 0x41, 0x39, 0x31, 0xc1, 0x18, 0x73, 0x10, 0x22, 0xda, 0x71, 0x15, + 0x82, 0x7c, 0x8c, 0xc3, 0xe8, 0x5b, 0xa1, 0x8d, 0xee, 0x79, 0xf8, 0x98, 0xc6, 0xef, 0xf5, 0xbc, + 0x91, 0xe7, 0xfb, 0xde, 0x73, 0xb5, 0xdf, 0xee, 0x99, 0x81, 0x7c, 0x26, 0xc4, 0x29, 0xcb, 0x62, + 0x57, 0x9b, 0x13, 0xdf, 0x17, 0xae, 0x02, 0xe4, 0x48, 0x38, 0x71, 0xae, 0x5a, 0x79, 0x64, 0x8a, + 0xc8, 0xb4, 0x09, 0xb0, 0x02, 0x1a, 0x02, 0x8d, 0xad, 0x20, 0x45, 0x44, 0x40, 0x74, 0xd5, 0x2c, + 0x61, 0x58, 0xaf, 0xc2, 0xe2, 0xce, 0xc9, 0xb6, 0x79, 0x11, 0x34, 0x06, 0x1e, 0x83, 0x59, 0xe0, + 0x81, 0xf7, 0x9c, 0x95, 0x6b, 0x13, 0x80, 0x38, 0x10, 0xc0, 0x00, 0x08, 0x15, 0x22, 0x4a, 0x5c, + 0xeb, 0x16, 0xef, 0x00, 0xe0, 0x13, 0x61, 0x86, 0x51, 0xd0, 0x4b, 0x78, 0x67, 0x44, 0x67, 0x24, + 0x58, 0xd4, 0xfe, 0x2a, 0x94, 0xa2, 0x17, 0x18, 0xf7, 0x92, 0x1f, 0x15, 0x7d, 0x36, 0x6c, 0xa2, + 0x53, 0x60, 0xbb, 0x96, 0x38, 0x27, 0xbb, 0x92, 0x33, 0x54, 0x03, 0xa5, 0x1c, 0xda, 0x96, 0x25, + 0xdc, 0xf0, 0x78, 0x41, 0xb5, 0x16, 0x1d, 0x02, 0x67, 0x17, 0x1e, 0x02, 0xd7, 0x7e, 0x19, 0xca, + 0x89, 0x48, 0xe5, 0xd2, 0x6e, 0x27, 0x04, 0x4b, 0x4f, 0x0b, 0x76, 0x1b, 0x4a, 0x61, 0xe1, 0x41, + 0x40, 0xbb, 0x57, 0xc9, 0x88, 0x01, 0xb5, 0x7f, 0x9e, 0x46, 0xf7, 0x09, 0xbb, 0x36, 0x1b, 0x5d, + 0xec, 0x40, 0x1e, 0x43, 0xed, 0x49, 0x78, 0x82, 0xbe, 0xe4, 0x02, 0xed, 0x12, 0xcd, 0xee, 0x8a, + 0xa1, 0xa9, 0xf9, 0x07, 0x90, 0x91, 0xe6, 0x40, 0x67, 0xe7, 0xbe, 0xb6, 0x1c, 0x93, 0x9e, 0x39, + 0xd8, 0x5d, 0x31, 0x90, 0x8e, 0xef, 0x41, 0xb1, 0xaf, 0x13, 0x2a, 0xda, 0x28, 0x2e, 0x19, 0x00, + 0x84, 0x69, 0x98, 0xdd, 0x15, 0x23, 0xe2, 0xc0, 0xbf, 0x0b, 0x59, 0x74, 0x69, 0x74, 0xa1, 0xc1, + 0x92, 0x81, 0x0d, 0x2e, 0x97, 0xdd, 0x15, 0x83, 0x28, 0xb7, 0x0a, 0x90, 0x23, 0x1b, 0x5c, 0xab, + 0x42, 0x5e, 0xf5, 0x75, 0x76, 0xe4, 0x6a, 0xb7, 0x20, 0xd3, 0x33, 0x07, 0xe8, 0x56, 0xda, 0x56, + 0xa0, 0xe3, 0x73, 0x7c, 0xac, 0xbd, 0x12, 0x27, 0x87, 0x92, 0x79, 0xc7, 0xd4, 0x54, 0xde, 0xb1, + 0x96, 0x87, 0x2c, 0x7e, 0xb1, 0x76, 0xfb, 0x2a, 0x17, 0xb5, 0xf6, 0x8f, 0x33, 0xe8, 0xcd, 0x4a, + 0x71, 0xbe, 0x30, 0xa7, 0xfa, 0x11, 0x94, 0xc6, 0xbe, 0xd7, 0x17, 0x41, 0xe0, 0xf9, 0xda, 0xfd, + 0x79, 0xfd, 0xc5, 0xe7, 0x9d, 0x9b, 0x87, 0x21, 0x8d, 0x11, 0x93, 0xd7, 0xff, 0x55, 0x1a, 0x4a, + 0xd1, 0x0b, 0xe5, 0x44, 0x4b, 0x71, 0xae, 0xf2, 0x67, 0xfb, 0xc2, 0x1f, 0x99, 0xb6, 0xa5, 0xac, + 0x47, 0x73, 0x68, 0x86, 0x1e, 0xde, 0xc7, 0xde, 0x44, 0x4e, 0x8e, 0x85, 0xca, 0x9b, 0x3c, 0xb5, + 0x47, 0xc2, 0x63, 0x59, 0x3a, 0xb1, 0x40, 0xc5, 0xee, 0x3b, 0xde, 0xc4, 0x62, 0x39, 0x6c, 0x3f, + 0xa2, 0xed, 0x6d, 0xdf, 0x1c, 0x07, 0xca, 0x66, 0xee, 0xdb, 0xbe, 0xc7, 0x0a, 0x48, 0xb4, 0x63, + 0x0f, 0x46, 0x26, 0x2b, 0x22, 0xb3, 0xde, 0x73, 0x5b, 0xa2, 0x11, 0x2e, 0xf1, 0x0d, 0xa8, 0x74, + 0xc6, 0xc2, 0xed, 0x4a, 0x5f, 0x08, 0xb9, 0x6f, 0x8e, 0x55, 0x22, 0xcd, 0x10, 0x96, 0x65, 0x4b, + 0x65, 0x3f, 0x77, 0xcc, 0xbe, 0x38, 0xf6, 0xbc, 0x53, 0xb6, 0x8a, 0x86, 0xa6, 0xed, 0x06, 0xd2, + 0x1c, 0xf8, 0xe6, 0x48, 0xd9, 0xd0, 0x9e, 0x70, 0x04, 0xb5, 0xd6, 0xe8, 0xdb, 0xb6, 0x1c, 0x4e, + 0x8e, 0x1f, 0x61, 0xb0, 0xb1, 0xae, 0x0e, 0x37, 0x2c, 0x31, 0x16, 0x68, 0x43, 0x57, 0xa1, 0xb8, + 0x65, 0x3b, 0xf6, 0xb1, 0xed, 0xd8, 0x6c, 0x03, 0x51, 0x5b, 0xe7, 0x7d, 0xd3, 0xb1, 0x2d, 0xdf, + 0x7c, 0xce, 0x38, 0x0a, 0xf7, 0xd8, 0xf7, 0x4e, 0x6d, 0x76, 0x0d, 0x11, 0x29, 0xf6, 0x38, 0xb3, + 0x3f, 0x65, 0xd7, 0xe9, 0x80, 0xe6, 0x54, 0xc8, 0xfe, 0xf0, 0xc4, 0x3c, 0x66, 0x37, 0xe2, 0x3c, + 0xd2, 0xcd, 0xda, 0x06, 0xac, 0xcf, 0x1c, 0x05, 0xd7, 0x0a, 0x3a, 0xe4, 0xa9, 0x55, 0xa0, 0x9c, + 0x38, 0xa3, 0xab, 0xbd, 0x0a, 0xc5, 0xf0, 0x04, 0x0f, 0x43, 0x43, 0x3b, 0x50, 0xb9, 0x47, 0xad, + 0x24, 0x51, 0xbb, 0xf6, 0x87, 0x29, 0xc8, 0xab, 0xe3, 0x53, 0xbe, 0x15, 0x95, 0x3b, 0xa4, 0x96, + 0x38, 0x32, 0x53, 0x44, 0xfa, 0xc0, 0x31, 0xaa, 0x79, 0xb8, 0x0e, 0x39, 0x87, 0x62, 0x40, 0x6d, + 0xbe, 0xa8, 0x91, 0xb0, 0x36, 0x99, 0xa4, 0xb5, 0xa9, 0x37, 0xa2, 0x43, 0xce, 0x30, 0xdf, 0x45, + 0x5e, 0x61, 0xcf, 0x17, 0x42, 0xe5, 0xb2, 0x28, 0x84, 0x4b, 0xd3, 0x5e, 0xe1, 0x8d, 0xc6, 0x66, + 0x5f, 0x12, 0x80, 0x76, 0x51, 0x34, 0xa6, 0x2c, 0x8b, 0x5a, 0xde, 0x1c, 0x9a, 0xb2, 0x7e, 0x02, + 0xc5, 0x43, 0x2f, 0x98, 0xdd, 0x93, 0x0b, 0x90, 0xe9, 0x79, 0x63, 0xe5, 0x61, 0x6e, 0x79, 0x92, + 0x3c, 0x4c, 0xb5, 0x05, 0x9f, 0x48, 0xa5, 0x54, 0x86, 0x3d, 0x18, 0x4a, 0x15, 0xfe, 0xb5, 0x5d, + 0x57, 0xf8, 0x2c, 0x87, 0x73, 0x68, 0x88, 0x31, 0xfa, 0xad, 0x2c, 0x8f, 0xb3, 0x46, 0xf0, 0x1d, + 0xdb, 0x0f, 0x24, 0x2b, 0xd4, 0xdb, 0xb8, 0x9b, 0xda, 0x03, 0xda, 0x04, 0xe9, 0x81, 0x58, 0xad, + 0xa0, 0x88, 0xd4, 0x6c, 0x0a, 0x17, 0x75, 0x8c, 0xce, 0xd5, 0x54, 0x45, 0x0c, 0x7d, 0x20, 0x8d, + 0x3b, 0x18, 0xb5, 0x3f, 0x9a, 0x04, 0xd2, 0x3e, 0xb9, 0x60, 0x99, 0xfa, 0x33, 0xa8, 0x4c, 0xd5, + 0xce, 0xf0, 0xeb, 0xc0, 0xa6, 0x00, 0x28, 0xfa, 0x0a, 0xbf, 0x05, 0xd7, 0xa6, 0xa0, 0xfb, 0xb6, + 0x65, 0x51, 0x82, 0x71, 0xf6, 0x45, 0xd8, 0xc1, 0xad, 0x12, 0x14, 0xfa, 0x6a, 0x96, 0xea, 0x87, + 0x50, 0xa1, 0x69, 0xdb, 0x17, 0xd2, 0xec, 0xb8, 0xce, 0xc5, 0x9f, 0xbb, 0xc0, 0xa9, 0xfe, 0x75, + 0xc8, 0xd1, 0x81, 0x00, 0xda, 0x8b, 0x13, 0xdf, 0x1b, 0x11, 0xaf, 0x9c, 0x41, 0xcf, 0xc8, 0x5d, + 0x7a, 0x7a, 0xee, 0xd3, 0xd2, 0xab, 0x7f, 0x56, 0x84, 0x42, 0xa3, 0xdf, 0xf7, 0x26, 0xae, 0x9c, + 0xfb, 0xf2, 0x3b, 0x90, 0xef, 0x7b, 0xee, 0x89, 0x3d, 0xd0, 0xf6, 0x78, 0xd6, 0x33, 0xd4, 0x74, + 0xa8, 0x70, 0x27, 0xf6, 0xc0, 0xd0, 0xc8, 0x48, 0xa6, 0xf7, 0x93, 0xdc, 0x95, 0x64, 0xca, 0xa8, + 0x46, 0xdb, 0xc7, 0x03, 0xc8, 0xda, 0xee, 0x89, 0xa7, 0xab, 0x11, 0xbf, 0x78, 0x09, 0x11, 0x95, + 0xe4, 0x11, 0x62, 0xed, 0xbf, 0xa4, 0x20, 0xaf, 0x3e, 0xcd, 0x5f, 0x85, 0x35, 0xe1, 0xe2, 0x62, + 0x0a, 0x4d, 0xb9, 0x5e, 0x45, 0x33, 0x50, 0x74, 0x5a, 0x35, 0x44, 0x1c, 0x4f, 0x06, 0x3a, 0xe0, + 0x4f, 0x82, 0xf8, 0x7b, 0x70, 0x4b, 0x35, 0x0f, 0x7d, 0xe1, 0x0b, 0x47, 0x98, 0x81, 0x68, 0x0e, + 0x4d, 0xd7, 0x15, 0x8e, 0xde, 0xd8, 0x2f, 0x7b, 0xcd, 0xeb, 0xb0, 0xaa, 0x5e, 0x75, 0xc7, 0x66, + 0x5f, 0x04, 0xfa, 0x90, 0x69, 0x0a, 0xc6, 0xbf, 0x01, 0x39, 0x2a, 0xd6, 0xac, 0x5a, 0x57, 0x4f, + 0xa5, 0xc2, 0xaa, 0x79, 0xd1, 0xce, 0xd3, 0x00, 0x50, 0xc3, 0x84, 0x41, 0x97, 0x5e, 0xfd, 0x5f, + 0xbe, 0x72, 0x5c, 0x29, 0xc2, 0x4b, 0x10, 0xa1, 0x7c, 0x96, 0x70, 0x04, 0x55, 0xd5, 0xe1, 0xce, + 0x98, 0xa6, 0x74, 0xfe, 0x14, 0xac, 0xf6, 0xab, 0x59, 0xc8, 0xe2, 0x08, 0x23, 0xf2, 0xd0, 0x1b, + 0x89, 0x28, 0xa9, 0xa9, 0x5c, 0x8d, 0x29, 0x18, 0xba, 0x36, 0xa6, 0x3a, 0x57, 0x8e, 0xd0, 0x94, + 0xf1, 0x98, 0x05, 0x23, 0xe6, 0xd8, 0xf7, 0x4e, 0x6c, 0x27, 0xc6, 0xd4, 0x4e, 0xd0, 0x0c, 0x98, + 0x7f, 0x13, 0x6e, 0x8e, 0x4c, 0xff, 0x54, 0x48, 0x5a, 0xdd, 0xcf, 0x3c, 0xff, 0x34, 0xc0, 0x91, + 0x6b, 0x5b, 0x3a, 0x1b, 0x76, 0xc9, 0x5b, 0x34, 0xa0, 0x96, 0x38, 0xb3, 0x09, 0xb3, 0xa8, 0x8a, + 0x30, 0xc3, 0x36, 0x2a, 0x87, 0xa9, 0x86, 0xa6, 0xab, 0x79, 0xe9, 0x83, 0x8a, 0x69, 0x28, 0xfa, + 0x4f, 0xaa, 0x38, 0x25, 0x68, 0x5b, 0x94, 0xa0, 0x2b, 0x19, 0x31, 0x00, 0x55, 0x87, 0x3e, 0xf6, + 0x54, 0x99, 0xc9, 0x8a, 0x0a, 0x2a, 0x13, 0x20, 0xc4, 0x90, 0xa2, 0x3f, 0x0c, 0x3f, 0xa2, 0xb2, + 0x67, 0x49, 0x10, 0xbf, 0x03, 0x30, 0x30, 0xa5, 0x78, 0x6e, 0x5e, 0x3c, 0xf1, 0x9d, 0xaa, 0x50, + 0x19, 0xf7, 0x18, 0x82, 0x61, 0xa9, 0xe3, 0xf5, 0x4d, 0xa7, 0x2b, 0x3d, 0xdf, 0x1c, 0x88, 0x43, + 0x53, 0x0e, 0xab, 0x03, 0x15, 0x96, 0xce, 0xc2, 0xb1, 0xc7, 0xd2, 0x1e, 0x89, 0x4f, 0x3c, 0x57, + 0x54, 0x87, 0xaa, 0xc7, 0x61, 0x1b, 0x25, 0x31, 0x5d, 0xd3, 0xb9, 0x90, 0x76, 0x1f, 0xfb, 0x62, + 0x2b, 0x49, 0x12, 0x20, 0xec, 0xab, 0x2b, 0xe4, 0x73, 0xcf, 0x3f, 0x6d, 0x5b, 0xd5, 0x1f, 0xa8, + 0xbe, 0x46, 0x80, 0x7a, 0x07, 0x20, 0x56, 0x22, 0xb4, 0xcc, 0x0d, 0x3a, 0x15, 0x60, 0x2b, 0xe8, + 0xaf, 0x1f, 0x0a, 0xd7, 0xb2, 0xdd, 0xc1, 0xb6, 0xd6, 0x1b, 0x96, 0x42, 0x20, 0x45, 0xfc, 0xc2, + 0x8a, 0x80, 0xe4, 0x1b, 0x50, 0x4b, 0x58, 0x2c, 0x53, 0xff, 0xdf, 0x29, 0x28, 0x27, 0x0e, 0xc1, + 0xff, 0x02, 0x0f, 0xee, 0x71, 0xe7, 0xc4, 0xbd, 0x17, 0x07, 0x54, 0xe9, 0x54, 0xd4, 0xc6, 0xe1, + 0xd6, 0x67, 0xf4, 0xf8, 0x56, 0xc5, 0xf7, 0x09, 0xc8, 0xe7, 0x3a, 0xb4, 0xaf, 0x3f, 0xd4, 0x49, + 0x92, 0x32, 0x14, 0x9e, 0xb8, 0xa7, 0xae, 0xf7, 0xdc, 0x55, 0x5b, 0x22, 0x55, 0x62, 0x4c, 0x9d, + 0x29, 0x85, 0xc5, 0x12, 0x99, 0xfa, 0x3f, 0xc9, 0xce, 0x14, 0x2d, 0xb5, 0x20, 0xaf, 0x3c, 0x73, + 0x72, 0x1a, 0xe7, 0xab, 0x4c, 0x92, 0xc8, 0xfa, 0xfc, 0x22, 0x01, 0x32, 0x34, 0x31, 0xba, 0xcc, + 0x51, 0x49, 0x5f, 0x7a, 0xe1, 0x39, 0xcb, 0x14, 0xa3, 0xd0, 0x0c, 0x4e, 0x55, 0xb5, 0x46, 0x1c, + 0x6a, 0x7f, 0x2b, 0x05, 0xd7, 0x17, 0xa1, 0x24, 0x6b, 0x7f, 0x53, 0xd3, 0xb5, 0xbf, 0xdd, 0x99, + 0x5a, 0xda, 0x34, 0xf5, 0xe6, 0xc1, 0x4b, 0x0a, 0x31, 0x5d, 0x59, 0x5b, 0xff, 0x49, 0x0a, 0x36, + 0xe6, 0xfa, 0x9c, 0x70, 0x19, 0x00, 0xf2, 0x4a, 0xb3, 0x54, 0xa9, 0x4b, 0x54, 0x7c, 0xa0, 0x92, + 0xc7, 0xb4, 0x99, 0x06, 0xea, 0x34, 0x57, 0x57, 0x0f, 0x2b, 0x8f, 0x14, 0x67, 0x0d, 0x6d, 0xf5, + 0x40, 0xb0, 0x1c, 0xee, 0xf5, 0xca, 0xaf, 0xd1, 0x90, 0xbc, 0xf2, 0x1a, 0x55, 0x86, 0x9b, 0x15, + 0xa8, 0x84, 0x66, 0x32, 0x76, 0xec, 0x3e, 0x36, 0x8b, 0xbc, 0x06, 0x37, 0x55, 0x09, 0xb9, 0x8e, + 0xd0, 0x4e, 0x7a, 0x43, 0x9b, 0x16, 0x07, 0x2b, 0xd5, 0x0d, 0xb8, 0xb6, 0xa0, 0x4f, 0x24, 0xe5, + 0x53, 0x2d, 0xf1, 0x1a, 0xc0, 0xf6, 0xd3, 0x50, 0x4e, 0x96, 0xe2, 0x1c, 0xd6, 0xb6, 0x9f, 0x26, + 0x19, 0xea, 0xf5, 0xf2, 0x14, 0x2d, 0x49, 0xc0, 0x32, 0xf5, 0x5f, 0x4b, 0x85, 0xc7, 0xda, 0xb5, + 0xbf, 0x02, 0x15, 0x25, 0xe3, 0xa1, 0x79, 0xe1, 0x78, 0xa6, 0xc5, 0x5b, 0xb0, 0x16, 0x44, 0xf7, + 0x1a, 0x12, 0xdb, 0xc1, 0xec, 0x36, 0xdb, 0x9d, 0x42, 0x32, 0x66, 0x88, 0xc2, 0x40, 0x23, 0x1d, + 0xe7, 0xc2, 0x39, 0x85, 0x4c, 0x26, 0xad, 0xb2, 0x55, 0x0a, 0x82, 0xcc, 0xfa, 0x37, 0x60, 0x83, + 0x8c, 0x97, 0x12, 0x46, 0x79, 0xa4, 0xa8, 0x0f, 0xca, 0xee, 0x6e, 0x87, 0xfa, 0xa0, 0x9b, 0xf5, + 0xff, 0x90, 0x07, 0x88, 0xf3, 0xfe, 0x0b, 0x96, 0xf9, 0xa2, 0x63, 0xec, 0xb9, 0x53, 0xb8, 0xcc, + 0x4b, 0x9f, 0xc2, 0xbd, 0x17, 0x39, 0xc6, 0x2a, 0x01, 0x3b, 0x5b, 0xcb, 0x1b, 0xcb, 0x34, 0xeb, + 0x0e, 0x4f, 0x55, 0x79, 0xe4, 0x66, 0xab, 0x3c, 0xee, 0xce, 0x97, 0x84, 0xcd, 0xd8, 0x9f, 0x38, + 0xee, 0x2f, 0x4c, 0xc5, 0xfd, 0x35, 0x28, 0xfa, 0xc2, 0xb4, 0x3c, 0xd7, 0xb9, 0x08, 0x0f, 0x7b, + 0xc2, 0x36, 0x7f, 0x0b, 0x72, 0x92, 0xae, 0x66, 0x14, 0x69, 0xb9, 0xbc, 0x60, 0xe2, 0x14, 0x2e, + 0x1a, 0x33, 0x3b, 0xd0, 0x75, 0x5c, 0x6a, 0x07, 0x2b, 0x1a, 0x09, 0x08, 0xdf, 0x04, 0x6e, 0x63, + 0x10, 0xe4, 0x38, 0xc2, 0xda, 0xba, 0xd8, 0x56, 0x67, 0x30, 0xb4, 0x6b, 0x16, 0x8d, 0x05, 0x6f, + 0xc2, 0xf9, 0x5f, 0x8d, 0xe7, 0x9f, 0x44, 0x3e, 0xb3, 0x03, 0xec, 0x69, 0x85, 0x9c, 0x83, 0xa8, + 0x8d, 0xfb, 0x72, 0xb8, 0x46, 0xd5, 0x58, 0x92, 0xf6, 0xc6, 0x07, 0x99, 0x97, 0xbc, 0xad, 0xff, + 0x51, 0x3a, 0x0a, 0x20, 0x4a, 0x90, 0x3b, 0x36, 0x03, 0xbb, 0xaf, 0xe2, 0x49, 0xbd, 0xf1, 0xab, + 0x20, 0x42, 0x7a, 0x96, 0xc7, 0xd2, 0x18, 0x0b, 0x04, 0x02, 0xbd, 0xfe, 0x35, 0x80, 0xf8, 0xba, + 0x0a, 0xcb, 0xe2, 0xda, 0x0c, 0xe7, 0x5b, 0x95, 0x63, 0x10, 0x29, 0xa5, 0xa0, 0xac, 0xa8, 0xd0, + 0x8d, 0x82, 0x49, 0xb2, 0xfd, 0xac, 0x88, 0x38, 0xae, 0x27, 0x85, 0x4a, 0xc0, 0x91, 0x76, 0x32, + 0x40, 0x36, 0x61, 0xfd, 0x35, 0x2b, 0xa3, 0x73, 0x1e, 0x32, 0x55, 0x59, 0xb3, 0x80, 0x42, 0x97, + 0x55, 0x5c, 0x9d, 0xd3, 0x2f, 0x58, 0x05, 0x25, 0x8a, 0x6f, 0xc1, 0xb0, 0x35, 0xe4, 0x6a, 0x52, + 0x91, 0xc0, 0x3a, 0x3e, 0x9e, 0x51, 0xe9, 0x00, 0xc3, 0xaf, 0x5a, 0x68, 0x30, 0x36, 0x50, 0xb2, + 0xc8, 0x35, 0x60, 0x1c, 0x63, 0x8f, 0xb1, 0x89, 0x81, 0x80, 0x3d, 0x36, 0x5d, 0xc9, 0xae, 0x61, + 0x57, 0xc7, 0xd6, 0x09, 0xbb, 0x8e, 0x24, 0xfd, 0xa1, 0x29, 0xd9, 0x0d, 0xc4, 0xc1, 0xa7, 0x6d, + 0xe1, 0xe3, 0x7c, 0xb2, 0x9b, 0x88, 0x23, 0xcd, 0x01, 0xbb, 0x55, 0xff, 0xad, 0xb8, 0xd4, 0xf4, + 0x8d, 0xc8, 0x45, 0x5f, 0x46, 0xc9, 0xd1, 0x89, 0x5f, 0xb4, 0xe2, 0x5a, 0xb0, 0xe1, 0x8b, 0x1f, + 0x4e, 0xec, 0xa9, 0x02, 0xec, 0xcc, 0xd5, 0x27, 0xfc, 0xf3, 0x14, 0xf5, 0x33, 0xd8, 0x08, 0x1b, + 0xcf, 0x6c, 0x39, 0xa4, 0x6c, 0x09, 0x7f, 0x2b, 0x51, 0x21, 0x9e, 0x5a, 0x78, 0xb3, 0x26, 0x62, + 0x19, 0x57, 0x84, 0x47, 0xd9, 0xf0, 0xf4, 0x12, 0xd9, 0xf0, 0xfa, 0xff, 0xca, 0x27, 0x12, 0x26, + 0x2a, 0x68, 0xb1, 0xa2, 0xa0, 0x65, 0xfe, 0x8c, 0x2f, 0x4e, 0x70, 0xa7, 0x5f, 0x26, 0xc1, 0xbd, + 0xe8, 0xbc, 0xfc, 0x7d, 0xf4, 0xa1, 0x69, 0xfd, 0x3c, 0x5d, 0x22, 0x79, 0x3f, 0x85, 0xcb, 0xb7, + 0xe8, 0xc4, 0xce, 0xec, 0xaa, 0x62, 0x8e, 0xdc, 0xc2, 0xfb, 0x1a, 0xc9, 0xa3, 0x39, 0x8d, 0x69, + 0x24, 0xa8, 0x12, 0xd6, 0x26, 0xbf, 0xc8, 0xda, 0x60, 0xfc, 0xa8, 0xed, 0x50, 0xd4, 0x56, 0x67, + 0x1d, 0xea, 0x39, 0x64, 0x4f, 0x27, 0xb5, 0x45, 0x63, 0x0e, 0x8e, 0x5e, 0xd8, 0x68, 0xe2, 0x48, + 0x5b, 0xa7, 0xf3, 0x55, 0x63, 0xf6, 0x42, 0x59, 0x69, 0xfe, 0x42, 0xd9, 0x87, 0x00, 0x81, 0xc0, + 0xd5, 0xb1, 0x6d, 0xf7, 0xa5, 0x2e, 0xf9, 0xb8, 0x73, 0x59, 0xdf, 0xf4, 0x21, 0x44, 0x82, 0x02, + 0xe5, 0x1f, 0x99, 0xe7, 0x4d, 0xf4, 0xc6, 0xf5, 0xd9, 0x74, 0xd4, 0x9e, 0xb5, 0xc1, 0x6b, 0xf3, + 0x36, 0xf8, 0x2d, 0xc8, 0x05, 0x7d, 0x6f, 0x2c, 0xe8, 0x4e, 0xc4, 0xe5, 0xf3, 0xbb, 0xd9, 0x45, + 0x24, 0x43, 0xe1, 0x52, 0x5a, 0x0e, 0xad, 0x94, 0xe7, 0xd3, 0x6d, 0x88, 0x92, 0x11, 0x36, 0xa7, + 0xec, 0xe0, 0xcd, 0x69, 0x3b, 0x58, 0xb3, 0x20, 0xaf, 0x53, 0xec, 0xb3, 0xc1, 0x72, 0x98, 0x9c, + 0x4b, 0x27, 0x92, 0x73, 0x51, 0x61, 0x61, 0x26, 0x59, 0x58, 0x38, 0x73, 0x61, 0x2a, 0x37, 0x77, + 0x61, 0xaa, 0xfe, 0x09, 0xe4, 0x48, 0x56, 0x74, 0x22, 0xd4, 0x30, 0x2b, 0x1f, 0x13, 0x3b, 0xc5, + 0x52, 0xfc, 0x3a, 0xb0, 0x40, 0x90, 0x13, 0x22, 0xba, 0xe6, 0x48, 0x90, 0x91, 0x4c, 0xf3, 0x2a, + 0x5c, 0x57, 0xb8, 0xc1, 0xf4, 0x1b, 0xf2, 0x84, 0x1c, 0xfb, 0xd8, 0x37, 0xfd, 0x0b, 0x96, 0xad, + 0x7f, 0x48, 0xa7, 0xbb, 0xa1, 0x42, 0x95, 0xa3, 0x0b, 0x6a, 0xca, 0x2c, 0x5b, 0xda, 0xfa, 0xd0, + 0xa1, 0xbc, 0x8e, 0x8f, 0x54, 0xa9, 0x12, 0x05, 0x20, 0x94, 0x13, 0x59, 0x4d, 0xee, 0xc4, 0x7f, + 0x61, 0xeb, 0xad, 0xbe, 0x95, 0x70, 0xe5, 0xa6, 0x6b, 0x8f, 0x52, 0xcb, 0xd6, 0x1e, 0xd5, 0x1f, + 0xc3, 0xba, 0x31, 0x6d, 0xd3, 0xf9, 0x7b, 0x50, 0xf0, 0xc6, 0x49, 0x3e, 0x2f, 0xd2, 0xcb, 0x10, + 0xbd, 0xfe, 0xd3, 0x14, 0xac, 0xb6, 0x5d, 0x29, 0x7c, 0xd7, 0x74, 0x76, 0x1c, 0x73, 0xc0, 0xdf, + 0x0d, 0xad, 0xd4, 0xe2, 0xf8, 0x3b, 0x89, 0x3b, 0x6d, 0xb0, 0x1c, 0x9d, 0x4a, 0xe6, 0x37, 0x60, + 0x43, 0x58, 0xb6, 0xf4, 0x7c, 0xe5, 0xc0, 0x86, 0x25, 0x62, 0xd7, 0x81, 0x29, 0x70, 0x97, 0x96, + 0x44, 0x4f, 0x4d, 0x73, 0x15, 0xae, 0x4f, 0x41, 0x43, 0xef, 0x34, 0xcd, 0x6f, 0x43, 0x35, 0xde, + 0x8d, 0xb6, 0x3d, 0x57, 0xb6, 0x5d, 0x4b, 0x9c, 0x93, 0x2b, 0xc4, 0x32, 0xf5, 0xdf, 0x28, 0x84, + 0x4e, 0xd8, 0x53, 0x5d, 0x40, 0xe6, 0x7b, 0x5e, 0x7c, 0x3b, 0x51, 0xb7, 0x12, 0xb7, 0x60, 0xd3, + 0x4b, 0xdc, 0x82, 0xfd, 0x30, 0xbe, 0xc9, 0xa8, 0x36, 0x8a, 0x57, 0x16, 0xee, 0x3e, 0x54, 0xf7, + 0xa2, 0xdd, 0xee, 0xae, 0x48, 0x5c, 0x6b, 0x7c, 0x53, 0xc7, 0x5a, 0xd9, 0x65, 0x7c, 0x55, 0x75, + 0x1e, 0xff, 0xce, 0x6c, 0xf9, 0xfc, 0x72, 0xf5, 0x67, 0x73, 0xee, 0x24, 0xbc, 0xb4, 0x3b, 0xf9, + 0x9d, 0x99, 0xb0, 0xa6, 0xb8, 0x30, 0x25, 0x75, 0xc5, 0xe5, 0xc0, 0xef, 0x40, 0x61, 0x68, 0x07, + 0xd2, 0xf3, 0xd5, 0x85, 0xd5, 0xf9, 0x0b, 0x36, 0x89, 0xd1, 0xda, 0x55, 0x88, 0x54, 0x2c, 0x14, + 0x52, 0xf1, 0xef, 0xc3, 0x06, 0x0d, 0xfc, 0x61, 0xec, 0x35, 0x04, 0xd5, 0xf2, 0xc2, 0x22, 0xad, + 0x04, 0xab, 0xad, 0x19, 0x12, 0x63, 0x9e, 0x49, 0x6d, 0x00, 0x10, 0xcf, 0xcf, 0x9c, 0x15, 0xfb, + 0x1c, 0x17, 0x56, 0x6f, 0x42, 0x3e, 0x98, 0x1c, 0xc7, 0x67, 0x4e, 0xba, 0x55, 0x3b, 0x87, 0xda, + 0x9c, 0x77, 0x70, 0x28, 0x7c, 0x25, 0xee, 0x95, 0xb7, 0x66, 0x3f, 0x4c, 0x4e, 0xbc, 0x52, 0xce, + 0xbb, 0x97, 0xcc, 0x5e, 0xc4, 0x39, 0xa1, 0x01, 0xb5, 0x77, 0xa0, 0x9c, 0x18, 0x54, 0xb4, 0xcc, + 0x13, 0xd7, 0xf2, 0xc2, 0x34, 0x28, 0x3e, 0xab, 0x5b, 0x43, 0x56, 0x98, 0x08, 0xa5, 0xe7, 0x9a, + 0x01, 0x6c, 0x76, 0x00, 0xaf, 0x08, 0x7d, 0x5f, 0x81, 0x4a, 0xc2, 0xa5, 0x8b, 0x52, 0x64, 0xd3, + 0xc0, 0xfa, 0x19, 0x7c, 0x31, 0xc1, 0xee, 0x50, 0xf8, 0x23, 0x3b, 0xc0, 0x8d, 0x44, 0x85, 0x74, + 0x94, 0xbd, 0xb0, 0x84, 0x2b, 0x6d, 0x19, 0x5a, 0xd0, 0xa8, 0xcd, 0x7f, 0x11, 0x72, 0x63, 0xe1, + 0x8f, 0x02, 0x6d, 0x45, 0x67, 0x35, 0x68, 0x21, 0xdb, 0xc0, 0x50, 0x34, 0xf5, 0x7f, 0x94, 0x82, + 0xe2, 0xbe, 0x90, 0x26, 0xfa, 0x0e, 0x7c, 0x7f, 0xe6, 0x2b, 0xf3, 0xe7, 0xa4, 0x21, 0xea, 0xa6, + 0x0e, 0x32, 0x37, 0xdb, 0x1a, 0x5f, 0xb7, 0x77, 0x57, 0x62, 0xc1, 0x6a, 0x5b, 0x50, 0xd0, 0xe0, + 0xda, 0xbb, 0xb0, 0x3e, 0x83, 0x49, 0xe3, 0xa2, 0x7c, 0xfb, 0xee, 0xc5, 0x28, 0x2c, 0xd7, 0x59, + 0x35, 0xa6, 0x81, 0x5b, 0x25, 0x28, 0x8c, 0x15, 0x41, 0xfd, 0x8f, 0x6e, 0x50, 0x09, 0x89, 0x7d, + 0x82, 0xc1, 0xf6, 0xa2, 0x9d, 0xf5, 0x0e, 0x00, 0x6d, 0xcd, 0xaa, 0xd0, 0x40, 0xa5, 0x2d, 0x13, + 0x10, 0xfe, 0x7e, 0x94, 0x6f, 0xce, 0x2e, 0x74, 0xaa, 0x92, 0xcc, 0x67, 0x93, 0xce, 0x55, 0x28, + 0xd8, 0xc1, 0x1e, 0x6e, 0x6d, 0xba, 0xfc, 0x26, 0x6c, 0xf2, 0x6f, 0x43, 0xde, 0x1e, 0x8d, 0x3d, + 0x5f, 0xea, 0x84, 0xf4, 0x95, 0x5c, 0xdb, 0x84, 0xb9, 0xbb, 0x62, 0x68, 0x1a, 0xa4, 0x16, 0xe7, + 0x44, 0x5d, 0x7c, 0x31, 0x75, 0xeb, 0x3c, 0xa4, 0x56, 0x34, 0xfc, 0x7b, 0x50, 0x19, 0xa8, 0x82, + 0x38, 0xc5, 0x58, 0x1b, 0x91, 0xaf, 0x5d, 0xc5, 0xe4, 0x51, 0x92, 0x60, 0x77, 0xc5, 0x98, 0xe6, + 0x80, 0x2c, 0xd1, 0x81, 0x17, 0x81, 0xec, 0x79, 0x1f, 0x79, 0xb6, 0x4b, 0x41, 0xe9, 0x0b, 0x58, + 0x1a, 0x49, 0x02, 0x64, 0x39, 0xc5, 0x81, 0x7f, 0x13, 0x3d, 0x9e, 0x40, 0xea, 0x3b, 0xc3, 0x77, + 0xaf, 0xe2, 0xd4, 0x13, 0x81, 0xbe, 0xed, 0x1b, 0x48, 0x7e, 0x0e, 0xb5, 0xc4, 0x22, 0xd1, 0x1f, + 0x69, 0x8c, 0xc7, 0xbe, 0x87, 0x91, 0x6d, 0x85, 0xb8, 0x7d, 0xf3, 0x2a, 0x6e, 0x87, 0x97, 0x52, + 0xef, 0xae, 0x18, 0x57, 0xf0, 0xe6, 0x3d, 0x8c, 0xec, 0x74, 0x17, 0xf6, 0x84, 0x79, 0x16, 0xde, + 0x38, 0xbe, 0xbf, 0xd4, 0x28, 0x10, 0xc5, 0xee, 0x8a, 0x31, 0xc3, 0x83, 0xff, 0x32, 0x6c, 0x4c, + 0x7d, 0x93, 0x2e, 0x19, 0xaa, 0xfb, 0xc8, 0xdf, 0x58, 0xba, 0x1b, 0x48, 0xb4, 0xbb, 0x62, 0xcc, + 0x73, 0xe2, 0x13, 0xf8, 0xc2, 0x7c, 0x97, 0xb6, 0x45, 0xdf, 0xb1, 0x5d, 0xa1, 0xaf, 0x2e, 0xbf, + 0xf3, 0x72, 0xa3, 0xa5, 0x89, 0x77, 0x57, 0x8c, 0xcb, 0x39, 0xf3, 0xbf, 0x06, 0xb7, 0xc7, 0x0b, + 0x4d, 0x8c, 0x32, 0x5d, 0xfa, 0xe6, 0xf3, 0x7b, 0x4b, 0x7e, 0x79, 0x8e, 0x7e, 0x77, 0xc5, 0xb8, + 0x92, 0x3f, 0xfa, 0xce, 0x14, 0x41, 0xeb, 0xba, 0x5d, 0xd5, 0xe0, 0xb7, 0xa1, 0x64, 0xf6, 0x9d, + 0x5d, 0x61, 0x5a, 0x51, 0x86, 0x3d, 0x06, 0xd4, 0xfe, 0x24, 0x05, 0x79, 0xad, 0xef, 0xb7, 0xa3, + 0x73, 0xf1, 0xc8, 0x74, 0xc7, 0x00, 0xfe, 0x01, 0x94, 0x84, 0xef, 0x7b, 0x7e, 0xd3, 0xb3, 0xc2, + 0xa2, 0xc1, 0xd9, 0xf4, 0xaf, 0xe2, 0xb3, 0xd9, 0x0a, 0xd1, 0x8c, 0x98, 0x82, 0xbf, 0x0f, 0xa0, + 0xd6, 0x79, 0x2f, 0xbe, 0x7e, 0x51, 0x5b, 0x4c, 0xaf, 0x8e, 0x61, 0x62, 0xec, 0x38, 0x79, 0x16, + 0x9e, 0x81, 0x84, 0xcd, 0x28, 0xe0, 0xcc, 0x25, 0x02, 0xce, 0xdb, 0x3a, 0x8f, 0x70, 0x80, 0x2f, + 0xf4, 0x25, 0xa4, 0x08, 0x50, 0xfb, 0xd7, 0x29, 0xc8, 0x2b, 0xe3, 0xc1, 0x5b, 0xf3, 0x3d, 0x7a, + 0xed, 0xc5, 0x36, 0x67, 0x73, 0xb6, 0x67, 0xdf, 0x06, 0x50, 0x36, 0x28, 0xd1, 0xb3, 0xdb, 0x33, + 0x7c, 0x34, 0x69, 0x58, 0x39, 0x1a, 0xe3, 0xd7, 0x1f, 0xaa, 0x8b, 0x32, 0x94, 0xab, 0x7d, 0xb2, + 0xb7, 0xc7, 0x56, 0xf8, 0x06, 0x54, 0x9e, 0x1c, 0x3c, 0x3e, 0xe8, 0x3c, 0x3b, 0x38, 0x6a, 0x19, + 0x46, 0xc7, 0x50, 0x29, 0xdb, 0xad, 0xc6, 0xf6, 0x51, 0xfb, 0xe0, 0xf0, 0x49, 0x8f, 0xa5, 0x6b, + 0xbf, 0x9f, 0x82, 0xca, 0x94, 0xed, 0xfa, 0xcb, 0x9d, 0xba, 0xc4, 0xf0, 0x67, 0x16, 0x0f, 0x7f, + 0xf6, 0xb2, 0xe1, 0xcf, 0xcd, 0x0e, 0xff, 0xef, 0xa5, 0xa0, 0x32, 0x65, 0x23, 0x93, 0xdc, 0x53, + 0xd3, 0xdc, 0x93, 0x3b, 0x7d, 0x7a, 0x66, 0xa7, 0xaf, 0xc3, 0x6a, 0xf8, 0x7c, 0x10, 0x67, 0x1c, + 0xa6, 0x60, 0x49, 0x1c, 0xaa, 0x54, 0xcf, 0x4e, 0xe3, 0x50, 0xb5, 0xfa, 0xd5, 0xd2, 0xd2, 0xcd, + 0xbc, 0x80, 0x2e, 0x2e, 0xd7, 0x2e, 0xb7, 0xa0, 0x57, 0x74, 0xe1, 0x11, 0x94, 0xc7, 0xf1, 0x32, + 0x7d, 0x39, 0xb7, 0x24, 0x49, 0xf9, 0x02, 0x39, 0x7f, 0x92, 0x82, 0xb5, 0x69, 0x9b, 0xfb, 0xff, + 0xf4, 0xb0, 0xfe, 0xd3, 0x14, 0x6c, 0xcc, 0x59, 0xf2, 0x2b, 0x1d, 0xbb, 0x59, 0xb9, 0xd2, 0x4b, + 0xc8, 0x95, 0x59, 0x20, 0xd7, 0xe5, 0x96, 0xe4, 0x6a, 0x89, 0xbb, 0xf0, 0x85, 0x4b, 0xf7, 0x84, + 0x2b, 0x86, 0x7a, 0x8a, 0x69, 0x66, 0x96, 0xe9, 0xef, 0xa4, 0xe0, 0xf6, 0x55, 0xf6, 0xfe, 0xff, + 0xba, 0x5e, 0xcd, 0x4a, 0x58, 0x7f, 0x37, 0x3a, 0x4c, 0x2f, 0x43, 0x41, 0xff, 0x20, 0x90, 0x2e, + 0x57, 0x1e, 0x7a, 0xcf, 0x5d, 0x95, 0x89, 0x36, 0x84, 0xa9, 0xaf, 0x4c, 0x1b, 0x62, 0xec, 0xd8, + 0x74, 0x78, 0x79, 0x0b, 0xa0, 0x41, 0x71, 0x5d, 0x78, 0x83, 0xa1, 0xb9, 0xd7, 0xe9, 0xb6, 0xd8, + 0x4a, 0xd2, 0x89, 0xfd, 0x24, 0x34, 0xc4, 0xf5, 0x43, 0xc8, 0xc7, 0xb5, 0xed, 0xfb, 0xa6, 0x7f, + 0x6a, 0xa9, 0x23, 0xc2, 0x55, 0x28, 0x1e, 0xea, 0x10, 0x4a, 0x7d, 0xea, 0xa3, 0x6e, 0xe7, 0x40, + 0x25, 0xbd, 0xb7, 0x3b, 0x3d, 0x55, 0x21, 0xdf, 0x7d, 0xfa, 0x48, 0x9d, 0x55, 0x3d, 0x32, 0x1a, + 0x87, 0xbb, 0x47, 0x84, 0x91, 0xab, 0xff, 0x76, 0x36, 0xdc, 0xd5, 0xea, 0x86, 0x3e, 0x7c, 0x04, + 0xc8, 0xa3, 0x35, 0xf7, 0x34, 0xe3, 0xe8, 0x33, 0x54, 0xd8, 0xda, 0x3a, 0x57, 0x79, 0x08, 0x96, + 0xe6, 0x79, 0x48, 0x1f, 0x1e, 0xab, 0x6a, 0x9c, 0x5d, 0x39, 0x72, 0xd4, 0x95, 0xb6, 0xde, 0xb9, + 0x64, 0x39, 0x7c, 0x68, 0x06, 0x67, 0x2c, 0x5f, 0xff, 0x83, 0x0c, 0x94, 0x22, 0x53, 0xf9, 0x32, + 0xa6, 0x9b, 0x73, 0x58, 0x6b, 0x1f, 0xf4, 0x5a, 0xc6, 0x41, 0x63, 0x4f, 0xa3, 0x64, 0xf8, 0x35, + 0x58, 0xdf, 0x69, 0xef, 0xb5, 0x8e, 0xf6, 0x3a, 0x8d, 0x6d, 0x0d, 0x2c, 0xf2, 0x9b, 0xc0, 0xdb, + 0xfb, 0x87, 0x1d, 0xa3, 0x77, 0xd4, 0xee, 0x1e, 0x35, 0x1b, 0x07, 0xcd, 0xd6, 0x5e, 0x6b, 0x9b, + 0xe5, 0xf9, 0x2b, 0x70, 0xf7, 0xa0, 0xd3, 0x6b, 0x77, 0x0e, 0x8e, 0x0e, 0x3a, 0x47, 0x9d, 0xad, + 0x8f, 0x5a, 0xcd, 0x5e, 0xf7, 0xa8, 0x7d, 0x70, 0x84, 0x5c, 0x1f, 0x19, 0x0d, 0x7c, 0xc3, 0x72, + 0xfc, 0x2e, 0xdc, 0xd6, 0x58, 0xdd, 0x96, 0xf1, 0xb4, 0x65, 0x20, 0x93, 0x27, 0x07, 0x8d, 0xa7, + 0x8d, 0xf6, 0x5e, 0x63, 0x6b, 0xaf, 0xc5, 0x56, 0xf9, 0x1d, 0xa8, 0x69, 0x0c, 0xa3, 0xd1, 0x6b, + 0x1d, 0xed, 0xb5, 0xf7, 0xdb, 0xbd, 0xa3, 0xd6, 0xf7, 0x9b, 0xad, 0xd6, 0x76, 0x6b, 0x9b, 0x55, + 0xf8, 0xd7, 0xe0, 0xab, 0x24, 0x94, 0x16, 0x62, 0xfa, 0x63, 0x9f, 0xb4, 0x0f, 0x8f, 0x1a, 0x46, + 0x73, 0xb7, 0xfd, 0xb4, 0xc5, 0xd6, 0xf8, 0x6b, 0xf0, 0x95, 0xcb, 0x51, 0xb7, 0xdb, 0x46, 0xab, + 0xd9, 0xeb, 0x18, 0x1f, 0xb3, 0x0d, 0xfe, 0x25, 0xf8, 0xc2, 0x6e, 0x6f, 0x7f, 0xef, 0xe8, 0x99, + 0xd1, 0x39, 0x78, 0x74, 0x44, 0x8f, 0xdd, 0x9e, 0xf1, 0xa4, 0xd9, 0x7b, 0x62, 0xb4, 0x18, 0xf0, + 0x1a, 0xdc, 0x3c, 0xdc, 0x3a, 0x3a, 0xe8, 0xf4, 0x8e, 0x1a, 0x07, 0x1f, 0x6f, 0xed, 0x75, 0x9a, + 0x8f, 0x8f, 0x76, 0x3a, 0xc6, 0x7e, 0xa3, 0xc7, 0xca, 0xfc, 0xeb, 0xf0, 0x5a, 0xb3, 0xfb, 0x54, + 0x8b, 0xd9, 0xd9, 0x39, 0x32, 0x3a, 0xcf, 0xba, 0x47, 0x1d, 0xe3, 0xc8, 0x68, 0xed, 0x51, 0x9f, + 0xbb, 0xb1, 0xec, 0x05, 0x7e, 0x1b, 0xaa, 0xed, 0x83, 0xee, 0x93, 0x9d, 0x9d, 0x76, 0xb3, 0xdd, + 0x3a, 0xe8, 0x1d, 0x1d, 0xb6, 0x8c, 0xfd, 0x76, 0xb7, 0x8b, 0x68, 0xac, 0x54, 0xff, 0x2e, 0xe4, + 0xdb, 0xee, 0x99, 0x2d, 0x69, 0x7d, 0x69, 0x65, 0xd4, 0x11, 0x57, 0xd8, 0xa4, 0x65, 0x61, 0x0f, + 0x5c, 0xba, 0xaa, 0x4d, 0xab, 0x6b, 0xd5, 0x88, 0x01, 0xf5, 0x7f, 0x96, 0x86, 0x8a, 0x62, 0x11, + 0x46, 0x70, 0xf7, 0x60, 0x5d, 0xa7, 0x42, 0xdb, 0xd3, 0x26, 0x6c, 0x16, 0x4c, 0xbf, 0x81, 0xa4, + 0x40, 0x09, 0x43, 0x96, 0x04, 0xd1, 0xf1, 0x1a, 0x31, 0xc7, 0x48, 0x50, 0x1d, 0x2c, 0xc6, 0x80, + 0xcf, 0x6b, 0xc1, 0xd0, 0x3a, 0x2a, 0xc4, 0xbe, 0xe7, 0x36, 0xa3, 0x0b, 0x12, 0x53, 0x30, 0xfe, + 0x09, 0xdc, 0x8a, 0xda, 0x2d, 0xb7, 0xef, 0x5f, 0x8c, 0xa3, 0x9f, 0x2a, 0x2b, 0x2c, 0x4c, 0x29, + 0xec, 0xd8, 0x8e, 0x98, 0x42, 0x34, 0x2e, 0x63, 0x50, 0xff, 0xd3, 0x54, 0x22, 0xee, 0x55, 0x71, + 0xed, 0x95, 0x16, 0x7f, 0xd1, 0x19, 0x0c, 0x46, 0x9e, 0x5a, 0x7c, 0xed, 0x88, 0xe8, 0x26, 0x3f, + 0x04, 0x6e, 0xcf, 0x0b, 0x9d, 0x5d, 0x52, 0xe8, 0x05, 0xb4, 0xb3, 0x29, 0xf4, 0xdc, 0x7c, 0x0a, + 0xfd, 0x0e, 0xc0, 0xc0, 0xf1, 0x8e, 0x4d, 0x27, 0xe1, 0x68, 0x26, 0x20, 0x75, 0x07, 0x8a, 0xe1, + 0x0f, 0xa2, 0xf1, 0x9b, 0x90, 0xa7, 0x9f, 0x44, 0x8b, 0x12, 0x8a, 0xaa, 0xc5, 0x77, 0x61, 0x4d, + 0x4c, 0xcb, 0x9c, 0x5e, 0x52, 0xe6, 0x19, 0xba, 0xfa, 0xb7, 0x60, 0x63, 0x0e, 0x09, 0x07, 0x71, + 0x6c, 0xca, 0xe8, 0x56, 0x34, 0x3e, 0xcf, 0x1f, 0x62, 0xd7, 0xff, 0x7d, 0x1a, 0x56, 0xf7, 0x4d, + 0xd7, 0x3e, 0x11, 0x81, 0x0c, 0xa5, 0x0d, 0xfa, 0x43, 0x31, 0x32, 0x43, 0x69, 0x55, 0x4b, 0x67, + 0x19, 0xd2, 0xc9, 0xfc, 0xfd, 0xdc, 0x71, 0xcf, 0x4d, 0xc8, 0x9b, 0x13, 0x39, 0x8c, 0x6a, 0xb6, + 0x75, 0x0b, 0xe7, 0xce, 0xb1, 0xfb, 0xc2, 0x0d, 0x42, 0xdd, 0x0c, 0x9b, 0x71, 0x19, 0x4b, 0xfe, + 0x8a, 0x32, 0x96, 0xc2, 0xfc, 0xf8, 0xdf, 0x85, 0x72, 0xd0, 0xf7, 0x85, 0x70, 0x83, 0xa1, 0x27, + 0xc3, 0x1f, 0xd3, 0x4b, 0x82, 0xa8, 0x7c, 0xcb, 0x7b, 0xee, 0xe2, 0x0a, 0xdd, 0xb3, 0xdd, 0x53, + 0x5d, 0xc3, 0x34, 0x05, 0x43, 0x1d, 0xa4, 0x1c, 0x8b, 0xfd, 0xa9, 0xa0, 0xf8, 0x3e, 0x67, 0x44, + 0x6d, 0xca, 0xa2, 0x98, 0x52, 0x0c, 0x3c, 0xdf, 0x16, 0x2a, 0x95, 0x58, 0x32, 0x12, 0x10, 0xa4, + 0x75, 0x4c, 0x77, 0x30, 0x31, 0x07, 0x42, 0x1f, 0x0a, 0x47, 0xed, 0xfa, 0x7f, 0xcf, 0x01, 0xec, + 0x8b, 0xd1, 0xb1, 0xf0, 0x83, 0xa1, 0x3d, 0xa6, 0xa3, 0x0e, 0x5b, 0x57, 0xaa, 0x56, 0x0c, 0x7a, + 0xe6, 0xef, 0x4d, 0x15, 0x91, 0xcf, 0x1f, 0x4e, 0xc6, 0xe4, 0xb3, 0x29, 0x18, 0x1c, 0x1c, 0x53, + 0x0a, 0x5d, 0x41, 0x44, 0xe3, 0x9f, 0x35, 0x92, 0x20, 0x2a, 0xee, 0x32, 0xa5, 0x68, 0xb9, 0x96, + 0x4a, 0xf1, 0x64, 0x8d, 0xa8, 0x4d, 0xd7, 0x50, 0x82, 0xc6, 0x44, 0x7a, 0x86, 0x70, 0xc5, 0xf3, + 0xe8, 0x0e, 0x55, 0x0c, 0xe2, 0xfb, 0x50, 0x19, 0x9b, 0x17, 0x23, 0xe1, 0xca, 0x7d, 0x21, 0x87, + 0x9e, 0xa5, 0xcb, 0x7d, 0x5e, 0xbb, 0x5c, 0xc0, 0xc3, 0x24, 0xba, 0x31, 0x4d, 0x8d, 0x3a, 0xe1, + 0x06, 0xb4, 0x4a, 0xd4, 0x34, 0xea, 0x16, 0xdf, 0x02, 0x50, 0x4f, 0x14, 0x39, 0x15, 0x17, 0x67, + 0xa2, 0xcc, 0x91, 0x08, 0x84, 0x7f, 0x66, 0x2b, 0x3b, 0xa6, 0x62, 0xc3, 0x98, 0x0a, 0xad, 0xde, + 0x24, 0x10, 0x7e, 0x6b, 0x64, 0xda, 0x8e, 0x9e, 0xe0, 0x18, 0xc0, 0xdf, 0x86, 0x1b, 0xc1, 0xe4, + 0x18, 0x75, 0xe6, 0x58, 0xf4, 0xbc, 0x03, 0xf1, 0x3c, 0x70, 0x84, 0x94, 0xc2, 0xd7, 0xf5, 0x05, + 0x8b, 0x5f, 0xd6, 0x07, 0x91, 0xdb, 0x43, 0x3f, 0xdc, 0x80, 0x4f, 0x71, 0xdd, 0x52, 0x04, 0xd2, + 0x45, 0x5d, 0x2c, 0xc5, 0x19, 0xac, 0x2a, 0x90, 0xae, 0xf9, 0x4a, 0xf3, 0xaf, 0xc2, 0x97, 0xa7, + 0x90, 0x0c, 0x75, 0x10, 0x1c, 0xec, 0xd8, 0xae, 0xe9, 0xd8, 0x9f, 0xaa, 0x63, 0xf9, 0x4c, 0x7d, + 0x0c, 0x95, 0xa9, 0x81, 0x43, 0x3f, 0x46, 0x3d, 0xe9, 0x2a, 0x18, 0x06, 0xab, 0xaa, 0xdd, 0x95, + 0xbe, 0x4d, 0x27, 0x1c, 0x11, 0xa4, 0x89, 0xeb, 0xdc, 0x63, 0x69, 0x7e, 0x1d, 0x98, 0x82, 0xb4, + 0x5d, 0x73, 0x3c, 0x6e, 0x8c, 0xc7, 0x8e, 0x60, 0x19, 0xba, 0x6b, 0x18, 0x43, 0x55, 0x29, 0x39, + 0xcb, 0xd6, 0xbf, 0x0f, 0xb7, 0x68, 0x64, 0x9e, 0x0a, 0x3f, 0x0a, 0x6c, 0x75, 0x5f, 0x6f, 0xc0, + 0x86, 0x7a, 0x3a, 0xf0, 0xa4, 0x7a, 0x4d, 0xce, 0x1e, 0x87, 0x35, 0x05, 0x46, 0x5f, 0xa7, 0x2b, + 0x5c, 0xa9, 0x8a, 0x71, 0x14, 0x2c, 0xc2, 0x4b, 0xd7, 0x7f, 0x9a, 0x07, 0x1e, 0x2b, 0x44, 0xcf, + 0x16, 0xfe, 0xb6, 0x29, 0xcd, 0x44, 0x66, 0xb2, 0x72, 0xe9, 0xd9, 0xfa, 0x8b, 0x4b, 0xd6, 0x6e, + 0x42, 0xde, 0x0e, 0x30, 0x14, 0xd3, 0x25, 0xa2, 0xba, 0xc5, 0xf7, 0x00, 0xc6, 0xc2, 0xb7, 0x3d, + 0x8b, 0x34, 0x28, 0xb7, 0xb0, 0x96, 0x7f, 0x5e, 0xa8, 0xcd, 0xc3, 0x88, 0xc6, 0x48, 0xd0, 0xa3, + 0x1c, 0xaa, 0xa5, 0x4e, 0xaa, 0xf3, 0x24, 0x74, 0x12, 0xc4, 0xdf, 0x80, 0x6b, 0x63, 0xdf, 0xee, + 0x0b, 0x35, 0x1d, 0x4f, 0x02, 0xab, 0x49, 0x3f, 0x77, 0x56, 0x20, 0xcc, 0x45, 0xaf, 0x50, 0x03, + 0x4d, 0x97, 0x02, 0x94, 0x80, 0xce, 0x66, 0xf5, 0x5d, 0x57, 0x55, 0x72, 0x59, 0x31, 0x16, 0xbf, + 0xe4, 0xf7, 0x81, 0xe9, 0x17, 0xfb, 0xb6, 0xbb, 0x27, 0xdc, 0x81, 0x1c, 0x92, 0x72, 0x57, 0x8c, + 0x39, 0x38, 0x59, 0x30, 0xf5, 0xa3, 0x32, 0xea, 0xdc, 0xa6, 0x64, 0x44, 0x6d, 0x75, 0x7f, 0xda, + 0xf1, 0xfc, 0xae, 0xf4, 0x75, 0x35, 0x68, 0xd4, 0x46, 0x9f, 0x25, 0x20, 0x59, 0x0f, 0x7d, 0xcf, + 0x9a, 0xd0, 0xa9, 0x82, 0x32, 0x62, 0xb3, 0xe0, 0x18, 0x73, 0xdf, 0x74, 0x75, 0xdd, 0x60, 0x25, + 0x89, 0x19, 0x81, 0x29, 0x06, 0xf3, 0x82, 0x98, 0xe1, 0xba, 0x8e, 0xc1, 0x12, 0x30, 0x8d, 0x13, + 0xb3, 0x62, 0x11, 0x4e, 0xcc, 0x87, 0xfa, 0x6f, 0xf9, 0x9e, 0x6d, 0xc5, 0xbc, 0x36, 0x54, 0x55, + 0xe7, 0x2c, 0x3c, 0x81, 0x1b, 0xf3, 0xe4, 0x53, 0xb8, 0x11, 0xbc, 0xfe, 0xa3, 0x14, 0x40, 0x3c, + 0xf9, 0xa8, 0xf2, 0x71, 0x2b, 0x5e, 0xe2, 0xb7, 0xe0, 0x5a, 0x12, 0x4c, 0xe5, 0xfe, 0x74, 0xc0, + 0xcb, 0x61, 0x2d, 0x7e, 0xb1, 0x6d, 0x5e, 0x04, 0x2c, 0xad, 0xca, 0x3b, 0x43, 0xd8, 0x33, 0x21, + 0xa8, 0x90, 0xee, 0x3a, 0xb0, 0x18, 0x48, 0xb7, 0xb9, 0x02, 0x96, 0x9d, 0x46, 0xfd, 0x58, 0x98, + 0x7e, 0xc0, 0x72, 0xf5, 0x5d, 0xc8, 0xab, 0xc3, 0xa5, 0x05, 0xc7, 0xc2, 0x2f, 0x57, 0xe3, 0xf1, + 0xb7, 0x53, 0x00, 0xdb, 0xaa, 0x82, 0x17, 0x77, 0xf1, 0x05, 0xa7, 0xed, 0x8b, 0x3c, 0x2a, 0xd3, + 0xb2, 0xa8, 0xb6, 0x39, 0x13, 0xfd, 0x54, 0x09, 0x36, 0x51, 0x73, 0xcc, 0xb0, 0x72, 0x4a, 0xad, + 0xb9, 0xa8, 0xad, 0x36, 0x90, 0xa6, 0xe7, 0xba, 0xa2, 0x8f, 0xdb, 0x4f, 0xb4, 0x81, 0x44, 0xa0, + 0xfa, 0xbf, 0x29, 0x40, 0xb9, 0x39, 0x34, 0xe5, 0xbe, 0x08, 0x02, 0x73, 0x20, 0xe6, 0x64, 0xa9, + 0x42, 0xc1, 0xf3, 0x2d, 0xe1, 0xc7, 0x37, 0xb2, 0x74, 0x33, 0x59, 0x63, 0x90, 0x99, 0xae, 0x31, + 0xb8, 0x0d, 0x25, 0x75, 0x82, 0x61, 0x35, 0x94, 0x19, 0xc8, 0x18, 0x31, 0x00, 0xf7, 0xea, 0x91, + 0x67, 0x91, 0x31, 0x6a, 0xa8, 0xe4, 0x7f, 0xc6, 0x48, 0x40, 0x54, 0x49, 0xc7, 0xd8, 0xb9, 0xe8, + 0x79, 0x5a, 0xa6, 0xb6, 0x15, 0x5f, 0x5f, 0x9d, 0x86, 0xf3, 0x26, 0x14, 0x46, 0xaa, 0xa1, 0x0f, + 0x32, 0x66, 0x53, 0xfe, 0x89, 0xae, 0x6d, 0xea, 0xbf, 0xfa, 0x06, 0x89, 0x11, 0x52, 0x62, 0x88, + 0x6e, 0x4a, 0x69, 0xf6, 0x87, 0x23, 0x6d, 0x22, 0x32, 0x0b, 0xce, 0x34, 0x93, 0x8c, 0x1a, 0x11, + 0xb6, 0x91, 0xa4, 0xe4, 0x5b, 0x50, 0xf2, 0x85, 0x39, 0x75, 0xac, 0xfa, 0xca, 0x15, 0x6c, 0x8c, + 0x10, 0xd7, 0x88, 0xc9, 0x6a, 0xbf, 0x9b, 0x82, 0xb5, 0x69, 0x41, 0xff, 0x32, 0x7e, 0x6d, 0xea, + 0xdb, 0xf1, 0xaf, 0x4d, 0x7d, 0x8e, 0x5f, 0x6e, 0xfa, 0x9d, 0x14, 0x40, 0x3c, 0x06, 0x68, 0xf2, + 0xd5, 0xaf, 0xe2, 0x84, 0x4e, 0xa8, 0x6a, 0xf1, 0xdd, 0xa9, 0x7b, 0xeb, 0x6f, 0x2f, 0x35, 0xa0, + 0x89, 0xc7, 0x44, 0x59, 0xf2, 0x03, 0x58, 0x9b, 0x86, 0xd3, 0xef, 0xdc, 0xb4, 0xf7, 0x5a, 0x2a, + 0xc5, 0xd1, 0xde, 0x6f, 0x3c, 0x6a, 0xe9, 0x1b, 0x3b, 0xed, 0x83, 0xc7, 0x2c, 0x5d, 0xfb, 0x1f, + 0x29, 0x28, 0x45, 0xc3, 0xcb, 0xbf, 0x97, 0x9c, 0x17, 0x55, 0x27, 0xf1, 0xd6, 0x32, 0xf3, 0x12, + 0x3f, 0xb5, 0x5c, 0xe9, 0x5f, 0x24, 0xa7, 0xc9, 0x83, 0xb5, 0xe9, 0x97, 0x0b, 0x6c, 0xc2, 0xa3, + 0x69, 0x9b, 0xf0, 0xe6, 0x52, 0x9f, 0x0c, 0x23, 0xaf, 0x3d, 0x3b, 0x90, 0xda, 0x5c, 0xbc, 0x9f, + 0x7e, 0x2f, 0x55, 0xbb, 0x0b, 0xab, 0xc9, 0x57, 0xf3, 0xd7, 0xf2, 0xee, 0xff, 0xe7, 0x0c, 0xac, + 0x4d, 0x97, 0x1a, 0xd0, 0x25, 0x20, 0x55, 0xe6, 0xd2, 0x71, 0xac, 0x44, 0x25, 0x37, 0xe3, 0xeb, + 0x50, 0xd6, 0xb1, 0x1d, 0x01, 0x36, 0x28, 0x89, 0xe2, 0x8d, 0x04, 0xbb, 0x9b, 0xfc, 0x45, 0xbd, + 0x37, 0x38, 0x84, 0xd7, 0xb3, 0xd8, 0x98, 0x97, 0xf4, 0x6f, 0x0b, 0xfd, 0x4a, 0x9a, 0x57, 0x12, + 0xf5, 0xc4, 0x3f, 0x46, 0xc7, 0x66, 0x7d, 0x6b, 0xe2, 0x5a, 0x8e, 0xb0, 0x22, 0xe8, 0xef, 0x26, + 0xa1, 0x51, 0x75, 0xf0, 0xaf, 0x64, 0xf9, 0x1a, 0x94, 0xba, 0x93, 0x63, 0x5d, 0x19, 0xfc, 0xd7, + 0xb3, 0xfc, 0x26, 0x6c, 0x68, 0xac, 0xb8, 0xc4, 0x8f, 0xfd, 0x0d, 0x34, 0xc1, 0x6b, 0x0d, 0x35, + 0x5e, 0x5a, 0x50, 0xf6, 0x37, 0xb3, 0x28, 0x02, 0xdd, 0xfa, 0xfd, 0x55, 0xe2, 0x13, 0xdd, 0x91, + 0x60, 0xbf, 0x96, 0xe5, 0xeb, 0x00, 0xdd, 0x5e, 0xf4, 0xa1, 0xdf, 0xc8, 0xf2, 0x32, 0xe4, 0xbb, + 0x3d, 0xe2, 0xf6, 0xa3, 0x2c, 0xbf, 0x01, 0x2c, 0x7e, 0xab, 0x0b, 0x1f, 0xff, 0x8e, 0x12, 0x26, + 0xaa, 0x64, 0xfc, 0xcd, 0x2c, 0xf6, 0x2b, 0x1c, 0x65, 0xf6, 0x77, 0xb3, 0x9c, 0x41, 0x39, 0x91, + 0x9a, 0x63, 0x7f, 0x2f, 0xcb, 0x39, 0x54, 0xf6, 0xed, 0x20, 0xb0, 0xdd, 0x81, 0xee, 0xc1, 0xaf, + 0xd3, 0x97, 0x77, 0xa2, 0x6b, 0x1e, 0xec, 0xb7, 0xb2, 0xfc, 0x16, 0xf0, 0xe4, 0x71, 0x84, 0x7e, + 0xf1, 0xf7, 0x89, 0x5a, 0x99, 0xfd, 0x40, 0xc3, 0xfe, 0x01, 0x51, 0xa3, 0x26, 0x68, 0xc0, 0x6f, + 0xd3, 0x80, 0x34, 0xe3, 0x52, 0x49, 0x0d, 0xff, 0x71, 0xf6, 0xfe, 0x4f, 0x29, 0x75, 0x9c, 0xac, + 0x2e, 0xe2, 0xab, 0x50, 0x74, 0x3c, 0x77, 0x20, 0xd5, 0xaf, 0x16, 0x56, 0xa0, 0x14, 0x0c, 0x3d, + 0x5f, 0x52, 0x93, 0xee, 0x9c, 0xb9, 0x74, 0xfb, 0x58, 0x95, 0x8e, 0xab, 0x80, 0x44, 0xa5, 0xe2, + 0xa4, 0x39, 0x60, 0xe5, 0xa8, 0xa0, 0x33, 0x1b, 0x15, 0x9d, 0xd2, 0x2d, 0xe8, 0xf0, 0x96, 0x29, + 0xcb, 0x23, 0xea, 0xc4, 0x77, 0x54, 0xf1, 0xa9, 0x40, 0x67, 0x54, 0xfd, 0x3c, 0xd9, 0x78, 0x88, + 0x3e, 0x6f, 0x49, 0x41, 0xbd, 0x1f, 0xd8, 0xea, 0xfe, 0xa2, 0xae, 0xe5, 0xb2, 0x50, 0x8e, 0xa8, + 0x5c, 0x81, 0x89, 0xfb, 0xbf, 0x99, 0x82, 0xd5, 0xf0, 0xee, 0xaf, 0x3d, 0xb0, 0x5d, 0x55, 0xbe, + 0x1a, 0xfe, 0x16, 0x64, 0xdf, 0xb1, 0xc7, 0xe1, 0x6f, 0xab, 0xad, 0x43, 0xd9, 0xf2, 0xcd, 0x41, + 0xc3, 0xb5, 0xb6, 0x7d, 0x6f, 0xac, 0xc4, 0x56, 0x87, 0x4b, 0xaa, 0x6c, 0xf6, 0xb9, 0x38, 0x46, + 0xf4, 0xb1, 0xf0, 0x59, 0x96, 0xea, 0xc4, 0x86, 0xa6, 0x6f, 0xbb, 0x83, 0xd6, 0xb9, 0x14, 0x6e, + 0xa0, 0xca, 0x67, 0xcb, 0x50, 0x98, 0x04, 0xa2, 0x6f, 0x06, 0x82, 0xe5, 0xb1, 0x71, 0x3c, 0xb1, + 0x1d, 0x69, 0xbb, 0xea, 0x27, 0xcd, 0xa2, 0xfa, 0xd8, 0xe2, 0xfd, 0x3f, 0x4c, 0x41, 0x99, 0x66, + 0x3e, 0xce, 0x9a, 0xc6, 0x5e, 0x45, 0x19, 0x0a, 0x7b, 0xd1, 0x4f, 0x5a, 0xe5, 0x21, 0xdd, 0x39, + 0x55, 0x59, 0x53, 0x3d, 0xf3, 0xea, 0xe6, 0x9e, 0xfa, 0x75, 0xab, 0x2c, 0xff, 0x02, 0xdc, 0x30, + 0xc4, 0xc8, 0x93, 0xe2, 0x99, 0x69, 0xcb, 0xe4, 0xd5, 0x91, 0x1c, 0x06, 0x20, 0xea, 0x55, 0x78, + 0x57, 0x24, 0x4f, 0x01, 0x08, 0x7e, 0x36, 0x84, 0x14, 0xb0, 0xd3, 0x04, 0xd1, 0x11, 0x49, 0x31, + 0x42, 0xf9, 0xc8, 0xb3, 0x5d, 0xfc, 0x1a, 0xdd, 0x17, 0x25, 0x08, 0xa5, 0xdf, 0x11, 0x04, 0xf7, + 0x0f, 0xe0, 0xe6, 0xe2, 0xa4, 0xb1, 0xba, 0x49, 0x4a, 0xbf, 0xa3, 0x4a, 0x97, 0x09, 0x9e, 0xf9, + 0xb6, 0xba, 0x10, 0x58, 0x82, 0x5c, 0xe7, 0xb9, 0x4b, 0xda, 0xb0, 0x01, 0x95, 0x03, 0x2f, 0x41, + 0xc3, 0x32, 0xf7, 0xfb, 0x53, 0x79, 0xfe, 0x78, 0x50, 0x42, 0x21, 0x56, 0x12, 0x17, 0x65, 0x52, + 0x2a, 0x83, 0x4c, 0x3f, 0x85, 0xaf, 0x6e, 0xd9, 0xeb, 0xfc, 0xba, 0xa5, 0x6e, 0xd9, 0x47, 0x62, + 0x66, 0xd5, 0x6f, 0xdc, 0xb8, 0x7d, 0xe1, 0x08, 0x8b, 0xe5, 0xee, 0xbf, 0x07, 0xeb, 0xba, 0xab, + 0x7d, 0x11, 0x04, 0xe1, 0x45, 0x93, 0x43, 0xdf, 0x3e, 0x53, 0x37, 0xf9, 0x57, 0xa1, 0x78, 0x28, + 0xfc, 0xc0, 0x73, 0xe9, 0x57, 0x0c, 0x00, 0xf2, 0xdd, 0xa1, 0xe9, 0xe3, 0x37, 0xee, 0x7f, 0x1d, + 0x4a, 0x74, 0xf1, 0xe4, 0xb1, 0xed, 0x5a, 0xd8, 0x93, 0x2d, 0x5d, 0x6b, 0x5d, 0x82, 0x5c, 0xd3, + 0x3b, 0xa3, 0xfe, 0x15, 0xd5, 0xaf, 0x39, 0xb2, 0xf4, 0xfd, 0xef, 0x00, 0x57, 0xe9, 0x1c, 0x4b, + 0x9c, 0xdb, 0xee, 0x20, 0xba, 0xde, 0x0c, 0xf4, 0x5b, 0x05, 0x96, 0x38, 0xa7, 0x68, 0xa9, 0x0c, + 0x85, 0xb0, 0x11, 0xfe, 0x62, 0xc2, 0x8e, 0x37, 0x71, 0xf1, 0x6b, 0x4f, 0xe1, 0xba, 0xd2, 0x0d, + 0xfc, 0x3c, 0x5d, 0x70, 0xbb, 0x34, 0xc6, 0x54, 0xb7, 0x83, 0xe4, 0x24, 0x88, 0x70, 0x59, 0x8a, + 0xdf, 0x04, 0x1e, 0xc5, 0x67, 0x31, 0x3c, 0x7d, 0xbf, 0x0e, 0xd7, 0x16, 0x04, 0xc9, 0x64, 0x70, + 0x55, 0xa8, 0xc0, 0x56, 0xee, 0x7f, 0x08, 0x1b, 0xca, 0x44, 0x1c, 0xa8, 0x0b, 0x4b, 0xe1, 0x6e, + 0xf7, 0xac, 0xbd, 0xd3, 0x56, 0x43, 0xd4, 0x6c, 0xed, 0xed, 0x3d, 0xd9, 0x6b, 0x18, 0x2c, 0x45, + 0x13, 0xd9, 0xe9, 0x1d, 0x35, 0x3b, 0x07, 0x07, 0xad, 0x66, 0xaf, 0xb5, 0xcd, 0xd2, 0x5b, 0xf7, + 0xff, 0xf8, 0xe7, 0x77, 0x52, 0x3f, 0xfb, 0xf9, 0x9d, 0xd4, 0x7f, 0xfd, 0xf9, 0x9d, 0xd4, 0x8f, + 0x3e, 0xbb, 0xb3, 0xf2, 0xb3, 0xcf, 0xee, 0xac, 0xfc, 0xa7, 0xcf, 0xee, 0xac, 0x7c, 0xc2, 0x66, + 0xff, 0x0d, 0xc5, 0x71, 0x9e, 0xbc, 0xd3, 0xb7, 0xfe, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5f, + 0xd6, 0x76, 0x9b, 0xa1, 0x62, 0x00, 0x00, } func (m *SmartBlockSnapshotBase) Marshal() (dAtA []byte, err error) { diff --git a/pkg/lib/pb/model/protos/models.proto b/pkg/lib/pb/model/protos/models.proto index 0797d3b94..a01dc52ba 100644 --- a/pkg/lib/pb/model/protos/models.proto +++ b/pkg/lib/pb/model/protos/models.proto @@ -1140,7 +1140,6 @@ message Import { PB_NOT_ANYBLOCK_FORMAT = 11; CSV_LIMIT_OF_ROWS_OR_RELATIONS_EXCEEDED = 7; - CSV_WRONG_CSV_STRUCTURE = 16; INSUFFICIENT_PERMISSIONS = 9; }